生产系统中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. 应用系统运行慢的情况
通过top命令查看TongWeb的java进程占用CPU是否高。若CPU高则通过查看线程占用CPU命令来分析。
若CPU使用不高,TongWeb控制台访问正常,但应用所有页面访问都慢或不能访问应用端口,这种情况通常是应用的http线程池大部分出现阻塞导致的。通过netstat、jstack或kill -3分析。
若CPU使用不高,TongWeb控制台访问正常,但应用跟数据库无关的页面访问正常,跟数据库有关的页面访问慢。查看日志和数据源配置。
TongWeb控制台和应用访部都很慢,日志中有“OutOfMemoryError”或通过jstat命令查看内存占用过高。通过GC日志、jmap命令分析内存。
"大部分业务正常,只有个别业务慢", 这是应用该部分业务的问题,与中间件无关。推荐TongAPM、阿里开源的 java 诊断工具-Arthas,可做源码级性能分析。
6.重启TongWeb后仍存在问题
重启TongWeb后仍存在问题,应用的某些功能还无法使用。这种情况需根据日志分析具体的原因了,注意收集当时的日志信息。这时问题可能与TongWeb无关,有可能是数据库、网络、更改过应用等方面原因造成的问题。如:访问静态页面无问题,但访问与数据库相关的JSP页面时有问题,则可能是数据库连接或数据库SQL有问题了。
7.低级误操作问题
- 操作系统、数据库、应用、TongWeb、网络不做基本优化,直接上线。
- linux下采用不同用户启动TongWeb导致文件权限问题。需采用 chown -R [TongWeb用户]:[TongWeb组] [TongWeb目录] 命令改变TongWeb目录文件属主。
- 前台启动造成停止,需采用nohup后台启动TongWeb,如:nohup ./startserver.sh & 或 startservernohup.sh 、startd.sh 。
- 系统运行过程中更改应用、TongWeb配置导致访问中断。
- 每次重部应用、修改数据源配置后,需要重启TongWeb,否则容易导致问题。
按上述情况进行初步的日志收集,并在恢复系统后,分析日志并找相关人员了解如下情况:
- 系统何时开始出现问题的,以前是否一直有问题,出现问题的频率和时间。
- 嘱咐现场维护人员,再出现此问题时该收集哪方面的信息。
- 最近系统做过哪方面的修改,如:数据库、网络、应用包更新、操作系统的参数修改等等。
协助处理
若自己短时间内无法解决问题,寻求同事协助处理,要点:
- 说明用户环境、产品版本、准确的描述问题的现象,收集全相应的日志。便于同事快速了解问题。
- 涉密环境无法提供日志时,要能判断需要谁现场协助解决。
错误的沟通方式:
- 群里发一个日志,然后就什么话也不说了,不说项目,不说问题。让别人猜吗?
- 描述问题时直接转发用户的聊天记录、聊天截图,不会总结。
- 提供日志给不到主要信息,日志拍照水平差。
- 沟通碎片化,不能一次把事情说清楚,反复的问。
- 不反馈原始的需求和问题,直接让别人分析自己认为的问题点,容易把人带偏。
- 有问题不反馈,或说不知道找谁。
- 表述不清问题,只说用户很着急,用户说是xx问题。
