2012-11-07 3 views
1

나는 맞춤형 싱글 사인온 (single sign-on)을 포함하는 wordpress plugin을 쓰고있다.아파치/PHP가 응답하지 않습니다 : semop?

내가 재현 할 수없는 문제가 있지만 자주 발생합니다. 때때로 로그인하여 다른 페이지를 클릭하면이 페이지가 계속로드됩니다. 또한 같은 세션의 다른 모든 요청은이 시간부터 중단됩니다. 아파치를 다시 시작하면 해결되지만 실제 해결책은 아닙니다.

서버의 트래픽이 많지 않으므로 일부 아파치 프로세스 만 실행됩니다. 내가 그들을 파고 경우에 나는 semop와 stucked 많은 참조 :

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] 

그 파이프가 파일을 기다리고있는 것처럼

(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 

보인다 모든 아파치 프로세스에서 사용됩니다 :

# 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 코드를 게시하고 싶지만, 어떤 부분인지 모르겠다. 내 스크립트는 같은 세션에서 다른 스크립트로 컬 호출을 만든다. 어쩌면 이것이 어떤 종류의 차단을 만들고 있을까요? 아니면 https 문제 일 수 있습니까?

저는 PHP 나 Apache인지 정말로 알 수 없지만 문제의 핵심은 아파치가 여기서 무엇을하는지 이해하는 것일 수 있습니다.

어떻게 수정하거나 디버깅 할 수 있습니까?

+0

나는 단지 파이프가 processses에 연결되어 있다고 생각한다. 당신이'cat foo | 고양이. 이 경우 아파치는 자신과 통신하는 것 같다. 문제가 아파치와 관련이 있는지 확실하지 않습니다. – Alex

+1

서버 구성 문제는 아니지만 언급 된 OP와 같은 나쁜 PHP * 코드 일 가능성이 높습니다. PHP의 실제 코드가 아니라 PHP 세션 핸들러의 문제가 아니라고 확신 할 수 있다면 SF에 관한 질문을 할 수 있습니다. (우리는 어떤 세션 핸들러를 사용했는지 알아야합니다. - 디버그가 필요한 자체 개발 PHP 일 수있는 "사용자 정의"를 포함하여 몇 가지 옵션이 있습니다. – voretaq7

+0

재미있는 질문은 SF로 옮겨지고 지금은 모두가 서버 문제가 아니라고 말하고 있습니다 :) PHP 나 아파치라고 말한 적은 한 번도 없었습니다. 나는 "서버 문제가 아닙니다. stackoverflow.com/questions/264266/debugging-hung-php를 참조하십시오."; 만약 누군가 당신이 이걸 어떻게 나에게 말할 수 있다면 대답으로. 나를 위해 그것은 말이 안된다. PHP 문제인 경우 어떻게 호출 스택에 php_execute_script 또는 libphp5.so가 포함되지 않습니까? PHP가 아직 호출되지 않은 것처럼 보입니다. 나는이 질문을 재개해야한다고 생각한다. – PiTheNumber

답변

0

strace 출력에서 ​​파일 포인터 번호 7을 기다리는 것처럼 보입니다. 당신이이 read 호출하기 전에 어딘가에

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

같은 라인을 보면 어떤 파일을 찾을 수 있습니다.

+0

감사합니다.나는'ls -la/proc/3069/fd/7'을 사용했지만 파이프는 읽기 파일이 아닙니다. 마지막 업데이트를 보지만'open()'을 찾을 것입니다. 파이프에 대해 뭔가를 말해 줄 수 있습니다. – PiTheNumber