新項目白天發版部署到生產環境後,到了晚上,你們都發現了一種煩人的狀況:oms後臺系統,點擊其中幾個功能頁,頁面加載變得很是慢,一直轉圈圈。前端
爲何呢?查看生產的log,發現oms服務端每一個接口在調用的開始處記日誌了。而在走完接口邏輯返回時,並無打印日誌。咱們就無從知道接口的duration了。瀏覽器
究竟是不是服務端的接口慢呢?用Postman模擬請求,發現很快。 服務器
這時,小組裏另外一個同事說oms並不慢,還錄製了屏幕的操做(新冠肺炎疫情下,你們在家辦公)發到qq討論組裏。測試
而咱們幾個在點擊的時候,的確是慢。ui
後來才發現,原來是有的頁面快,有的頁面慢,而慢的那幾個頁面呢,是圖片加載的問題。———開發這幾個頁面的小哥們也發現了————那幾個頁面查詢結果裏每一行都要顯示兩張證件照片,經過F2瀏覽器調試器發現,加載每一張照片耗時都超長,由於這些圖片加載慢致使了整個頁面響應也超級超級慢。url
【那到底爲何加載圖片慢呢?】3d
這些圖片在生產的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的響應。blog
那麼,跟前面的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
結束!