我运行一个网络服务器,我在那里托管大约6-7个网站。这些网站中的大多数都是从托管在同一台服务器上的MySQL获取它们的内容。平均每天的流量大约是500-600独特的游客,约150 K每周点击率。
但出于某些原因,有时网站发送超时,或有时网站没有加载所有的图像。我知道我也许应该将静态内容和动态内容分开,但目前我认为这是不可能的。
对于如何提高apache的性能,我将不胜感激,这样它就不会一直超时。
服务器运行在Sempron LE 1300上;2.3GHz,512 K缓存2GB RAM 10 1Mbps/1 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>发布于 2009-12-04 20:33:22
听起来好像没有足够的服务器/线程。您检查过apache错误日志或syslog吗?如果我没有完全记错,它应该告诉你你需要增加什么资源。
另外,我看到你给我们你的预叉和你的工人mpm设置。看看我如何判断apache是作为前置文件运行还是作为工作程序运行?关于如何找出您正在使用的mpm的问题的答案。
发布于 2009-12-04 22:46:23
虽然很难肯定地说,如果不浏览Apache error_log,我会担心您在一个只有1Mbit上传带宽的互联网连接上托管了6个或7个网站。我想这不是在一个很小的办公室里就是在你自己的家里。虽然1Mbit可能足以满足您的流量期望,但它听起来相当合理,1 1Mbit连接是导致间歇性网站加载问题的原因。
我建议要么把你的网站外包给专业的网络主机,要么从像Linode或Slicehost这样的提供商那里购买一个低成本的基于Xen的VPS。
至少,确保您的DNS是专业的和外部的托管。
如果问题不在你的互联网上,那么我的第二个想法就是Apache内存耗尽。使用mod_php的Apache内存相当大,每个进程消耗最多50 to的ram。结合Apache的默认KeepAlive设置15秒,您可能会耗尽内存,这取决于您已经分配了多少交换空间。
就我个人而言,我会使用lighttpd或nginx快速can异步事件驱动模型,它可以处理更多的连接,同时使用内存的一小部分。
希望这能有所帮助。
https://serverfault.com/questions/91170
复制相似问题