我的客户每周一/周三/周五早上 8 点发送电子邮件。8:15-8:45 之间,网站速度变得非常慢,许多用户会话超时。
我的设置:Mediatemple VE 2gb 专用内存(3 突发)Ubuntu 9.10 Apache2-mpm-worker PHP5.3-fcgi MySQL 5
我最近尝试通过从 apache2-mpm-prefork 切换到 mpm-worker 来解决这个问题,但仍然遇到同样的问题。
我的 apache 设置是:
Timeout 100
KeepAlive On
MaxKeepAliveRequests 100
<IfModule mpm_worker_module>
StartServers 12
MinSpareThreads 25
MaxSpareThreads 96
ThreadLimit 96
ThreadsPerChild 25
MaxClients 225
MaxRequestsPerChild 0
</IfModule>
该网站在早上 8 点至 9 点期间的页面浏览量仅为约 10,000 次,我认为这不会给服务器带来太大压力。也许是 PHP 设置或单位时间带宽存在错误,或者网站规模超出了服务器的承受范围?
任何建议都会非常有用 - 正如您所看到的,在寻求帮助之前我已经做了很好的尝试(安装了 mpm-worker)。
另外,有人可以向我推荐一些免费的负载测试软件,或者有关 mod_status 的教程吗?
谢谢
答案1
这在很大程度上取决于应用程序以及流量/使用模式。我建议当时登录服务器(如果可能的话)来收集一些重要的统计数据:
- 正在运行的 Apache 进程数量
- 每个 Apache 进程使用的平均内存
- 应用程序使用的/非缓存的总内存。
- CPU 使用率/平均负载
- 磁盘上打开的文件数量
- 打开的连接数量(在此处插入数据库)。
然后我还会查看日志,看看是否显示任何错误消息。
根据你服务的配置方式,它可能是任何情况,从内存耗尽,到 CPU 超载,到 mysql 连接池超出,到 apache 连接池超出。
您还可以使用 iotop、mytop、top 和 ntop 等工具来实时查看正在发生的事情,或者可以使用 apache 的“ab”进行一些小型负载测试。但最终我认为您可能需要更智能、更可编程的东西来更紧密地复制客户的使用模式。其实不需要花哨,只需几个 shell+curl 脚本即可访问您网站的各个部分。