在本地和其他数据库上拥有一个数据库位于远程服务器位置。 框架 - cakePHP Mysql:5.1.71 - "远程位置" PHP版本5.5.14
现在使用本地mysql数据库时,使用TOP命令检查时,httpd请求的CPU利用率是正常的。
然而,当我使用远程服务器数据库时。访问同一页面的CPU利用率高达70%或有时达到100%。
以下是php.ini和httpd.conf文件的几个主要设置
php.ini
memory_limit = 128M
max_input_time = 60
post_max_size = 8M
httpd.conf
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
在这种情况下,httpd的高CPU利用率可能是什么原因。
任何帮助将不胜感激。
由于 的Sudhir
答案 0 :(得分:0)
我曾经有两个这样的挂钩的mysql服务器。我会有几个脚本做了一些事情。有人会告诉我连接操作是什么样的(服务器上的concurrrent会话连接)并记录下来。接下来会检查服务使用情况,如果阈值达到70%,我会开始查杀连接并向自己发送一些电子邮件,看看这笔交易是什么。
事实证明,在您正常使用期间,您希望看到浏览您网站的人员正在使用我的服务器。
我做的一些事情是为了减轻杀戮会话(这并不酷)。是规范化我的数据库,重构看到大量使用的表。然后我会修理并重新索引。
我也意识到某些事情超出了配置范围。我们创造了裁员。
我必须镜像我的MySQL服务器,然后根据请求参数路由用户。
最终我意识到我需要一些更好的负载平衡,最终得到4个MySQL服务器和一个负载均衡器,可以缓解和引导流量。
因此,您的方法是在查询级别,看看您可以在那里做什么,然后是您的数据库/表重构和重新索引。
接下来创建并发连接谋杀脚本和目标不活跃的用户并将其重定向到某个地方,或者只是剪辑它们并为你网站上的重量级人物让路。
随着时间的推移,我做了很多事情但是这一切都是在当天开始的。
希望这有助于或者至少让您考虑一种方法