MaxClients,服务器限制等

我的服务器出现了一些问题。 它stream量很大,速度很慢,有时用户无法访问。

这里是服务器规格:

CPU: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz - 16 Processors RAM: 2GB 

Apacheconfiguration的值是:

 StartServers: 5 MaxSpareServers: 10 MinSpareServers: 5 MaxClients: 150 ServerLimit: 256 MaxRequestsPerChild: 1000 KeepAlive: On KeepAliveTimeout: 5 MaxKeepAliveRequests: 100 TimeOut: 300 

什么是我的configuration服务器的最佳值,以合理的速度支持最大数量的用户,而不会中断服务器!

谢谢。

问题是你只有2GB的内存,你设置MaxRequestsPerChild相当高的价值。

你的configuration基本上说,你可以有多达256个同时的apache线程(每个服务1个请求),每个线程将在回收之前提供1000个请求,并用新线程replace。

在处理1000个请求的同时,该线程的内存占用量对于2GB系统而言将变得太大。

我build议的其他事情是检查你提供多less静态内容,多less是dynamic的(PHP)。 您可以通过查看日志或分析mod_Status(apache2ctl fullstatus)输出来检查。

如果你有很多静态内容,图像等,我会build议把像Apache的nginx infront这样的web服务器,处理静态内容好得多,只是代理非静态内容请求到一些本地绑定不同的端口上的Apache。

“放缓”通常来自Web服务器(对许多客户端)的拥塞或交换的使用。

为了防止拥塞, KeepAliveTimeout可以在1到3之间降低。它将更快地释放客户端的服务器,并允许在不同的客户端同时做更多的回答。

你应该检查你的服务器是否永远不交换,如果是的话,你应该降低MaxClients (是的,它会阻止一些客户端的请求,但是至less,连接的客户端会在更短的时间内得到响应并且快速释放服务器资源) 。 如果连接150个客户端时有一些空闲内存,则可以小心提高MaxClient号码。

如果你使用Linux,你可以尝试降低ThreadStackSize,它将帮助内核pipe理内存。 我在我自己的服务器上没有问题地将其降低到512Ko:

 ThreadStackSize 524288 

在任何情况下,您都应该尝试设置服务器活动的graphics,以准确地确定服务器的使用情况。 我喜欢munin这是非常容易安装,并提供默认情况下非常有针对性的graphics,但也有仙人掌 , 收集与ddraw和其他很多…