今天遇到一个图形验证码加载很慢的问题,大概耗时有200~500毫秒左右。
根据追踪,图形验证码图片生成耗时0~1毫秒,而response.getOutputStream.write()将图片写入前台页面的时候响应很慢,耗费了200~500毫秒。
最后经过排除发现,只要不动httpsession,响应正常很快,耗时5~30毫秒之间。这时定位到httpsession。
经过进一步排查,工程使用了redis做session共享,所以每一次session动作都要跟redis同步,导致响应多慢一步。
当然,redis做session共享不至于慢几百毫秒,其原因是因为应用服务在我本地启动,redis链接的是外网服务器。
将redis地址改为本地或内网地址后做了下测试,响应正常,很快5~50毫秒之间。