2014-05-10 2 views
2

php-fpm + nginx + mongodb 스택이 잘 실행되고 있습니다. 불행히도 페이지로드를 취소하면 영원히 나를 잠급니다. 스크립트에 시간 초과가 설정되었지만 cmd -를 통해 스크립트의 실행을 취소 할 때 문제가 발생합니다. 즉각적으로 취소하지 않고 대신 무한 수면 루프로 들어갑니다.영원히 기다리는 PHP-FPM

이것은 짧은 실행 시간에도 불구하고 여러 시간 동안 서버를 몇 초 동안 반복해서 자고 있음을 의미합니다. 그것은 지금 내 strace를에 을하고있어 모든 것을하는 것은 이것이다 :

epoll_wait(9, {}, 1, 1000)    = 0 
epoll_wait(9, {}, 1, 1000)    = 0 
epoll_wait(9, {}, 1, 1000)    = 0 
epoll_wait(9, {}, 1, 1000)    = 0 
epoll_wait(9, {}, 1, 1000)    = 0 

앞서 내가 다시 시작하는 대신 전에이 일을했다 :

nanosleep({0, 10000000}, NULL)   = 0 
nanosleep({0, 10000000}, NULL)   = 0 
nanosleep({0, 10000000}, NULL)   = 0 
nanosleep({0, 10000000}, NULL)   = 0 
nanosleep({0, 10000000}, NULL)   = 0 

나는 어떤 결과 문제를 여러 번 수정했습니다. 어떤 아이디어?

또한 휴면 기능은 스크립트 실행 시간 초과에 포함되지 않으므로 재시작 할 때까지 영원히 계속됩니다.

답변

1

이 질문에 대한 정보를 잊어 버렸지만 문제가 해결되었습니다. ParallelCurl library 속보였습니다. 다운로드가 완료되었는지 확인하기 위해 nanosleep을 사용하고 있었고, nanosleep은 스크립트가 제한 시간 한도에 도달하는 것을 막았습니다. nanosleep의 인스턴스를 sleep로 바꾸면이 문제가 해결됩니다.

관련 문제