我正在使用 PHP 脚本 Openx 来开展广告活动。我们的流量开始增加,服务器有时会变得不稳定。当我检查 top 命令时,我会看到 httpd 和 PHP 的运行情况,然后几秒钟后 PHP 进程停止,然后又停止了。
问题在于响应缓慢。页面显示非常慢。看起来服务器在高峰时段达到了极限。请问您能提出什么建议吗?!
服务器运行: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% (0 / 2096472) 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 进程 -----------内存---------- ---交换----- -----io---- --系统----- -----cpu------ rb swpd 免费 buff 缓存 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
答案1
你说的“fcgi”是指mod_fastcgi
还是mod_fcgid
?如果你使用的是mod_fcgid
,你是在使用 apache 文档中的包装器脚本,还是至少让 apache 设置所需的环境变量?如果 mod_fcgid 和 PHP 之间的配置不匹配,那么当 apache 尚未准备好退出时,php 可执行文件将退出,这似乎就是你说的
当我检查 top 命令时,我看到了 httpd 和 php 是如何运行的,然后几秒钟后 php 进程停止了,然后又再次出现。
mod_fcgid 需要在 PHP 中正确配置的另一件事是必须禁用 PHP 的子进程,因为 mod_fcgid 需要自行处理所有进程生成。请参阅文档中的 PHP 信息获取包装器脚本和配置的示例。
答案2
恐怕你在这里没有给我们太多信息。你需要找到瓶颈所在,为此你需要数据。你是否有适当的监控系统来收集有关你的流程如何运行以及你使用了多少资源的统计数据?
您使用了多少 RAM 和/或磁盘交换?您能粘贴vmstat 5
系统运行良好和运行缓慢时的输出吗?
一个非常简单且易于安装的监控系统是“sar”。在 Debian 或 Ubuntu 系统中,可以使用 进行安装apt-get install sysstat
。然后几分钟后,您就可以运行它sar -A
来查看它收集的数据。
尽管如此,谷歌还是显示了很多包含以下信息的网站调整 openx 的性能.他们可能会帮忙。
答案3
抱歉,没有答案,不过我给你一个建议。OpenX 本身就是一个问题。你应该避免它。
它太臃肿了,我简直不敢相信。我刚刚又下载了一次,重新检查了一下。45 Mb 就为了管理界面和投放广告的脚本?不可能。
最近,我在一个流量适中的实际网站上使用它时,遇到了一些不愉快的经历。它很慢。维护脚本虽然按照手册设置,但还是会发出错误和警告,整个过程只能靠某种魔法才能正常工作。例如,如果我想强制重建广告缓存,我必须按顺序多次运行维护(在管理界面中,如果我没记错的话,广告会在您保存设置后立即刷新,但这并不奏效)。管理界面中一半的高级设置也不起作用。
作为一名开发人员,我必须注意到他们使用 MDB2 库来查询数据库。我看过测试 - 它是目前最慢的 PHP DB 库之一。和他们在其上添加了自己的类层次结构。我真心希望他们只在管理界面中使用这个肥腻的三明治,而不是在投放广告时使用。
曾经有一段时间它还不错,那时它被称为 MaxAds。现在不再如此了。
答案4
- 禁用持久 MySQL 查询(php.ini)
- 添加缓存软件(如 Eaccelerator 或 Zend)以提高 PHP 性能
- 考虑使用 LiteSpeed 或 Nginx 等代替 Apache 来提高性能
- 使用“iostat”监控磁盘性能,尝试识别磁盘性能瓶颈
- 通过编辑 /etc/my.cnf 中的配置来优化 mySQL
- 尝试以 httpd.conf 的以下设置为基础开始
KeepAlive 关闭 MaxKeepAliveRequests 100 KeepAliveTimeout 5 MinSpareServers 15 MaxSpareServers 25 StartServers 10 MaxClients 150 MaxRequestsPerChild 0
如果您仍然遇到问题,请发布“top”、“free”和“iostat”的完整输出