服务器异常排查步骤

文章目录

  • 服务器异常排查步骤
    • 问题说明
    • 前置
    • 当异常发生时
      • 根据问题1
      • 根据问题2
      • 根据问题3
      • 情况1
      • 情况2
      • 情况3

服务器异常排查步骤

问题说明

朋友是兼职程序员,接手了一个科普网站的项目,在上线的时候遇到了80端口应用启动一定时间(两小时)后不能正常访问的现象,启动时一切正常。

由于客户的服务器不能直接访问,无法直接排查问题,所以写了个简单的步骤给朋友参考。写完之后发现这个排查思路其实是挺普遍的排查思路,遇到应用和服务器问题时都可以参考这个步骤逐个环节去排查问题,当然,如果问题相对复杂,可能还是需要上手查看更多的内容才能确认,但是排查相对简单的问题或者给萌新一个解决问题的思路,这个步骤还是有一点参考价值的,所以记录一下。

前置

使用命令启动服务,确保应用日志可以正常打印

当异常发生时

使用命令tail -f log.file(日志开启滚动显示模式,,命令行不断显示最新产生的日志
按住enter,直到当前屏幕清空(区分最新的日志

在浏览器访问网页,查看此时是否有后台日志(需要了解的问题1),观察前端浏览器给出的反应(需要了解的问题2,404、500、无响应)

根据问题1

如果后台没有日志,在另一个命令行页面执行命令查看端口是否执行: ./run.sh status(正在运行:dzdckp-latest.jar running,Pid is XXXXX,已经停止:dzdckp-latest.jar not running(需要了解的问题3)

根据问题2

如果浏览器显示无响应,那么推测网络中断或者后台服务异常,如果显示404、500或者其他状态码,证明当前应用正常,但是无法跳转到正确的页面,记录问题2的情况

根据问题3

如果应用正在运行,观察日志是否有日志输出,如果有(情况1),根据输出的内容判断;如果没有,判断网络中断,导致请求不能被正常解析(情况2)

如果应用没有运行,推测服务异常关闭,可能由于应用自身的问题或者服务器上的配置导致当前应用的异常(情况3)

情况1

应用正在运行而无法接受外部访问,首先尝试确认是否为网络异常。从当前服务器尝试访问当前应用端口:

  • ping xx.xx.x.x (将浏览器的地址贴过来),如果有数据,证明当前服务器网络可访问
  • telnet xx.xx.xx.xx 80 如果正常,证明当前端口正常开放
  • curl xx.xx.xx.xx:80 如果输出的是网页信息,证明服务正常

从另一台服务器重复上述操作,再次确认外部网络-当前服务器的网络情况

情况2

尝试确认是否当前服务器和服务器端口到外部网络的通信中断

  • curl www.baidu.com 成功证明当前服务器的网络通信正常

如果情况1和情况2的验证情况都正常,则证明当前服务器的网络没有发生异常

情况3

应用异常关闭,首先查看关闭前有无错误日志

  • 日志文件可以下载下来发给我

如果以上都没有发现问题,继续尝试方向为:

  • 修改启动命令增加JVM参数和JVM日志打印,捕捉系统崩溃时的JVM情况
  • 增加定时任务脚本检测任务的运行情况,每5秒左右执行一次,如果发现关闭则立刻重启,或者每小时定时重启任务(可以临时解决问题,但是重启可能会导致需要重新登陆的问题)
  • 对服务器配置的详细排查,应用情况、定时任务情况,网络端口配置等

你可能感兴趣的:(通用知识,JAVA基础)