我们每天都会重启 Apache 服务器,因为 RAM 使用量已经达到了极限。
虽然有价值参见此 serverfault 答案,我不认为降低MaxClients
apache 配置是解决未知根问题的办法。
下面的 apache 进程看起来异常大(MB)且持续时间长。这是否意味着存在内存泄漏。这是否意味着我们应该降低 MaxRequestsPerChild 设置?
看http://www.devside.net/articles/apache-performance-tuning
您能理解下面的数据吗?
以下是摘录的内容
$top
和M
返回:
20839 www-data 20 0 1008m 359m 22m S 4 4.8 1:52.61 apache2
20844 www-data 20 0 1008m 358m 22m S 1 4.8 1:51.85 apache2
20842 www-data 20 0 1008m 356m 22m S 1 4.8 1:54.60 apache2
20845 www-data 20 0 944m 353m 22m S 0 4.7 1:51.80 apache2
然后调查一个过程
$sudo strace -p 20839
仅返回这一行,对我来说,这是神秘的一行:
restart_syscall(<... resuming interrupted call ...> <unfinished ...>
有什么见解吗?谢谢。
答案1
该行表示当前系统调用被 strace 中断,并且 strace 要求重新运行它。我认为您正在跟踪的进程正在休眠。
如果 apache 分叉了太多客户端并且服务器开始分页到磁盘,那么您应该降低MaxClients
指令。
MaxClients <= (RAM - RSS_all_other_processes)/(apache_process_RSS - apache_SHR) - 1