介面詭異的404問題記錄

caohaoyu發表於2018-08-16

一、背景

測試人員突然向我反饋,說線上的介面訪問不了,返回404了。確認問題確實存在,在查詢原因的過程中介面恢復正常。感覺這個問題還是挺有意思,所以記錄下來。

二、404狀態碼

404 Not Found,一般情況都是指請求伺服器上沒有的資源

三、解決問題的過程

1.首先想到的是,伺服器上的介面檔案沒了,登進去檢視檔案是正常的
2.考慮是否是nginx的配置更改導致訪問不到,檢視了下也是正常
3.介面又恢復正常,考慮是不是公司網路調整導致的,問了問運維網路也沒有任何調整
4.檢視nginx上面的日誌發現確實請求到了伺服器上,並且返回了404
查到這裡之後就隱約感覺到可能要漲見識了
5.接下來檢視了nginx的錯誤日誌(error.log),看到頻繁報以下的報錯
18522#0: *5382085 recv() failed (104: Connection reset by peer) while reading response header from upstream
6.根據這個報錯查詢網上資料,說是由於php的執行時間超過php-fpm設定的超時時間(request_terminate_timeout)會提示這個錯誤
7.將request_terminate_timeout設定值增大,重啟php-fpm,驗證問題解決
複製程式碼

四、寫文件真有用

1.之前的解決過程就是如第三步所示,但是在記錄問題的時候突然思考這種情況不應該報502的錯誤麼......
2.在測試環境進行驗證下,寫個介面,裡面sleep(50),在瀏覽器中訪問下,果然如預期返回了502......
3. ..........
4.繼續查詢之前的error.log日誌,發現還有以下的報錯
18523#0: *5381683 open() "/var/www/html/50x.html" failed (2: No such file or directory)
5.看了下nginx.conf,找到以下配置
error_page   500 502 503 504  /var/www/html/50x.html;
6.在測試環境驗證了下,出現了預期的404,大功告成。
複製程式碼

相關文章