lsof と Apache strace から、見つけにくく遅い anon_inode を追跡する

lsof と Apache strace から、見つけにくく遅い anon_inode を追跡する

LAMP アプリケーションで、Apache が ServerLimit にフォークして (ほぼ) 停止するという断続的な問題が発生しています。straceどのhttpdプロセスでも、多数の低速なepoll_wait呼び出しが表示されます。

1.254721 epoll_wait(14, {{EPOLLIN, ...
3.296430 epoll_wait(14, {{EPOLLIN, ...
1.018047 epoll_wait(14, {{EPOLLIN, ...
1.279721 epoll_wait(14, {{EPOLLIN, ...
1.145649 epoll_wait(14, {{EPOLLIN, ...
1.269836 epoll_wait(14, {{EPOLLIN, ...
1.094779 epoll_wait(14, {{EPOLLIN, ...
1.205911 epoll_wait(14, {{EPOLLIN, ...
9.052785 epoll_wait(14, {{EPOLLIN, ...
1.116279 epoll_wait(14, {{EPOLLIN, ...
1.027709 epoll_wait(14, {{EPOLLIN, ...
1.178679 epoll_wait(14, {{EPOLLIN, ...
1.336032 epoll_wait(14, {{EPOLLIN, ...
2.541861 epoll_wait(14, {{EPOLLIN, ...
1.113012 epoll_wait(14, {{EPOLLIN, ...

lsof同じプロセスに関する次の主張がありますanon_inode:

COMMAND  PID   USER   FD   TYPE   DEVICE      SIZE     NODE NAME
httpd   9709 apache   14u  0000      0,7         0      373 anon_inode

それが何であるかに関する知見、またはその情報を追跡するためのアドバイスはありますか?

答え1

これは根本的に、lsof期待どおりにレポートされていません。Ubuntu 14.04 では再現できますが、新しい Ubuntu では次のようになります。

perl 511299 frew 3u a_inode 0,11 0 9666 [eventpoll]

これはかなり明白です。基本的に、epoll ファイル記述子は常に遅く見えるのは、文字通りカーネルがタイムアウトまたは他のいくつかのファイル記述子のイベントをブロックしているためです。epoll(7)詳細については、を参照してください。

関連情報