zoukankan      html  css  js  c++  java
  • 系统部分模块可以使用,部分模块不能使用问题分析解决

    问题现象:

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

    问题推测:

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

    问题分析:

      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%,再访问系统,一切正常!问题得到解决!

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

    问题总结:

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

  • 相关阅读:
    项目开发日志——第三篇
    项目开发日志——第二篇
    项目开发日志——第一篇
    实时控制软件设计第四周作业
    实时控制软件设计第三周作业
    实时控制软件设计第二周作业
    关于开放式CNC系统实时软件控制系统的一些简单分析
    初学者的卡尔曼滤波——扩展卡尔曼滤波(一)
    C++_Eigen函数库用法笔记——The Array class and Coefficient-wise operations
    C++_Eigen函数库用法笔记——Block Operations
  • 原文地址:https://www.cnblogs.com/leanfish/p/9121020.html
Copyright © 2011-2022 走看看