php – MySQL高CPU使用率和持久链接

前端之家收集整理的这篇文章主要介绍了php – MySQL高CPU使用率和持久链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 mysqld进程上的cpu峰值非常高(大于100%,甚至在一点上看到300%).我的平均负载大约是:.25,.34,.28.

我读了这篇关于这个问题的精彩帖子:MySQL high CPU usage@H_301_2@

其中一项主要工作是禁用持久连接.所以我检查了我的PHP.ini和MysqL.allow_persistent = on和MysqL.max_persistent = -1 – 这意味着没有限制.@H_301_2@

在改变任何事情之前,这为我提出了一些问题,以确保:@H_301_2@

>如果我的MysqLd进程每隔几秒钟超过100%,我的负载平均值不应高于那么?
>什么会禁用持久链接 – 我的脚本会继续按原样运行吗?
>如果我关闭它并重新加载PHP这对我当前的用户意味着什么,因为会有很多活跃的用户.@H_301_2@

编辑:@H_301_2@

cpu信息:Core2Quad q9400 2.6 Ghz@H_301_2@

持久连接本身不会使用任何cpu – 如果没有使用连接,它只是闲置而只消耗一点内存并占用套接字.

负载平均值就是 – 平均值.如果你的进程在每秒10次和0%之间交替变换,你的平均负载为0.5.它们有助于找出长期持久的高cpu,但是由于它们的性质隐藏/消除了尖峰的迹象.@H_301_2@

通常不需要与MysqL的持久连接. MysqL具有相对快速的连接协议,使用持久连接节省的时间相当少.缺点是一旦连接持续存在,它就会处于不一致状态.例如如果使用连接的应用程序意外死亡,MysqL将无法看到并开始清理.这意味着应用程序创建的任何服务器端变量,任何锁定,任何事务等等都将保留在应用程序崩溃时所处的状态.@H_301_2@

当连接被另一个应用程序重新使用时,您将从水槽中的脏盘子和未冲洗的马桶开始.它很容易导致死锁,因为悬挂的事务/锁定 – 新的应用程序将无法了解它们,旧的应用程序不再放弃那些.@H_301_2@

猜你在找的PHP相关文章