Apache 性能超时

Apache 性能超时

我运行一个网络服务器,托管大约 6-7 个网站。这些网站中的大多数都从托管在同一台服务器上的 MySQL 获取内容。每天的平均流量约为 500-600 个独立访问者,每周的点击量约为 15 万次。

但出于某种原因,网站有时会发送超时,或者网站有时不会加载所有图像。我知道我可能应该将静态内容与动态内容分开,但目前我认为这是不可能的。

我将非常感激任何关于如何提高 apache 性能的建议,以便它不会一直超时。

服务器正在运行 Sempron LE 1300;2.3GHz,512K 缓存,2GB RAM,10Mbps/1Mbps

服务: MySQL、ProFTPD、Apache。

 Private  +   Shared  =  RAM used       Program
----------------------------------------------------
  1.2 MiB +  54.0 KiB =   1.2 MiB       proftpd
  4.1 MiB +  23.0 KiB =   4.1 MiB       munin-node
 20.8 MiB + 120.5 KiB =  20.9 MiB       mysqld
 47.3 MiB +   9.9 MiB =  57.3 MiB       apache2 (22)

top: Mem:   2075356k total,  1826196k used,   249160k free,

Timeout 35
KeepAlive On
MaxKeepAliveRequests 300
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
    StartServers         10
    MinSpareServers      20
    MaxSpareServers      20
    MaxClients           60
    MaxRequestsPerChild 1000
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

答案1

听起来好像服务器/线程可能不够。你检查过你的 apache 错误日志或系统日志吗?如果我没记错的话,它应该会告诉你需要增加什么资源。

另外,我看到你给了我们你的 prefork 和 worker mpm 设置。看看这个问题的答案我如何知道 apache 是作为 prefork 还是 worker 运行?关于如何找出您正在使用哪个 mpm。

答案2

虽然如果不看 Apache error_log 就很难确定,但如果您在一个只有 1Mbit 上传带宽的 Internet 连接上托管了六七个网站,我会感到担心。我猜想这要么是在一间非常小的办公室,要么是在您自己的家里。虽然 1Mbit 可能足以满足您的流量预期,但 1Mbit 连接是导致网站间歇性加载问题的原因,这听起来相当合理。

我建议将您的网站外包给专业的网络托管商,或者从 Linode 或 Slicehost 等提供商处购买低成本的基于 Xen 的 VPS。

至少,确保您的 DNS 由专业人员托管且由外部托管。

如果问题不在于您的互联网,那么我的第二个想法就是 Apache 内存不足。带有 mod_php 的 Apache 占用大量内存,每个进程最多消耗 50MB 的内存。再加上 Apache 默认的 KeepAlive 设置 15 秒,您可能会耗尽内存,具体取决于您分配了多少 SWAP 空间。

我个人会选择 lighttpd 或 nginx fastcgi 异步事件驱动模型,它可以在使用一小部分内存的情况下处理更多的连接。

希望这可以帮助。

相关内容