1

カスタムメイドのシングルサインオンを含めるワードプレスプラグインを作成しています。

再現できない問題がありますが、頻繁に発生します。ログインして別のページをクリックすると、このページがずっと読み込まれ続けることがあります。また、同じセッションからの他のすべてのリクエストは、この時点から停止します。Apacheを再起動すると修正されますが、実際の解決策ではありません。

サーバーのトラフィックはそれほど多くないため、少数の apache プロセスのみが実行されています。それらを掘り下げると、多くの人が立ち往生していることがわかりますsemop

(gdb) bt
#0  0x00002af60c22b2d7 in semop () from /lib64/libc.so.6
#1  0x00002af60bbf612c in ?? () from /usr/lib64/libapr-1.so.0
#2  0x000055555559e614 in ?? () from /usr/sbin/httpd2-prefork
#3  0x000055555559e9ea in ?? () from /usr/sbin/httpd2-prefork
#4  0x000055555559f25d in ap_mpm_run () from /usr/sbin/httpd2-prefork
#5  0x000055555557a080 in main () from /usr/sbin/httpd2-prefork

彼らはファイルを待っているようです:

strace -p 3069
....
read(7, 0x7fff16a04df7, 1)              = -1 EAGAIN (Resource temporarily unavailable)
semop(286162952, 0x2af60bd07dc0, 1 <unfinished ...>

read(7 ,..)パイプを指します:

# ls -la /proc/3069/fd/7
lr-x------ 1 root   root 64 Nov  7 17:24 7 -> pipe:[157329520]

そのパイプは、すべての apache プロセスで使用されます。

# lsof | grep 157329520
httpd2-pr  2430       root    7r     FIFO                0,5             157329520 pipe
httpd2-pr  2430       root    8w     FIFO                0,5             157329520 pipe
httpd2-pr  3061     wwwrun    7r     FIFO                0,5             157329520 pipe
httpd2-pr  3061     wwwrun    8w     FIFO                0,5             157329520 pipe
...

問題とは関係ないかもしれませんが、これは何のパイプなのか気になります。

ここにいる人々は、結局のところサーバーの問題ではないと推測していますが、バックトレースで見たところ、PHP はまだ呼び出されていません。libphp5.so はまったくありません。

PHPコードを投稿して見てもらいたいのですが、どの部分かわかりません...私のスクリプトは、同じセッションで別のスクリプトへのcurl呼び出しを行います。多分これはある種のブロッキングを作成していますか?それともhttpsの問題でしょうか?

PHP なのか Apache なのかはわかりませんが、問題の鍵は、ここで apache が何をしているのかを理解することかもしれません。

これを修正またはデバッグする方法はありますか?

4

1 に答える 1

0

出力では、straceファイル ポインタ番号 7 を待機しているように見えます。次のような行を探すことで、これがどのファイルであるかを見つけることができます

open("/foo/bar", ......)     = 7

read電話の前のどこか。

于 2012-11-07T16:54:39.100 に答える