저는 최근에 제가 관리하는 서버에서 같은 문제가있었습니다.
나는 이걸 알아 내기 전에 오랜 시간이 걸렸다. 적어도 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가 추가되었을 것입니다).
FPM 풀 구성에서'catch_workers_output'을 사용하고 있습니까? 또한 : http://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log – parhamr