關於Nginx,我犯了一個傻逼的錯誤

點擊▲關注 “爪哇筆記”   給公衆號標星置頂

更多精彩 第一時間直達

測試環境上線新功能,在測試的時候有規律的發現頁面加載數據巨慢,查看網絡請求,發現後端請求時間超長,喫精的達到了5秒+++以上。這種問題還頻繁出現,遙想開發的時候並沒有出現過這種問題。

一開始以爲後端數據庫查詢的問題,畢竟關聯了好幾張表,把SQL拷貝出來執行了一下,然而也就幾十毫秒而已,不死心又在後臺打印了一下執行時間,一切正常。

又一想是不是攔截器中相關校驗的問題,再一次證明我的想法是錯誤的。

既然後端沒問題,那麼問題可能會出現在代理服務器上,測試環境架設了Nginx代理服務。檢查了一下配置文件,臥槽!!!果然是自己給自己挖下的坑,之前測試負載均衡的時候啓動了兩個服務,如下:

upstream backserver {
    server 192.168.1.180:8080;
    server 192.168.1.190:8080;
}

然鵝,測試完之後把其中一個服務給掐斷了。

那麼爲什麼是偶爾出現呢?步調還這麼一致!這就要撩一下Nginx負載均衡檢查模塊中的max_failsfail_timeout這兩個參數了,默認情況下:

max_fails=1 fail_timeout=10s

譯過來就是:在單位週期爲fail_timeout設置的時間中達到max_fails次數,在這個週期次數內,如果後端同一個節點不可用,那麼接將把節點標記爲不可用,並等待下一個週期再一次去請求,判斷是否連接是否成功。如果成功,將恢復之前的輪詢方式,如果不可用將在下一個週期再試一次。

把掐斷的服務地址註釋掉,重啓下Nginx就可以了。

切記,生產中一定要搭配服務運行監控通知套件,以便第一時間發現並處理問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章