Apache使用了太多的服务器内存,导致它崩溃。 我有4GB的RAM在服务器中。
我试图微调Apache设置,以提高它的性能,但我很新。
我试图按照这篇文章的build议,但我不知道如何计算的东西,似乎我让事情变得更糟。
我的顶部是这样的:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd 13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd 11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd 12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd 11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd 11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd 11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd 11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
所以,会是的
MaxClients = 3000/ (322-37) = 10
是对的吗? 另外,其他参数(如MinSpareServers,MaxSpareServers,MaxRequestsPerChild,StartServers,MinSpareThreads,MaxSpareThreads,ThreadsPerChild,MaxRequestsPerChild)的值应该是多less?
请有人帮我吗?
更新
我试过你们build议的。 它的工作,但只是一段时间。 服务器启动一段时间后,内存使用量不断增加,永远不会下降。
我的意思是,在启动服务器之后,我们假设有500个用户在线。 服务器将消耗X RAM。 2小时后,同样的500个用户在线,服务器将消耗10X RAM。
有没有办法避免这一点,否则我将不得不继续观看服务器,并不时重新启动它?
调整Apache内存使用的主要参数是MaxClients 。 值太低,您将用尽可用的插槽来提供客户端请求。 太多,你会用尽所有的内存,并开始使用交换空间,这将杀死性能(这可能是一个服务器崩溃)。
调整MaxClients一种方法是观察系统的内存使用情况,并根据需要调整设置。 如果服务器开始交换编辑它。 如果服务器有空闲的内存把它。
您也可以通过查看Apache的内存使用情况来估计最大值。 从top开始,按M按内存sorting进程。 你应该看到像这样的东西:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18698 apache 17 0 141m 59m 41m S 0.0 1.6 4:57.46 httpd 18591 apache 17 0 141m 59m 41m S 0.0 1.5 4:54.79 httpd 22917 apache 16 0 141m 57m 39m S 0.0 1.5 4:57.44 httpd 18595 apache 16 0 142m 57m 38m S 0.0 1.5 5:23.43 httpd 18697 apache 16 0 139m 56m 41m S 0.0 1.5 5:09.29 httpd 18735 apache 25 0 141m 56m 38m S 0.0 1.5 5:05.32 httpd
减去RES和SHR列以获得每个Apache实例的近似内存使用量。 在这种情况下,大约是16MB。 如果我有4GB的内存,并希望3GB的用于Apache我的MaxClients设置将是:
MaxClients = 3000/16 = 188
因此,在这种情况下,我可能从150-200的值开始,但是我会观察内存使用情况,如果它开始接近使用swap,我会减lessMaxClients 10-20%。 另外请注意,3GB的值只是一个随机的例子。 在只运行Apache的服务器上,我可以使用几乎所有的4GB。 在其他情况下,我可能只希望1或2GB的Apache保存剩余的其他应用程序,系统或caching。
编辑:回答其他问题
MaxClients或其他的Apacheconfiguration参数通常没有什么神奇的价值,这会让你的服务器突然快两倍。 有些服务器似乎运行得很好,无论MaxClients是10还是1000.有两种MaxClients设置为“不良”的主要情况:
虽然我不知道您的服务器,应用程序或通信的细节,我可以build议以下configuration值作为起点。 尝试使用它们,监视服务器的负载和使用情况,并根据需要更改设置。