pconnect

来源:互联网 发布:淘宝店铺出租 编辑:程序博客网 时间:2024/05/18 04:55
虽然看不懂,但是感觉很厉害的样子

http://www.codeigniter.org.cn/forums/thread-11875-2-1.html

pconnect是指PHP到MySQL的连接。pconnect为真值时,CI调用PHP中的mysql_pconnect()。

mysql_pconnect()开一个PHP/MySQL的永久连接,PHP脚本结束时连接不会断,PHP结束时连接才会断。

在Apache下,PHP以module形式存在,Apache结束才会令PHP结束。使用FastCGI时,一般会以PHP执行总时间定下PHP的寿命,PHP会定期结束/重生。

pconnect是重用连接,而非共用连接。

MySQL的默认总连接是150,30秒后才超过150,以压力环境情况,若无重用,不断开启新连接,早应超过150,这证明PHP/MySQL的确在重用连接。

MySQL达至超过150个连接,说明有超过150个PHP进程。使用Apache时,PHP进程是以Apache进程存在,Apache默认的 MaxClients是256,但不少Linux服务器上一般会预设为150而不使用默认的256与MySQL吻合。Apache超过MySQL负荷是有点奇怪,是使用Windows吗?先去确认一下MaxClients吧!

有超过150个Apache进程存在,是说明PHP处理不来压力环境的请求率,处理不及时,进程逐渐累积达至超过MySQL的总连接。这是超负荷了。若负荷是瞬时的,把MySQL的max_connections增加至与Apache的MaxClients可增加瞬时负荷能力,但这不能增加持久的负荷力,继续下去总会达至系统完全饱和。

这问题与CI无关,是xAMP共有的负荷力问题,使用CI比纯PHP应用要早些达到负荷力饱和点,因使用CI要多耗费点资源。CI算是开销最低的PHP架构之一,不花钱在机器上,又不花时间去学会调试系统,去进行压力测试,不明所以便作出“CI还是很脆弱”的结论!无言以对!也许该放弃使用任何架构进行开发。

pconnect是鸡肋?对于压力负荷环境,除非内存限制极大,pconnect是极有好处的选择。

PHP并非不可事前编译为“中间码”,Zend是有提供编译器的,当然要付钞!