我想为我的生产服务器的apache中的MaxClient设置一个最佳值。 计算此值时应考虑哪些参数?
请参阅Apache性能调整指南。
引用
"You can, and should, control the MaxClients setting so that your server does not spawn so many children it starts swapping. This procedure for doing this is simple: determine the size of your average Apache process, by looking at your process list via a tool such as top, and divide this into your total available memory, leaving some room for other processes."
补充@Sameer的答案,我读了很多这个主题,我做的是这样的:
获取apache进程平均大小:
server# ps -ylC apache2 --sort:rss S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD S 33 6233 25895 0 80 0 7432 72802 poll_s ? 00:00:00 apache2 S 33 6250 25895 0 80 0 7432 72802 poll_s ? 00:00:00 apache2 S 33 6278 25895 0 80 0 7432 72802 poll_s ? 00:00:00 apache2 S 33 6280 25895 0 80 0 7432 72802 poll_s ? 00:00:00 apache2 S 33 6577 25895 0 80 0 7432 72802 poll_s ? 00:00:00 apache2 S 33 6299 25895 0 80 0 7772 72891 poll_s ? 00:00:00 apache2 S 33 6295 25895 0 80 0 7776 72891 poll_s ? 00:00:00 apache2
正如你可以在SZ列中看到的,我的apache进程大小约为73 MB
制作下面的公式
MaxClients: ((Total_Memory)(1024)(MB) - Other_processes_memory) / 73
例如:我有16 GB的RAM,我可以留下任何其他进程免费的2 GB
MaxClients: ((16*1024) - 2048) / 73 MaxClient: 196
这是我使用和我的服务器进展顺利。
你必须考虑我的apache进程有点沉重,所以你可以有大约50 MB或更less的进程。
问候,
你的SZ对于所有的apache进程都是一样的。 在我的情况下,我有23和212 MB之间的值input图像描述这里应该在你的公式中使用什么值?
顺便说一句,在Apache 2.4 MaxClients已被重命名为MaxRequestWorkers。 你的公式对这个新参数仍然有效吗?
问候
tachomi的答案不是过于全面,但似乎是一个合理的方式开始估计。
除此之外,这将帮助您找出Apache目前正在使用的一些资源:
ps aux | grep 'httpd' | awk '{count = NR;} END {print count " Apache processes";}' ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{sum += $1;} END {print sum " MB total mem usage";}' ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB avg mem usage";}'