?一、背景
測試人員突然向我反饋,說線上的接口訪問不了,返回404了。確認問題確實存在,在查找原因的過程中接口恢復正常。感覺這個問題還是挺有意思,所以記錄下來。
?二、404狀態(tài)碼
404 Not Found,一般情況都是指請求服務器上沒有的資源
三、解決問題的過程
1.首先想到的是,服務器上的接口文件沒了,登進去查看文件是正常的
2.考慮是否是nginx的配置更改導致訪問不到,查看了下也是正常
3.接口又恢復正常,考慮是不是公司網(wǎng)絡調(diào)整導致的,問了問運維網(wǎng)絡也沒有任何調(diào)整
4.查看nginx上面的日志發(fā)現(xiàn)確實請求到了服務器上,并且返回了404
查到這里之后就隱約感覺到可能要漲見識了
5.接下來查看了nginx的錯誤日志(error.log),看到頻繁報以下的報錯
18522#0: *5382085 recv() failed (104: Connection reset by peer) while reading response header from upstream
6.根據(jù)這個報錯查找網(wǎng)上資料,說是由于php的運行時間超過php-fpm設置的超時時間(request_terminate_timeout)會提示這個錯誤
7.將request_terminate_timeout設置值增大,重啟php-fpm,驗證問題解決
四、寫文檔真有用
1.之前的解決過程就是如第三步所示,但是在記錄問題的時候突然思考這種情況不應該報502的錯誤么......
2.在測試環(huán)境進行驗證下,寫個接口,里面sleep(50),在瀏覽器中訪問下,果然如預期返回了502......
3. ..........
4.繼續(xù)查找之前的error.log日志,發(fā)現(xiàn)還有以下的報錯
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.在測試環(huán)境驗證了下,出現(xiàn)了預期的404,大功告成。