阿权的一个数据库有很多进程都是sleep的,这个是openads的网站,管理的是网页的广告,估计有200个,多的时候会更多些,我也在想这个情况到底是否正常呢?

mysql_pconnect()中的p,就是单词persistent(永久的)的首字母。要理解是否正常,那就得看看 mysql_pconnect 是如何工作的了,看看官方文档:

引用
resource mysql_pconnect ([ string $server [, string $username [, string $password [, int $client_flags ]]]] )
Establishes a persistent connection to a MySQL server.

mysql_pconnect() acts very much like mysql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

This type of link is therefore called 'persistent'.


也就是说,会建立一个对数据库的连接,会先查找是否还有空闲的同样host、username、password的连接,没有就新建一个,否则就用这个空闲的连接。

这么理解应该挺好知道为什么会有一些进程是sleep的,就是说之前并发请求有100个,那就会有100个持续连接建立了,并且把连接保存在连接池中,如果连接有效时间过了,连接会自动完结了吧,这样可能就在访问压力低的时候sleep的进程变少了。

如果连接数可以足够,pconnect是不错的选择,mysql启动参数里面可以设定最大连接数的(参考《Mysql的启动参数 》http://www.aslibra.com/blog/read.php?1037),参考一下:

max_connect_errors=100000
max_connections=1024
wait_timeout=600


所以空闲进程多是不怕的,就担心影响别的应用,如果连接数足够,那还是用pconnect比connect方式要好

引用
pconnect的优点是速度,重用一个现有的连接几乎不花费时间。
缺点是效率。因为服务器(比如apache)可以使用任意一个进程迎接新的页面请求,
所以一段时间之后,可能每个进程都存了一个或几个连接,而且不同进程之间连接不能共享。
最坏的情况是其他进程保持着大量空闲连接,而某个进程却因为数据库连接数达到上限却无法取得连接

Tags:
Ben Watson,知名开发者。任职于GeoEye,是其所属开发团队的领导者。本文发表于他自己的博客,阐述了十种学习新技术的方法。

这篇文章,是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中,我考虑了很多方式怎么样才能有效地学习。

1. 要看书。
在成千上万的编程图书中,可能很大一部分根本毫无用处。但是仍然有很多图书对你的(编程)能力有很大的提升。我一直坚持,相比在网络上查找很多有用信息,在同类图书中查找要来得更容易更快捷。阅读技术图书可心更好地抓住核心内容。对于理论,架构和设计等方面来说,图书也一样很有帮助。只不过要找到高质量的、权威的信息,就不如网络上可供查找的范围广。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐