Apache的性能超时

我正在运行一个networking服务器,我正在主办6-7网站。 这些网站中的大多数从托pipe在同一台服务器上的MySQL获取其内容。 每天的平均访问量约为500-600人,每周访问量约为15万次。

但由于某种原因,有时网站发送超时,或有时网站不加载所有图像。 我知道我也许应该从dynamic内容中分离静态内容,但是现在我认为这不是一种可能性。

我将不胜感激任何build议,我怎样才能提高Apache的性能,所以它不会超时。

服务器在 Sempron LE 1300 上运行 ; 2.3GHz,512Kcaching2GB 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> 

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

此外,我看到你给我们你的prefork和你的工人MPM设置。 看看问题的答案如何判断apache是​​以prefork还是worker工作? 关于如何找出你正在使用的mpm。

虽然很难说一定没有看到Apache error_log我会担心你是在一个互联网连接只有1Mbit的上传带宽承载六或七个网站。 我想这是在一个非常小的办公室里,或者在你自己的家里。 虽然1Mbit可能足以满足您的stream量预期,但听起来相当合理,1Mbit连接是间歇性网站加载问题的原因。

我build议要么将您的网站外包给专业的networking主机,要么可能从Linode或Slicehost等提供商购买低成本的基于Xen的VPS。

至less,确保您的DNS托pipe在专业和外部。

如果问题不在于你的networking,那么我的第二个想法就是Apache耗尽内存。 Apache,与mod_php是相当内存繁重,每个进程消耗高达50MB的内存。 将其与Apache默认的KeepAlive设置为15秒相结合,您可能会用尽内存,具体取决于您分配了多lessSWAP空间。

就我个人而言,我会用一个lighttpd或nginx fastcgiasynchronous事件驱动模型,它可以处理更多的连接,同时使用一部分的内存。

希望这可以帮助。