我有一个16 GB的内存的Web服务器。 该服务器有很好的stream量,并有300个同时请求的照片。
不幸的是,当这些峰值到达时,查询就会出错或者非常慢。
当我通过free命令查看服务器上使用的内存时,它永远不会超过4-5 GB,CPU负载平均为10%。
total used free shared buffers cached Mem: 16392540 4820632 11571908 0 356120 1948920 -/+ buffers/cache: 2515592 13876948 Swap: 1049596 0 1049596
这是我的Apache 2 preforkconfiguration:
StartServers 32 MinSpareServers 32 MaxSpareServers 64 ServerLimit 512 MaxClients 512 MaxRequestsPerChild 0 Timeout 15 KeepAlive On MaxKeepAliveRequests 150 KeepAliveTimeout 3
我想允许Apache使用更多的内存来处理所有的请求,而不是超载。 但即使我改变了configuration,对内存的使用似乎也没有任何影响。
我说我的服务器使用plesk 。
我也使用MySQL数据库,但只包含一个表和一些logging。
你有什么主意吗?
谢谢你的帮助。
马丁
我也使用MySQL数据库,但只包含一个表和一些logging。
如果你正在运行一个MySQL数据库,可能是你的磁盘是瓶颈。
即使“只有一张表和一些logging”,仍然可能存在错误的查询,很长的等待时间,或者数据库的某种问题导致严重的延迟,导致缓慢。
我之所以这样说,是因为你已经确定你的内存和CPU没有太大的压力。
另一个要看的是,您是否拥有您所接收的请求数量所需的networking吞吐量。
作为最后一点,相信我,当我说: 调整阿帕奇在这里将是徒劳的。 看看你的数据库,磁盘性能和networking带宽/吞吐量。
Vasili对于硬盘和瓶颈是非常正确的。 另外,如果您使用的是Plesk 11,则可以在Apache之前安装nginx。 默认情况下nginx没有configuration,工作在“混杂模式”。 因此,您可以简单地根据您的要求进行configuration和定制,从而从服务静态文件释放apache。