生产系统中TongWeb故障应急处理办法
本文档主要说明在上线正式运行的系统中,若TongWeb或部署在TongWeb上的应用出现问题时,现场维护人员或在现场的TongWeb支持人员应当采取的处理步骤。
工作基本原则:
- 任何操作必须经过项目相关负责人同意后进行,禁止在未允许的情况下做任何操作,否则后果自负。
- 在重启TongWeb前,需花费几分钟收集相关日志,切记盲目重启TongWeb导致无法收集日志,事后无法分析问题。
- 以尽快恢复生产系统,不影响用户使用为基本原则。
关于TongWeb进程相关概念的一些说明,请注意在说明时不要混淆:
- “TongWeb宕机”的含义:查看TongWeb的Java进程不存在,TongWeb已经因非人为运行stopserver而停止,此种情况称之为TongWeb宕机。
- “TongWeb假死”的含义:查看TongWeb的Java进程还在,但TongWeb的控制台和应用都不能访问或访问很慢,此种情况称之为TongWeb进程假死。
- “应用访问异常”的含义:查看TongWeb的Java进程还在,TongWeb的控制台也能正常访问,但应用访问不正常或有错误。此种情况称之为“应用访问异常”。
不同情况的处理步骤:
1. license过期情况
-
TongWeb的license过期后TongWeb自动停止,请尽快联系东方通销售人员索要TongWeb产品的license,TongWeb支持人员无权发正式产品license或可以提供临时license。
-
应用的license过期,请尽快联系应用开发商索要产品的license。
-
SSL证书过期,请尽快联系证书公司索要新的证书。
2. TongWeb已经停止,Java进程已经不存在的情况
- 立刻启动TongWeb,恢复系统
- 备份出bin、conf下配置文件,并记录这些文件时间,以判断最后一次应用的配置修改时间。
- 打包保留TongWeb的logs目录日志和bin下的nohup.out文件,并记录这些文件的时间,以判断TongWeb是何时停止的。
- 查看TongWeb的bin目录下有没有生成javacore、hs、heapdump开头的文件,并收集这些文件。
3. 应用系统某些功能点无法使用
某些项目在上线前会有测试不充分的情况,甚至存在移植到TongWeb后就直接上线的情况,所以可能存在上线后,功能都不正常的情况。
应用系统有的功能点能用,有的不能用。出现这种情况注意查看TongWeb的日志是否存在异常信息,肯定是因为应用有异常才不能用的。若日志中无任何异常信息,则需要在应用中加入调试信息或打开应用的DEBUG日志,重部署应用或重启TongWeb后,再收集异常日志分析问题。
4. TongWeb的Java进程假死,且应用和TongWeb控制台都不能访问了
- 存在个别情况下,Java进程还在,但应用和TongWeb控制台都不能访问,这时可通过jstack、jmap、jstat、netstat、lsof等命令生成堆栈日志、端口信息、GC日志以备分析,然后再重启TongWeb。
注:若TongWeb为集群环境,其中一个TongWeb出现问题不影响生产系统运行,建议保留有问题的环境,以供分析。
5. 应用系统运行慢的情况
- 查看TongWeb的Java进程占用CPU是否很高,若CPU很高则记录线程占用的CPU情况,并记录下线程占用CPU的信息。
- 当应用访问慢时,访问一下TongWeb的控制台查看是否也慢,若访问控制台也慢,则有可能是因为CPU占用高,需按上一条方法处理。也可能是Java的内存出现问题,需查看TongWeb日志有没有内存溢出错误或GC日志中full gc占用过高,然后通过jmap生成内存镜像文件以备分析。
- 若访问TongWeb的控制台不慢,CPU占用也不高,只是访问应用慢。则可能是TongWeb的线程池或数据源的连接池占满。这时需通过jstack生成堆栈日志,并通过TongWeb控制台查看TongWeb的线程数、连接池的使用数。若为开源连接池,则通过netstat或通过数据库命令查看连接数,并记录下来,以备分析。
- 收集完以上信息后,根据维护负责人员意见,看是否需要重启TongWeb快速恢复生产系统。重启前需要开启GC日志、数据源泄露日志、慢SQL日志、线程监控和数据源监控以再出现问题时,有分析数据。
6. 重启TongWeb后仍存在问题
重启TongWeb后仍存在问题,应用的某些功能还无法使用。这种情况需根据日志分析具体的原因了,注意收集当时的日志信息。这时问题可能与TongWeb无关,有可能是数据库、网络、更改过应用等方面原因造成的问题。如:访问静态页面无问题,但访问与数据库相关的JSP页面时有问题,则可能是数据库连接或数据库SQL有问题了。
按上述情况进行初步的日志收集,并在恢复系统后,分析日志并找相关人员了解如下情况:
- 系统何时开始出现问题的,以前是否一直有问题,出现问题的频率和时间。
- 嘱咐现场维护人员,再出现此问题时该收集哪方面的信息。
- 最近系统做过哪方面的修改,如:数据库、网络、应用包更新、操作系统的参数修改等等。