nginx因POST请求体过⼤导致500错误问题排查记录
⼀. 问题
今天同事遇到⼀个问题同⼀个保存接⼝操作,第⼀个可以保存成功(请求体很⼩),第⼆个提⽰“500 Internal Server Error”(请求体⽐较⼤)。
⼆. 初步排查
刚开始以为是接⼝本⾝的问题,如是去接⼝所在服务器查看⽇志,但惊奇的是接⼝请求时服务⽇志没有任何⽇志输出。如是猜测可能是统⼀⽹关(gateway)的问题,遂打开统⼀⽹关的⽇志(记录了所有接⼝请求⽇志,接⼝路径,⼊参,出参),出乎意料的是统⼀⽹关也没有任何⽇志输出。继续往上层定位,查看nginx的error.log和access.log⽇志,但是还是没有任何错误⽇志输出,连正常⽇志都没有。
三. 深⼊分析
到这⾥已经超出我的正常理解范围了,但是通过问题现象分析应该是和请求体⼤⼩有关,且通过初步排查可以确定与nginx有关,如是通过"nginx"、“post”、"请求体过⼤"等关键词进⾏百度。通过百度了解到nginx在处理请求时,当请求体⼩于
nginx鉴权网关
client_body_buffer_size时会直接在内存中处理,当请求体⼤于client_body_buffer_size(默认16kb)时会将请求体写⼊临时⽂件。
⿁使神差的执⾏了⼀个df -h命令,发现nginx所在⽬录使⽤率已经达到100%,如是推断由于⽬录已经满了,导致nginx⽆法写⼊临时⽂件导致500错误。
四. 解决问题
通过du -h --max-depth=1命令逐步排查,发现是nacos⽇志过⼤,导致磁盘被占满。主要是access_log⽇志⽂件太多,且每个⽂件达到百兆以上。删除nacos⽇志⽂件后,接⼝请求全部正常。
五. nacos⽇志配置
1. conf/application.properties
# nacos检查升级⽇志,该配置默认为true, 可将它改为false
2. l
可将logback中的⼀些⽇志级别调成error或warn减少不必要的⽇志打印
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论