web-dev-qa-db-ja.com

Apacheプロセスで `strace`をどのように解釈して、` restart_syscall`を返しますか?

RAM使用量が上限に達したため、Apacheサーバーを毎日再起動します。

価値があるものの このserverfaultの回答を参照 ですが、Apache構成でMaxClientsを下げることは、未知のルート問題の解決策だとは思いません。

以下の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

私にとっては、この1行だけが暗号化されて返されます。

restart_syscall(<... resuming interrupted call ...> <unfinished ...>

洞察はありますか?ありがとう。

6
b_dev

その行は、現在のシステムコールがstraceによって中断され、straceがそれを再実行するように要求したことを意味します。あなたがトレースしているプロセスは眠っていると思います。

Apacheがforkするクライアントが多すぎて、サーバーがディスクへのページングを開始する場合は、MaxClientsディレクティブを低くする必要があります。

MaxClients <=(RAM-RSS_all_other_processes)/(Apache_process_RSS-Apache_SHR)-1

4