记一次post发送失败的排查历程
前几天遇到一个问题,同一个请求测试环境可以,生产不好用,报错如下:
由于这边是请求发送到nginx再到tomcat,所以先看看tomcat日志,是不是后台发生了未知异常给终止了。
经过排查发现tomcat根本没有相关日志,说明请求没有进入,所以排除后台的问题。
接下来就想,是不是post太大,超出了tomcat设置的上限?
于是拿出上图里的header和body,分别是1K和405K,确实不小。再看tomcat配置,发现里maxPostSize没有配置,所以默认是2M。抱着不信邪试试看的心态,给配成maxPostSize=-1(注意,tomcat7.0.63及以后版本,不限大小只能配-1,老版本可以配0或-1),发现依然不好使。同理,max-http-header-size我也试了,依然没作用。
说明tomcat没啥问题,这时候心态已经有点浮躁了。
接下来我能想到的只能有一个地方有问题--------那就是nginx。
于是乎我登上nginx服务器,看配置文件,打开日志,疯狂发送请求,惊喜的发现有日志,是500!仿佛发现了曙光,于是我赶紧看了一下nginx配置的请求头和body大小,心想八成是nginx配置少了。
等我一脸柯南破案的表情打开配置文件,发现body配的是10M,完全够用啊。我的天还能是哪里有问题?
后来跟技术老大说了一下这个事儿,他直接让我看nginx的error.log,我心理猛地一惊,咋把这玩意给忘了,赶紧去翻日志,这一眼过去,我肝都颤了。
日志明晃晃的makdir失败,于是我就到服务器上找这个路径,
发现,tmp下根本就没有client_body_tmp这个缓存文件夹。而不知道为啥他没有容错机制,不存在的时候不会主动创建。。。所以我手动创建了一下client_body_tmp就可以了。后来问了下运维人员,不知道啥时候调整了nginx配置文件中这个缓存文件的路径,
才导致这么个问题。thatsall 记录一下希望遇到同样问题的华生能发现这个盲点。
本文地址:https://blog.csdn.net/simleShine/article/details/107331138