mysql远程连接mysql问题

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分100 UID阅读权限30积分1334帖子精华可用积分1334 专家积分0 在线时间321 小时注册时间最后登录
家境小康, 积分 1334, 距离下一级还需 666 积分
帖子主题精华可用积分1334 专家积分0 在线时间321 小时注册时间最后登录
论坛徽章:0
大家好,我现在有一个应用可能存在一个问题。就是某一个页面在1秒内会有上1000次的访问。
如果这样的话,没秒就会触发上1000次的数据库连接。我使用Mysql就会出现连接数据库过多的问题。
现在询问大家一个问题:
使用mysql_pconnect建立数据库的持久连接是否能缓解这个问题?
建立数据库的持久连接就是在php作为模块的时候,页面只会触发一次数据库连接。那么后面的所有的数据库操作不同的人
来访问页面的时候也是使用这个连接吗?那就是说我所有的这些访问都是使用这个连接吗?
我不是很清楚,谢谢大家能给我解惑!
美经不得长久的凝视,因为美在凝视中凋零。
生命经不得长久的思想,因为死亡总横在思想的尽头。
英雄经不得时间的考验,因为许多英雄都是老来失节。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分100 UID阅读权限10积分146帖子精华可用积分146 专家积分0 在线时间190 小时注册时间最后登录
白手起家, 积分 146, 距离下一级还需 54 积分
帖子主题精华可用积分146 专家积分0 在线时间190 小时注册时间最后登录
论坛徽章:0
1秒1000次的访问?
这个并发也够大的。
没遇到过这么大并发的应用,
一同学习。
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open('/sig/simbasun.jpg');}" onmousewheel="return imgzoom(this);">
空间积分0 信誉积分0 UID8454199阅读权限10积分5帖子精华可用积分5 专家积分0 在线时间1 小时注册时间最后登录
白手起家, 积分 5, 距离下一级还需 195 积分
帖子主题精华可用积分5 专家积分0 在线时间1 小时注册时间最后登录
论坛徽章:0
不能,除非是同一个客户端访问这个页面,而且页面的URL必须一致,象这样的就不行a.php?和a.php
空间积分0 信誉积分258 UID380521阅读权限20积分793帖子精华可用积分793 专家积分0 在线时间323 小时注册时间最后登录
丰衣足食, 积分 793, 距离下一级还需 207 积分
帖子主题精华可用积分793 专家积分0 在线时间323 小时注册时间最后登录
论坛徽章:0
持久连接的生存周期是从
建立连接 -& 持有该连接的进程或线程结束,
所以,可以满足你的目的;
但是,因为被一直“持有”,就是锁定了,
所以,如果持久连接太多(如web server进程或线程太多),
一般连接的数量就减少了,这点要注意;
还有就是要对持久连接的可用性进行判断,或者管理,
毕竟,查询的次数太多了;
持久连接是相对于请求周期来说的,模块周期内,
当然可以处理任何客户端的请求,
楼上的说法有什么事实依据?
最后一点,我没用过持久连接。
空间积分0 信誉积分110 UID阅读权限100积分2494帖子精华可用积分2496 专家积分5 在线时间376 小时注册时间最后登录
帖子主题精华可用积分2496 专家积分5 在线时间376 小时注册时间最后登录
论坛徽章:1
这个要看情况的, pconnect 仅当您的web服务器以进程模式工作的时候才起作用的.
以apache为例, 当且仅当运行在 Linux (或其它Unix-Like OS) 底下而且采用 prefork 的工作方式, 并且相关的 httpd.conf 中 MaxRequestsPerChild 不为 1, php 作为apache的模块的工作方式的情况下, pconnect 才能发挥作用. 它和 KeepAlive 是没有直接关系的.
用户(ie)和服务器(apache-httpd)断开连接并不表示与你相连的 httpd 就一定会退出
在每个 httpd 进程结束前 mysql link 不会被关闭, 下一个 php 会话开始时可以复用.
1秒内1000个访问你要看看你的页面是做些什么,一次请求大约完成需要多少时间, 这样可以计算出需要多少个 httpd 进程来服务. 进而优化设计
mysql的too many connection 可以适当放大my.cnf中的相关参数, 默认设定比较小的
空间积分0 信誉积分258 UID380521阅读权限20积分793帖子精华可用积分793 专家积分0 在线时间323 小时注册时间最后登录
丰衣足食, 积分 793, 距离下一级还需 207 积分
帖子主题精华可用积分793 专家积分0 在线时间323 小时注册时间最后登录
论坛徽章:0
原帖由 hightman 于
14:19 发表
在每个 httpd 进程结束前 mysql link 不会被关闭, 下一个 php 会话开始时可以复用
这边似乎有手误吧。。。
原帖由 hightman 于
14:19 发表
而且采用 prefork 的工作方式
我想worker方式应该也是可以的,虽然用到了线程,但是也分为多个进程,
而且每个线程都能处理请求,又共享进程资源,这样不是更省连接吗?
空间积分0 信誉积分110 UID阅读权限100积分2494帖子精华可用积分2496 专家积分5 在线时间376 小时注册时间最后登录
帖子主题精华可用积分2496 专家积分5 在线时间376 小时注册时间最后登录
论坛徽章:1
原帖由 hshq_cn 于
16:32 发表
这边似乎有手误吧。。。
我想worker方式应该也是可以的,虽然用到了线程,但是也分为多个进程,
而且每个线程都能处理请求,又共享进程资源,这样不是更省连接吗?
刚略浏览了一下 php4 中的 ext/php_mysql.c , 在php4中线程是后加的,似乎每个线程也模拟了自己的&全局变量&, 所以 pconnection 应该是可以在当前线程内复用~~ 而不是进程内.
清茶-愤青之家
空间积分0 信誉积分338 UID阅读权限90积分9912帖子精华可用积分9912 专家积分27 在线时间2755 小时注册时间最后登录
腰缠万贯, 积分 9912, 距离下一级还需 88 积分
帖子主题精华可用积分9912 专家积分27 在线时间2755 小时注册时间最后登录
论坛徽章:0
使用pconnect的话,最大有多少个Apache的线程,那么你Mysql的最大连接数就要是多少,
从性能上讲,Pconnect是要快不少的,
++++++++++++ +++ +++ +++
知识,每天盯紧收获
空间积分13 信誉积分559 UID阅读权限50积分4112帖子精华可用积分4116 专家积分50 在线时间2648 小时注册时间最后登录
小富即安, 积分 4112, 距离下一级还需 888 积分
帖子主题精华可用积分4116 专家积分50 在线时间2648 小时注册时间最后登录
论坛徽章:1
一般情况下,1000个并发连接进来,不到一会儿mysql 就死了
pconnect 只存在理论优势
空间积分805 信誉积分692 UID7176662阅读权限100积分10418帖子精华可用积分10418 专家积分108 在线时间1109 小时注册时间最后登录
帖子主题精华可用积分10418 专家积分108 在线时间1109 小时注册时间最后登录
论坛徽章:1
原帖由 hightman 于
15:55 发表
刚略浏览了一下 php4 中的 ext/php_mysql.c , 在php4中线程是后加的,似乎每个线程也模拟了自己的&全局变量&, 所以 pconnection 应该是可以在当前线程内复用~~ 而不是进程内.
一直被模仿,从未被超越。
/365online
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
ERROR ): Access denied for user 'root'@'localhost' (using password: YES)提示:1045 access denied for user 'root'@'localhost' using password yes用的e2php免安装版,运行时出现连接不上MYSQL的错误,在网上搜了一些前辈的资料终于弄好,方法如下 :一、到WINDOWS的命令行(‘DOS’ 下),切换到你的MySQL bin目录下。 比如我的是 D:\Program Files\MySQL\MySQL Server 5.1\bin然后敲下面的粗体的命令。注意你的my.ini位置。C:\Program Files\MySQL\MySQL Server 5.1\bin&mysqld &--defaults-file="C:\ProgramFiles\MySQL\MySQL Server 5.1\my.ini" --console --skip-grant-tables:06:09 [Warning] The syntax '--log' is deprecated and will be removed in MySQL 7.0. Please use '--general_log'/'--general_log_file' instead.:06:09 [Warning] The syntax '--log_slow_queries' is deprecated and will&be removed in MySQL 7.0. Please use '--slow_query_log'/'--slow_query_log_file'&instead.:06:09 [Warning] The syntax '--log' is deprecated and will be removed in MySQL 7.0. Please use '--general_log'/'--general_log_file' instead.:06:09 [Warning] The syntax '--log_slow_queries' is deprecated and will&be removed in MySQL 7.0. Please use '--slow_query_log'/'--slow_query_log_file'&instead.:06:09 [ERROR] The update log is no longer supported by MySQL in version 5.0 and above. It is replaced by the binary log. Now starting MySQL with --log-bin='' instead.:06:09 &InnoDB: S log sequence number 0 324221:06:09 [Note] mysqld: ready for connections.Version: '5.1.33-community-log' &socket: '' &port: 3306 &MySQL Community Server(GPL)看到这个结果就说明MySQL已经起来了。再开一个DOS窗口,同样切到mysql bin目录下,C:\Program Files\MySQL\MySQL Server 5.1\bin&mysql -uroot mysqlWelcome to the MySQL monitor. &C or \g.Your MySQL connection id is 2Server version: 5.1.33-community-log MySQL Community Server (GPL)Type '' or '\h' for help. Type '\c' to clear the buffer.mysql&二、到这,你就继续按 方法一:操作就行。update完表后,退出,方法一:&# /etc/init.d/mysql stop&# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &&# mysql -u root mysql&mysql& UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;&mysql& FLUSH PRIVILEGES;&mysql& quit&# /etc/init.d/mysql restart&# mysql -uroot -p&Enter password: &输入新设的密码newpassword&&mysql&&三、然后C:\Program Files\MySQL\MySQL Server 5.1\bin&mysqladmin shutdown之后正常重启MySQL服务就行了。
阅读(1150)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
id:'fks_095065',
blogTitle:'连接MYSQL时1045错误解决办法',
blogAbstract:'ERROR ): Access denied for user \'root\'@\'localhost\' (using password: YES)提示:1045 access denied for user \'root\'@\'localhost\' using password yes用的e2php免安装版,运行时出现连接不上MYSQL的错误,在网上搜了一些前辈的资料终于弄好,方法如下 :一、到WINDOWS的命令行(‘DOS’ 下),切换到你的MySQL bin目录下。 比如我的是 D:\\Program Files\\MySQL\\MySQL Server 5.1\\bin',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:7,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}连接mysql问题(因为自己还没解决所以会一直更新)
【娱乐休闲】
【生活服务】
【电脑网络】
【文体教育】
【行业部门】
文章浏览→→→连接mysql问题(因为自己还没解决所以会一直更新)连接mysql问题(因为自己还没解决所以会一直更新)
&第一篇:PHP5.3开始使用MySqlND作为默认的MySql访问驱动,而且从这个版本开始将不再支持使用旧的用户接口链接Mysql了,你可能会看到类似的提示:#2000 - mysqlnd cannot connect to MySQL 4.1+ using old authentication解决问题的方法不是调整PHP,而是检查你的Mysql,你需要确保两件事:你使用的Mysql是4.1+以上版本,4.1以前的版本只支持使用老的16位密码存储你准备用于连接的数据库帐号使用的MySql的新密码格式(41位的数据)解决问题2的方法是重新设置账户的密码,并确保使用的标准Password()函数设置账户密码,相关指令如下:-- 选择系统库USE `mysql`-- 显示当前的用户和密码,注意新的的密码格式应该是41位的加密字符,老的是16位的SELECT `user`,`password` from `user`;-- 更新指定的用户的密码,注意使用函数 password()-- 有时针对一些特殊需要,你可以使用old_password()函数来建立一个或几个向下兼容的数据库账户UPDATE `user` SET `password`=password('newpassword') WHERE `user`='UserName';-- 刷新MySql权限库FLUSH PRIVILEGES;-- 最后别忘记了,MySql的命令行连接方式是:MySql -u username@host -p password&第二篇:最近开发环境升级到了 php 5.3.2, 链接 remote mysql 却发生了错误:connection failed:SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old authenticationremote 的 mysql f:[mysqld]&datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Default to using old password format for compatibility withmysql 3.x# clients (those using the mysqlclient10 compatibilitypackage).old_passwords=1是采用兼容格式的密码,而 php5.3的php_ php_pdo_mysql采用的是增强的密码,所以导致两者不匹配,最方便的方式还是更新db的设置,取消 old_passwords然后在 mysql.mysql.user,更新所有用户的密码, 如:update user set password=PASSWORD('new password') where user='thisuser';即可不过更新my.cnf 需要重新启动 mysql ,对于应用中的服务器,不是必要就千万别更新php客户端了,哈哈&第三篇:新的mysqlnd库需要使用MySQL 4.1新的41-byte的密码格式使用旧的16字节的密码将导致mysql_connect()和类似的函数产生一个错误:mysqlnd cannotconnect to MySQL 4.1+ using old authentication.(mysqlnd不能用旧的验证方式来连接到MySQL 4.1以上的版本)解决方法这个比较变态 研究了好久 最后发现问题出在 my.cnf1居然配置了old-password=1或者是old_password=1(把这一句注释掉)2去掉之后 使用 set password for‘root’@'localhost’ = password(‘xxx’)为root生成了新的41位密码 问题解决&第四篇:官方的f法是MySQL 4.1 and up uses an authentication protocol based on apassword hashing algorithm that is incompatible with that used byolder clients. .....如果你升mysql到4.1以上版本后遇到以上},先_定你的mysql client 是4.1或者更高版本.使用以下2N方法之一其一: (使用AppServ在修改mysql密ar要使用下列方法才行)mysql& SET PASSWORD FOR& &-&'some_user'@'some_host' = OLD_PASSWORD('newpwd');其二:mysql& UPDATE mysql.user SET Password =OLD_PASSWORD('newpwd')& &-& WHERE Host ='some_host' AND User = 'some_user';mysql& FLUSH PRIVILEGES;上面some_user, some_host, newpwd是要自己填入的所属分类:→&&&&作者:荡凯网络&&&&时间: 20:55:00
All Right Reserved页面导航:
→ 正文内容 mysql 无法连接
mysql 无法连接问题的定位和修复过程分享
开发的一款网站防护产品中出现了一个客户端上安装后Mysql每隔一段时间就出现问题,这个问题是客户反馈的,所以需要去复现和定位
定位结果如下:
客户环境:windows server 2003 r2 standard edition sp2mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)apache 2.2瑞星webshield客户端1.08
问题已复现。可以优化,无法确定是webshield导致的。
搭建环境:windows server 2003 r2 standard edition sp2mysql 5.0.18 for win32apache-2.2.21-win32-x86-no_sslphp-5.2.17-win32-vc6-x86瑞星23.00.50.25
搭建环境过程中遇到的几个问题:
在下载apache与php时,请注意apache与php匹配问题。
a)PHP5.3有VC6与VC9版本,应选择VC6版本。原因如下:
i. VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。ii. VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。
b)PHP5.3的Thread Safe和Non Thread Safe版本。Apache no_ssl版应与php Thread Safe版搭配。若与Non Thread Safe搭配,apache启动出错:“Apache is running a threaded MPM,but your PHP Modle is not compiled to be threadsafe. You need to recompile PHP.”
i. Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;ii. Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。注意apache对网站及PHP的正确配置。特别注意配置文件中LoadModule, PHPIniDir,DocumentRoot,ServerRoot,Directory,DirectoryIndex,AddType application/x-httpd-php等项的配置安装后 mysql 后(管理员账号密码:admin/admin),在PHP代码中使用admin连接数据库失败,cmd执行mysql Cu root -p启用root用root可正常连接数据库。
问题复现:
PHP最长执行时间限制。
a)php最长执行时间默认为30秒,超过30秒后被中止执行,与mysql的连接也被断开。b)尝试增大此值,修改php目录下的php.ini配置文件,将max_execution_time = 30 改为max_execution_time = 300。如果设为0,表示不限制PHP最大执行时间。c)避免了因最长执行时间限制而导致mysql连接失败。
网站流量大导致mysql无法连接。
a)编写php脚本对mysql进行测试,发现当对mysql进行频繁的连接/断开操作时,mysql很快出现无法连接问题(错误代码:10048)。当中止所有连接,2分钟后mysql又恢复正常。若不停止连接,mysql一直无法连接。b)尝试从两方面优化:i. 修改windows注册表项TcpTimedWaitDelay值为30(默认为240秒),减少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源。ii. 修改windows注册表项MaxUserPort为53768 (该值表示从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号,默认值为5000)以处理更多的请求。
c)修改完注册表项后测试,mysql情况大有改善:mysql连接错误出现的情况大有减少,出错后自我恢复的能力大有提高。
针对以上两种情况,分别对安装了webshield 1.08与未安装webshield 1.08进行了测试,两者测试结果一样。
max_execution_time的修改:打开php目录下的php.ini文件,找到max_execution_time = 30 这行,将30修改为想要的数字。TcpTimedWaitDelay与MaxUserPort的修改: 代码如下:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"TcpTimedWaitDelay"=dword:0000001e"MaxUserPort"=dword:
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行mysql连接问题_mysql吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:6,190贴子:
mysql连接问题收藏
Myeclipse写jsp+mysql实现简单的注册与登录功能,但是出现了下面的错误,大神们帮帮手呀,(1 ms) [main] ERROR: org.hibernate.util.JDBCExceptionReporter#logExceptions : Cannot create PoolableConnectionFactory (到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect)
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 远程连接mysql 的文章

 

随机推荐