點擊▲關注 “爪哇筆記” 給公衆號標星置頂
更多精彩 第一時間直達
測試環境上線新功能,在測試的時候有規律的發現頁面加載數據巨慢,查看網絡請求,發現後端請求時間超長,喫精的達到了5秒+++以上。這種問題還頻繁出現,遙想開發的時候並沒有出現過這種問題。
一開始以爲後端數據庫查詢的問題,畢竟關聯了好幾張表,把SQL
拷貝出來執行了一下,然而也就幾十毫秒而已,不死心又在後臺打印了一下執行時間,一切正常。
又一想是不是攔截器中相關校驗的問題,再一次證明我的想法是錯誤的。
既然後端沒問題,那麼問題可能會出現在代理服務器上,測試環境架設了Nginx
代理服務。檢查了一下配置文件,臥槽!!!果然是自己給自己挖下的坑,之前測試負載均衡的時候啓動了兩個服務,如下:
upstream backserver {
server 192.168.1.180:8080;
server 192.168.1.190:8080;
}
然鵝,測試完之後把其中一個服務給掐斷了。
那麼爲什麼是偶爾出現呢?步調還這麼一致!這就要撩一下Nginx
負載均衡檢查模塊中的max_fails
和fail_timeout
這兩個參數了,默認情況下:
max_fails=1 fail_timeout=10s
翻譯過來就是:在單位週期爲fail_timeout
設置的時間中達到max_fails
次數,在這個週期次數內,如果後端同一個節點不可用,那麼接將把節點標記爲不可用,並等待下一個週期再一次去請求,判斷是否連接是否成功。如果成功,將恢復之前的輪詢方式,如果不可用將在下一個週期再試一次。
把掐斷的服務地址註釋掉,重啓下Nginx
就可以了。
切記,生產中一定要搭配服務運行監控通知套件,以便第一時間發現並處理問題。