今天遇到一個圖形驗證碼加載很慢的問題,大概耗時有200~500毫秒左右。
根據追蹤,圖形驗證碼圖片生成耗時0~1毫秒,而response.getOutputStream.write()將圖片寫入前台頁面的時候響應很慢,耗費了200~500毫秒。
最后經過排除發現,只要不動httpsession,響應正常很快,耗時5~30毫秒之間。這時定位到httpsession。
經過進一步排查,工程使用了redis做session共享,所以每一次session動作都要跟redis同步,導致響應多慢一步。
當然,redis做session共享不至於慢幾百毫秒,其原因是因為應用服務在我本地啟動,redis鏈接的是外網服務器。
將redis地址改為本地或內網地址后做了下測試,響應正常,很快5~50毫秒之間。