我正在使用PHP脚本Openx来运行广告系列。 我们开始获得更多的stream量,服务器有时变得不稳定。 当我检查顶部的命令,我看到如何httpd和PHP运行,然后几秒钟PHP进程停止,然后再次。
问题是响应缓慢。 页面显示非常慢。 看起来像服务器在高峰时间点击事物的限制。 请,你能提出什么build议吗?
服务器正在运行:fcgi; Linux CentOS 5.5; Apache 2.2; PHP 5.2.9;
我按如下方式对httpd.conf进行了一些修改
Timeout 10 TraceEnable On ServerSignature Off ServerTokens Full FileETag All StartServers 50 <IfModule prefork.c> MinSpareServers 50 MaxSpareServers 100 </IfModule> ServerLimit 512 MaxClients 512 MaxRequestsPerChild 50 KeepAlive On KeepAliveTimeout 1 MaxKeepAliveRequests 500
系统信息
服务器负载0.83(6个CPU) 使用的内存6.08%(16410212中的997296) 使用交换0.00%(2096472中的0) 1 0 0 4105112 324280 11092200 0 0 0 252 3336 7169 14 4 81 0 0 1 0 0 4098736 324280 11089104 0 0 0 240 3287 6792 13 4 83 0 0 procs -----------内存---------- --- swap-- ----- io -----system-- ----- cpu ------ rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 4119496 324280 11082052 0 0 0 186 3221 6946 13 4 83 0 0 2 0 0 4122120 324280 11086072 0 0 0 242 3212 6904 13 4 83 0 0 2 0 0 4101952 324280 11085588 0 0 0 174 3442 6774 14 4 82 0 0 0 0 0 4078672 324280 11090232 0 0 0 224 3465 7558 15 4 80 0 0 5 0 0 4070644 324280 11100076 0 0 0 240 3603 7921 15 4 81 0 0 1 0 0 4105108 324280 11079192 0 0 0 535 3507 6977 13 4 83 0 0 1 0 0 4074172 324280 11095496 0 0 0 244 3280 6592 13 4 82 0 0 1 0 0 4067656 324280 11105696 0 0 0 190 3331 6654 12 4 85 0 0 1 0 0 4096528 324280 11093160 0 0 0 188 3068 5648 11 3 86 0 0 1 0 0 4099368 324280 11092972 0 0 0 174 3130 6325 12 4 84 0 0 1 0 0 4105312 324284 11091888 0 0 0 225 3397 7064 14 4 82 0 0 1 0 0 4101616 324284 11096192 0 0 0 234 3517 7039 14 4 82 0 0 3 0 0 4062576 324284 11103648 0 0 0 372 3547 7263 14 4 82 0 0 1 0 0 4080312 324284 11097940 0 0 0 243 3180 6623 13 4 83 0 0 6 0 0 4086780 324284 11102572 0 0 0 174 3254 6390 13 4 83 0 0 1 0 0 4110312 324284 11089576 0 0 0 181 3198 6403 13 4 83 0 0 0 0 0 4094080 324284 11099016 0 0 0 220 3141 6949 12 4 84 0 0 2 0 0 4095848 324284 11096992 0 0 0 226 3043 6483 13 4 83 0 0 0 0 0 4107396 324288 11086824 0 0 0 264 3250 6551 13 5 82 0 0 1 0 0 4103260 324288 11094204 0 0 0 364 3188 6066 12 4 84 0 0 0 0 0 4112904 324288 11095512 0 0 0 179 3155 6355 12 4 84 0 0 1 0 0 4118736 324288 11098424 0 0 0 241 2929 5381 11 3 86 0 0 1 0 0 4121464 324292 11089684 0 0 0 213 3076 5939 11 4 85 0 0 0 0 0 4109180 324292 11103712 0 0 0 274 3076 6172 14 4 82 0 0 1 0 0 4103344 324292 11107400 0 0 0 182 3186 6301 12 3 84 0 0 2 0 0 4112200 324292 11100828 0 0 0 184 3234 6435 13 4 83 0 0 1 0 0 4140368 324292 11087284 0 0 0 345 2944 5851 10 3 86 0 0 2 0 0 4135768 324292 11082848 0 0 0 219 3390 6779 13 4 83 0 0 1 0 0 4109100 324292 11099612 0 0 0 237 3086 6635 13 4 83 0 0 2 0 0 4119308 324292 11089632 0 0 0 197 3203 6504 13 4 83 0 0 2 0 0 4103316 324292 11089996 0 0 0 212 3322 6576 13 4 83 0 0 2 0 0 4085044 324292 11103768 0 0 0 239 3313 6924 13 4 83 0 0 2 0 0 4099672 324292 11100764 0 0 0 226 3063 6233 12 4 84 0 0 0 0 0 4126776 324292 11088080 0 0 0 289 3361 6555 13 4 84 0 0 2 0 0 4104824 324292 11090908 0 0 0 231 3228 7022 14 4 82 0 0 0 0 0 4099456 324296 11096684 0 0 0 224 2936 5995 12 3 85 0 0 0 0 0 4117268 324296 11087676 0 0 0 228 3220 6257 11 4 85 0 0 2 0 0 4104404 324296 11098316 0 0 0 234 3347 6693 12 4 84 0 0 2 0 0 4088440 324296 11106628 0 0 0 228 3379 7079 14 4 82 0 0 2 0 0 4104672 324300 11103368 0 0 0 185 3012 5821 12 3 85 0 0 0 0 0 4108812 324300 11104884 0 0 0 268 3172 6914 14 4 82 0 0
“fcgi”是指mod_fastcgi还是mod_fcgid ? 如果你使用的是mod_fcgid ,你是使用apache文档中的包装器脚本,还是至less让apache设置所需的环境variables? 如果mod_fcgid和PHP之间的configuration不匹配,那么当apache没有准备好退出时,php可执行文件将会退出,这似乎是你说的话
当我检查顶部的命令,我看到如何httpd和PHP运行,然后几秒钟PHP进程停止,然后再次。
另一个需要在PHP中正确configuration的mod_fcgid是因为mod_fcgid希望处理自己产生的所有进程,所以必须禁用PHP的subprocess。 有关示例包装脚本和configuration,请参阅文档中的PHP信息 。
恐怕你没有在这里给我们很多的信息。 你需要find瓶颈,为此你需要数据。 你有一个适当的监测系统,收集有关你的过程如何performance和你正在使用多less资源的统计数据?
你使用多less内存和/或磁盘交换? 当系统运行良好并且速度变慢时,可以粘贴vmstat 5的输出吗?
一个非常简单和容易安装的监测系统是“萨尔”。 在Debian或Ubuntu系统中,可以使用apt-get install sysstat 。 然后几分钟后,您可以运行sar -A来查看收集到的数据。
所有这一切,谷歌显示了许多网站的信息调整的性能的openx 。 他们可能会帮助。
对不起,没有答案,但让我给你一个build议。 OpenX本身就是一个问题。 你应该避免它。
这是如此臃肿,我不能相信。 我刚刚再次下载重新检查。 45该死的Mb只是为了一个pipe理界面和一个广告脚本? 没门。
相对来说,我有一个不愉快的经验,用一段时间在一个交通中等的真实网站上使用它。 这很慢。 维护脚本虽然按照手册设置了错误和警告,但整个事情只能通过一些魔法来实现。 例如,如果我想强制重build广告caching,我必须依次多次运行维护(在pipe理界面中,据说在保存设置后刷新广告,如果我没有记错的话,工作)。 pipe理界面中高级设置的一半也不起作用。
作为开发人员,我必须注意到他们使用MDB2 lib来查询数据库。 我已经看到了testing – 这是最慢的PHP DB库之一。 他们在自己的顶层上推出了自己的类层次结构。 我当然希望他们只能在pipe理界面使用这个脂肪三明治,而不是在广告中投放。
有一段时间,它是相当体面的,那是当它被称为像MaxAds的东西。 不再。
但是,如果你真的想知道发生了什么事情,你可能想查看一下MySQL查询一段时间。 比如,向MySQL服务器发出“显示进程列表”或“显示完整进程列表”查询并重复,直到看到运行时间超过合理的查询为止。 如果你有自己的应用程序的运气,查询可能会是一个OpenX的。
另一种select是查看MySQL慢速查询日志。 你不得不自己找出日志文件的位置,因为我不熟悉它的通常设置。 这可能在MySQL手册中提到。
KeepAliveclosuresMaxKeepAliveRequests 100 KeepAliveTimeout 5 MinSpareServers 15 MaxSpareServers 25 StartServers 10 MaxClients 150 MaxRequestsPerChild 0
如果您仍然遇到问题,请发布完整的“top”“free”和“iostat”