瘦鱼-博客

系统部分模块可以使用,部分模块不能使用问题分析解决

问题现象:

  已经上线的系统,现场反馈有些模块点进去界面一直转圈,有些模块点进去正常。

问题推测:

  这个系统因为用户只使用部分模块的功能,一直只关注用户使用的这些模块,其他模块平时不使用,维护和升级根本没有关注。是不是这些模块在升级过程中根本就是不可用的?

问题分析:

  1、远程连接到现场。

    远程到现场,发现部分模块是可以正常使用的。有些模块点进去界面就弹出“网络异常”。按F12,查看浏览器请求返回的是404。这让我进一步相信自己的推测:这些模块在升级中后台去掉了,或者后台修改了,导致根本就不可用。

  2、查看本地源代码。

    项目刚升级不久,本地还有源代码。对比了现场的请求,请求的地址确实是存在的。现场的人不会对后台进行改动的,可以确认这个报错的模块后端是正确的,只能怀疑前端人员做了改动。因为前端是分离的,后端只写接口,前端调用。甚至想到了问前端开发人员,为什么后端接口明明是有的,为什么前端调用报404?但是觉得这样没有道理,把报404的请求地址单独拷贝到浏览器中执行,也是报错的。就是说这个问题和前端是没有关系的。而就是有几个模块的请求拷贝到浏览器中再请求不报错。问题有点扑朔迷离了。

  3、查看日志。

    这个问题日志应该是没有记录的,因为请求根本没有到后台。但是还是抱着试试看的心态,准备查看后端系统日志。

    系统是部署在Linux服务器上。Linux服务器按tab键是可以自动补全路径。但是在服务器上按下tab键,路径没有补全,弹出错误:“No space left on device”。

    开始没有注意到这个重要线索,只是想查看下日志,不关注过程中的其他问题。为了查看日志,就输入了完整的路径。系统是部署到tomcat中,使用tail -f catalina.out查看实时日志,再在界面上点击有问  题的模块,发现没有记录日志,前端还是报错。

  日志确实没有记录,查看日志是不可能了。

  4、回过头再分析。

    问题排查到这里,好像是没有线索了。可以排除是前端问题,应该单独在浏览器中执行请求是不报错的。可以排除后端问题,后端接口是存在的,现场不可能改动。日志没有记录。回顾整个排查过程,唯一的提示信息是:“No space left on device”。磁盘空间不足,应该影响整个系统,但是有些功能又能使用,这个怎么解释?

  还是先看看服务器磁盘情况吧。使用df命令,发现/目录使用率达100%。之前好像也有磁盘满了问题,是tomcat下的catalina.out占用很大空间。

进入到tomcat目录,查看空间情况,发现catalina.out大小为636G!

      使用命令du -sh *|grep G|sort -n

  使用rm catalina.out清理掉了日志,但是df查看磁盘,发现使用率还是100%!难道还没有清理完?系统还是报错!

网上搜索了一下,删除的文件被进程占用,空间还没有释放。catalina.out是tomcat占用的,停掉tomcat,再重新启动。再df查看磁盘,使用率降到了23%,再访问系统,一切正常!问题得到解决!

  另一个问题,为什么有些功能可以使用呢?这个问题因为不能重现问题,没办法进行分析,只能推测调用接口时,可能要创建临时文件,磁盘空间不足,不能创建成功!这个说法很牵强,后续如果问题重现有待研究。

问题总结:

  分析问题中,不能放过任何一个蛛丝马迹。任何小的问题,都可能是分析问题的关键所在!

posted @ 2018-06-01 13:13  瘦鱼  阅读(658)  评论(0编辑  收藏  举报