2012-03-10 52 views
2

我在每次X調用都收到HTTP 500(內部服務器錯誤)。我沒有任何類型的高CPU負載(大約5%)。我可以在日誌中看到這個錯誤,當它發生:獲取500內部服務器錯誤,讀取上游時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 2013-10-31 06:15:41

回答

2

我最近在服務器I admin上遇到了同樣的問題。

花了很長時間,至少2周,浪費了一天的時間在blitz.io之前,我想出了這一個。

偶爾,網站上的任何網頁都會隨機破解。第一次點擊不起作用,它只會加載頁面的一部分,或者最常見的情況是隻有背景可見。它似乎發生在大約5%的時間。

這個問題特別有問題,因爲它導致跳出率更高,當然浪費了廣告費用。

對於問題發生的確切時間,nginx日誌只顯示「readv()失敗(104:連接重置由對等),而讀取上游」,這意味着PHP中出現了問題。谷歌搜索沒有發現適用於我的案例的這個問題的有用解決方案。儘管如此,指責PHP並沒有多大意義,因爲它似乎是在PHP已經將輸出發送到瀏覽器之後發生的(畢竟我們會得到網站背景)。由於此消息總是伴隨着谷歌瀏覽器中的「錯誤337(net :: ERR_SPDY_PROTOCOL_ERROR)」,我想知道Google Chrome中是否可能支持SPDY支持(一些谷歌討論似乎暗示谷歌服務器在2011年遇到了類似的麻煩),或者我的nginx版本破壞了SPDY支持。將nginx升級到具有SPDY錯誤修復的版本並沒有幫助,而且我所讀到的關於Chrome問題的所有信息都表明,這只是Google服務器的一個問題,並且僅在2011年的這段時間。

因此,花費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 

我打開那個掀起,並與Zend Opcache打開,不再有任何ERR_SPDY_PROTOCOL_ERRORs或隨機連接斷開。值得慶幸的是,禁用fast_shutdown對性能沒有任何重大影響(可能增加了1ms)。

0

將服務器從Debian 7(Wheezy)升級到Debian 8(Jessie)後,我遇到了同樣的問題。在Debian 7上,我使用XCache作爲操作碼緩存。升級到Debian 8和PHP 5.6時,Zend Opcode Cache也已安裝並啓用。兩個操作碼緩存發生了戰爭。

您可以檢查看看,如果你有一個以上的碼緩存運行在命令行執行

php -v 

我刪除使用

apt-get remove php5-xcache --purge 

的PHP5-了XCache包裝,一切都開始工作了。

相關問題