檢視了html源**,發現html源**被截斷了。因此,導致網頁內容顯示不全。
之後的整個分析過程繞了一大圈,即是tcpdump,又是用tcpflow進行網路包分析。最後,還是從nginx的錯誤日誌中發現了端倪。
在nginx的錯誤日誌中發現如下資訊:
2016/03/29
06:08:10 [crit] 7042#0: *3 open() "/var/lib/nginx/tmp/fastcgi/4/00/0000000004" failed (13: permission denied) while reading upstream, client: 117.72
.224
.240, server: www.bo56.com, request: "get /wp-admin/post-new.php http/1.1", upstream: "fastcgi:", host: "www.bo56.com", referrer: ""
錯誤日誌顯示, permission denied,說明沒許可權。把這個目錄設定為 775 許可權問題解決。網頁也就正常顯示了。
如果php返回的內容過大,nginx會把一部分內容先存到文字檔案中,等全部內容都接收完畢後,再一併發送到客戶端。
在使用tcpdump抓包分析的時候,發現nginx程序主動向php程序傳送了reset標識,終止通訊。可能,nginx發現許可權有問題,就關閉了連線。只是猜測,沒有驗證。圖如下:
tcpdump_reset2
使用tcpdump抓包教程
這次算是一次比較失敗的問題排查。本來可以幾分鐘解決的事情,卻花費了很長的時間。
切記,遇到問題,不要盲目的不斷嘗試。首先,要看日誌查詢線索。利用掌握的知識合理的推理分析。
原文
PHP返回內容過長時被nginx截斷的解決辦法
檢視了html源 發現html源 被截斷了。因此,導致網頁內容顯示不全。之後的整個分析過程繞了一大圈,即是tcpdump,又是用tcpflow進行網路包分析。最後,還是從nginx的錯誤日誌中發現了端倪。在nginx的錯誤日誌中發現如下資訊 2016 03 29 06 08 10 crit 7042...
PHP返回內容過長時被nginx截斷的解決辦法
在一次伺服器遷移後,發現原來的一些介面使用curl請求資料返回不全導致系統報錯,報錯資訊 curl error 18 transfer closed with outstanding read data remaining s truncated 發現返回的資料被截斷了。因此,導致系統異常。之後的整...
php處理時間過長時返回空資料
今天做專案的時候遇到乙個問題,我要實現對節點當前狀態的檢測,伺服器數量較少時沒有問題,伺服器較多時無法正常返回。php預設30s超時會引起這個問題 解決方法如下 1.在php.ini裡面設定 max execution time 1800 2.通過php的ini set 函式設定 ini set m...