如何解释返回“restart_syscall”的 apache 进程上的“strace”?

如何解释返回“restart_syscall”的 apache 进程上的“strace”?

我们每天都会重启 Apache 服务器,因为 RAM 使用量已经达到了极限。

虽然有价值参见此 serverfault 答案,我不认为降低MaxClientsapache 配置是解决未知根问题的办法。

下面的 apache 进程看起来异常大(MB)且持续时间长。这是否意味着存在内存泄漏。这是否意味着我们应该降低 MaxRequestsPerChild 设置?

http://www.devside.net/articles/apache-performance-tuning

您能理解下面的数据吗?

以下是摘录的内容

$topM

返回:

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

相关内容