2012-03-10 3 views
2

X가 호출 될 때마다 HTTP 500 (내부 서버 오류)이 발생합니다. 나는 어떤 유형의 높은 CPU 부하 (약 5 %)를 가지고 있지 않다. 그것이 일어날 때 나는 로그에서이 오류를 볼 수 있습니다업스트림을 읽는 중 readv()가 실패했습니다 (104 : 피어가 연결 재설정 됨).

/var/log/nginx/error.log

readv() failed (104: Connection reset by peer) while reading upstream 

에서에서 /var/log/php5-fpm.log

Mar 10 07:21:57.740683 [WARNING] [pool www] child 9413 exited with code 1 after 1117.708602 seconds from start 
Mar 10 07:21:57.743140 [NOTICE] [pool www] child 9925 started 

어떤 일이 일어 났는지 그리고이 상황을 해결하는 방법을 아는 사람이 있습니까?

+0

FPM 풀 구성에서'catch_workers_output'을 사용하고 있습니까? 또한 : http://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log – parhamr

답변

2

저는 최근에 제가 관리하는 서버에서 같은 문제가있었습니다.

나는 이걸 알아 내기 전에 오랜 시간이 걸렸다. 적어도 2 주일이 걸렸다. 그리고 blitz.io에서 낭비되는 날을 보냈다.

때때로 사이트의 모든 웹 페이지가 임의로 끊어집니다. 첫 번째 클릭이 효과가 없거나 페이지의 일부만로드하거나 가장 일반적으로 배경 만 볼 수 있습니다. 시간의 약 5 %가 발생하는 것으로 보입니다.

이 문제는 더 높은 이탈률과 물론 광고 비용 낭비에 기여했기 때문에 특히 문제가있었습니다.

정확한 시간 동안 문제가 발생했을 때, nginx 로그는 "readv()가 실패했습니다 (104 : 상대방이 연결을 재설정 함) 업스트림을 읽는 중"이라는 것을 나타 냈습니다. 이는 단순히 PHP에서 문제가 발생했음을 의미합니다. Google 검색은 내 문제에 적용되는이 문제에 대한 유용한 해결책을 밝히지 않았습니다. 그럼에도 불구하고, PHP를 비난하는 것은 나에게 많은 의미가 없었습니다. 왜냐하면 PHP가 이미 브라우저에 결과물을 보냈을 것 같았 기 때문입니다 (우리는 결국 사이트 배경을 얻을 것입니다).

Google 크롬에서이 메시지가 항상 "오류 337 (net :: ERR_SPDY_PROTOCOL_ERROR)"과 함께 표시 되었기 때문에 Google 크롬에서 SPDY 지원이 중단되었는지 궁금합니다 (일부 Google 토론은 2011 년에도 Google 서버에서 비슷한 문제가 있었던 것으로 보입니다), 또는 nginx의 제 버전이 SPDY 지원을 망가 뜨린 경우. nginx를 SPDY 버그 수정 버전으로 업그레이드 한 것은 도움이되지 않았습니다. Chrome 문제에 대해 읽은 모든 내용은 2011 년이 기간에만 Google 서버와 관련된 문제 일 뿐이라고 제안했습니다.

따라서 6 시간을 보내고 난 후 내 서버에서 nginx, PHP 및 TCP 시간 초과를 사용하여 포기할 준비가되었습니다.

과거에 PHP 5.5의 Zend Opcache 및 PayPal의 Merchant SDK에 문제가 있었기 때문에 Zend Opcache도 이와 관련이 있는지 궁금했습니다. 마지막으로 나는 Zend Opcache를 완전히 비활성화 시키려고했지만 놀랍게도 문제를 재현 할 수 없음을 발견했습니다.

나는 Opcache 문서를 통해 내가 켜 놓았던 다른 구성 지시어에 대한 언급을보기를 원하거나 읽지 않았기 때문에이 문제에 기여할 수 있습니다. XCache로 돌아가고 싶지 않았습니다. 결국 Zend는 거의 40 % 더 빨라졌습니다. 마지막으로 나는 php.ini 파일이 좁혀 :

opcache.fast_shutdown = 1 

내가, 그리고 젠드 Opcache로 출발하는 것은 더 이상 설정되지 어떤 ERR_SPDY_PROTOCOL_ERRORs 또는 임의 연결 방울을 한 것으로 돌았 다. 고맙게도 fast_shutdown을 비활성화해도 성능에 큰 영향을 미치지 않았습니다 (아마도 1ms가 추가되었을 것입니다).

0

데비안 7 (Wheezy)에서 데비안 8 (Jessie)으로 서버를 업그레이드 한 후에도 동일한 문제가 발생했습니다. 데비안 7에서는 opcode 캐시로 XCache를 사용했습니다. 데비안 8 및 PHP 5.6으로 업그레이드 할 때 Zend Opcode Cache도 설치 및 활성화되었습니다. 두 opcode 캐시는 전쟁에갔습니다.

당신은 당신이 하나의 연산 코드 캐시 명령 줄에서

php -v 

을 실행하여 실행보다 더 가지고 있는지 확인할 수 있습니다.

나는

apt-get remove php5-xcache --purge 

를 사용하여 PHP5-XCache를 패키지를 제거하고 모든 것을 다시 일하기 시작했다.

관련 문제