后台发布文章报500错误
问题现象
公司搭建的用来编辑文章的后台在发布文章时,发现字数比较多时,文章发布失败,报错500,删除一些字数后,发布正常。但是同样的操作,放在测试环境确能正常发布出去。
数据流
h5后台编辑文章后上传---->负载均衡---->nginx反向代理---->tomcat---->Java应用程序---->数据库。
问题刚刚出现的时候,首先定位到的就是服务端,500大家都懂,所以运维这块就先对比了下测试环境和生产环境的区别,nginx配置文件,tomcat配置文件,Java代码都一模一样,当初搭建的时候环境就是互相拷贝过来的,然后分析了一下数据库,看是否时因为数据库不支持插入太多的字符,单独测试了一下,可以,排除。所以这个锅就甩到了研发身上,让他们检查是不是生产环境和测试环境的代码有区别,研发同学绞尽脑汁,水深火热的煎熬了数天都没有排查出来到底哪里有问题,这个时候领导开始催促了,运维又和研发绑在一起搞了一天,终于是把这个坑填上了。
会出现上面的问题,多数原因还是因为处理问题的经验不足导致的,后面,我们跳过nginx反代,直接去请求Java的应用程序,发现可以正常上传,这个时候问题就又回到nginx这边了,500是它报的,说明肯定是经过它处理了,经过仔细对比后,发现client_body_temp这个目录的权限对于nginx启动用户没有写入权限。该目录的功能是存放上传数据比较大时,超过nginx缓存区部分的数据,所以如果nginx对它没有写入权限,就报错了。修改目录权限后,问题解决。
总结
遇到问题,一定要一层一层的排除,看到真实的数据反馈,不能因为对比了配置文件等就断定和其没有关系,一定要看日志,看日志,看日志。