零、背景
我的一个java应用代码,部署到了多个域名。在某个域名(访问量较小)下,上传文件的操作忽然失败了,其它域名(访问量较大)则正常。而后台nginx、应用server均没有错误日志,前端却直接被302跳转。
现象诡异, 记录解决的过程如下:
一、收到用户反馈
用户反馈工单,新加坡的线上环境,导入实验失败。
二、问题重现
我们去新加坡的线上环境,发现上传文件失败,而其它操作创建模板、查看状态等均正常。
同样的操作,在访问量较大的域名下,验证正常。
同样的操作,在新加坡的预发环境(新部署的一台机器)也正常。
即:这个问题可以在访问量小的域名可以重现,而访问量大的、新的域名下,均无法重现。
三、排查
3.1、前端排查
在新加坡线上环境,上传实验文件, 打开浏览器控制台,的确看到请求被302跳转了。
用同一套代码,重新部署一台服务,却运行正常。
查看后端代码,可以跳转的情况只有一个:前端请求参数中没有项目id,会跳走。代码示意如下:
String projectId = request.getParameter("projectId");
if (StringUtils.isBlank(projectId)) {
redirect(re