新項目白天發版部署到生產環境後,到了晚上,大家都發現了一種煩人的情況:oms後臺系統,點擊其中幾個功能頁,頁面載入變得非常慢,一直轉圈圈。 為什麼呢?查看生產的log,發現oms服務端每個介面在調用的開始處記日誌了。而在走完介面邏輯返回時,並沒有列印日誌。我們就無從知道介面的duration了。 到 ...
新項目白天發版部署到生產環境後,到了晚上,大家都發現了一種煩人的情況:oms後臺系統,點擊其中幾個功能頁,頁面載入變得非常慢,一直轉圈圈。
為什麼呢?查看生產的log,發現oms服務端每個介面在調用的開始處記日誌了。而在走完介面邏輯返回時,並沒有列印日誌。我們就無從知道介面的duration了。
到底是不是服務端的介面慢呢?用Postman模擬請求,發現很快。
這時,小組裡另一個同事說oms並不慢,還錄製了屏幕的操作(新冠肺炎疫情下,大家在家辦公)發到qq討論組裡。
而我們幾個在點擊的時候,的確是慢。
後來才發現,原來是有的頁面快,有的頁面慢,而慢的那幾個頁面呢,是圖片載入的問題。———開發這幾個頁面的小哥們也發現了————那幾個頁面查詢結果里每一行都要顯示兩張證件照片,通過F2瀏覽器調試器發現,載入每一張照片耗時都超長,因為這些圖片載入慢導致了整個頁面響應也超級超級慢。
【那到底為什麼載入圖片慢呢?】
這些圖片在生產的fastdfs伺服器都不存在的,因為生產db的數據是從測試db初始化複製過來的。ie里請求如下fastdfs圖片鏈接:http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/0C/wKgoVF5hucKAQxHcAABJEO8Ld0Y92.JPEG, 瀏覽器轉了半天,結果是 502 Bad Gateway ;ie里請求如下fastdfs圖片鏈接:http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/0B/wKgoVF5hpvmAPXpBAABWI5BcW0Y60.JPEG, 瀏覽器轉了半天,結果是 504 Gateway Time-out 。
然而,我們通過前端上傳一張圖片到fastdfs伺服器,這時,在ie里訪問這個圖片鏈接 http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/02/CgAC3V5iPMaAD1c-AAAUQnWiKAg69.JPEG ,瀏覽器響應很快。
那麼,難道圖片不存在,響應就會很慢嗎?修改上面那張已存在的圖片的名字,比如改成 http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/02/gAC3V5iPMaAD1c-AAAUQnWiKAg.JPEG ,雖然圖片也不存在,但是很快就能收到404的響應。
那麼,跟前面的fastdfs路徑有關係嗎?來回調換,也沒什麼規律。
不懂為什麼那些原本不存在的照片那麼慢!想知道原因,得分析fastdfs源碼了吧,也許跟Nginx配置有關係。
附上以下情況:
-- 1. 原本在fastdfs上不存在的。響應碼 50x
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/0C/wKgoVF5hucKAQxHcAABJEO8Ld0Y92.JPEG
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/0B/wKgoVF5hpvmAPXpBAABWI5BcW0Y60.JPEG
-- 2. 新上傳到fastdfs上的
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/02/CgAC3V5iPMaAD1c-AAAUQnWiKAg69.JPEG
-- 3. 基於上面兩種,拼出來的下麵的url
-- 3.1 很快響應400 Bad Request
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/02/gAC3V5iPMaAD1c-AAAUQnWiKAg.JPEG
-- 3.2 響應很慢 502 Bad Gateway
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/02/wKgoVF5hucKAQxHcAABJEO8Ld0Y92.JPEG
-- 3.3 很快響應404
http://oms.boss.shenbianhui.cn/fimage/group1/M00/00/0C/CgAC3V5iPMaAD1c-AAAUQnWiKAg69.JPEG
結束!