什么是我的Apache服务器的瓶颈?

$netstat -anp | grep :80 | grep TIME_WAIT | wc -l 840 $netstat -anp |grep :80 | grep ESTABLISHED | wc -l 50 

内存使用量:850MB / 1000MB

apache2.conf包含..

 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_event_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> 

是否有任何configuration更改,可以帮助我或它只是我的内存瓶颈?
急需帮助.. !!

没有关于服务器,configuration和应用程序的更多信息,很难给出详细的答案,但是这里有几个一般的事情要考虑:

  • 具有1GB内存的MaxClients可能太多了,特别是在运行PHP的Apache服务器上。 可能发生的事情是,Apache将用完所有的RAM,并开始击中交换内存,这将立即杀死你的performance。 检查这种情况的最好方法是在高峰时间检查“top”和“free”的输出,并确保交换内存使用量接近0.如果空闲内存变为零并且交换内存开始增加,请尝试减lessMaxClients。 棘手的部分是,服务器似乎运行得很好,具有较高的MaxClients设置,直到碰巧开始使用交换的stream量高峰。
  • 您可以通过禁用任何不使用的模块来减lessApache使用的内存量。 尝试禁用几个一次和testing,以确保你不会意外禁用你需要的模块(从经验)。
  • TIME_WAIT有很多连接是正常的。 这是套接字完成后等待closures/销毁的状态。 在ESTABLISHED中有很多的连接可能只是由于高服务器负载,服务需要一段时间的文件,或者一个大的KeepAlive设置(尽pipe我不确定后者保持什么状态连接)。 对于我的应用程序,我发现KeepAlive设置实际上损害了性能,所以我禁用了它。 对于大多数应用程序来说,默认的KeepAlive设置(我认为是15秒)实际上非常大,值有1或2秒,有时效果会更好。
  • 下一个最可能的瓶颈将是CPU。 用“运行时间”或“顶部”检查服务器的负载。 一般来说,小于1的负载是好的,大约是好的,随着数值的增加,这意味着更多的潜在问题。 有没有负载值是“坏”(至less直到你得到非常高的价值):通常我看到负载低于0.5,偶尔尖峰高达5我的服务器,当他们运行良好。 检查“top”中的CPU空闲率是衡量CPU多忙的另一个指标。
  • 如果你的CPU是瓶颈,考虑安装一个PHP操作码caching,如eAccelerator或APC。 这可以立即减less一半的CPU使用率(左右)。 其他要考虑的事情是添加一个caching层来减lessWeb服务器的请求数量,并使用像lighttpd / nginx这样的轻量级服务器来提供静态内容。
  • 您可以使用ab或siege等基准程序更准确地testing瓶颈(硬件或configuration)。 使用当前configuration进行一些基线测量,更改设置,然后重试。 如果你不测量你的configuration变化的影响,你可能会花费大量的时间来改变错误的东西。