站点负载过大时超时

站点负载过大时超时

我的客户每周一/周三/周五早上 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 脚本即可访问您网站的各个部分。

相关内容