Sou*_*ker 11 memory-usage apache-2.2
Apache 使用了太多我的服务器内存,导致它崩溃。我在服务器中有 4GB 的 RAM。
我正在尝试微调 Apache 设置以提高其性能,但我对此很陌生。
我试图遵循这篇文章的建议,但我不知道如何计算事情,而且我似乎让事情变得更糟。
我的顶部是这样的:
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
Run Code Online (Sandbox Code Playgroud)
所以,这将是
MaxClients = 3000/ (322-37) = 10
Run Code Online (Sandbox Code Playgroud)
那正确吗?此外,其他参数的值应该是什么,例如 MinSpareServers、MaxSpareServers、MaxRequestsPerChild、StartServers、MinSpareThreads、MaxSpareThreads、ThreadsPerChild、MaxRequestsPerChild?
有人可以帮助我吗?
更新
我已经尝试了你们所建议的。它有效,但只是一段时间。服务器启动一段时间后,内存使用量不断增加并且永远不会下降。
我的意思是,在我启动服务器之后,让我们假设有 500 个在线用户。服务器将消耗 X RAM。2 小时后,同样有 500 个用户在线,服务器将消耗 10 倍 RAM。
有没有办法避免这种情况,否则我将不得不继续监视服务器并不时重新启动它?
ues*_*esp 15
调整 Apache 内存使用的主要参数是MaxClients. 值太低,您将用完可用插槽来满足客户端请求。太多,您将用完所有 RAM 并开始使用交换空间,这会降低性能(这可能是服务器崩溃)。
一种调整方法MaxClients是观察系统的内存使用情况并根据需要调整设置。如果服务器开始交换编辑它。如果服务器有空闲内存就把它放起来。
您还可以通过查看 Apache 的内存使用情况来估计最大值。启动top并按下M以按内存对进程进行排序。你应该看到类似的东西:
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
Run Code Online (Sandbox Code Playgroud)
减去 RES 和 SHR 列以获得每个 Apache 实例的大致内存使用量。在这种情况下,它大约是 16MB。如果我有 4GB 的 RAM 并希望其中 3GB 用于 Apache 我的 MaxClients 设置将是:
MaxClients = 3000/16 = 188
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,我可能从 150-200 的值开始,但我会观察内存使用情况,如果它开始接近使用交换,我会将 MaxClients 减少 10-20%。另请注意,3GB 的值只是一个随机示例。在仅运行 Apache 的服务器上,我可能能够使用几乎所有的 4GB。在其他情况下,我可能只需要 1GB 或 2GB 用于 Apache,其余的用于其他应用程序、系统或缓存。
编辑:回答其他问题
MaxClients 或其他 Apache 配置参数的魔法值通常不会使您的服务器速度突然提高两倍。无论 MaxClients 是 10 还是 1000,某些服务器似乎都能正常运行。 MaxClients 设置为“坏”的主要有两种情况:
虽然我不知道您的服务器、应用程序或流量的详细信息,但我可以建议以下配置值作为起点。试用它们,监控服务器的负载和使用情况,并根据需要更改设置。
| 归档时间: |
|
| 查看次数: |
26493 次 |
| 最近记录: |