今天聊一聊故障的应急处理。

故障应急处理_第1张图片

Web Server日志

²常用web servernginx/sun web server/apache http server/ibm http server ²/opt/IBM/HTTPServer/logs/access.log ² /opt/IBM/HTTPServer/logs/error.log ²/opt/IBM/HTTPServer/Plugins/logs/webserver1/http_plugin.log

²访问日志access.log,记录了所有的接收到请求URL、返回码、返回大小,还可以配置处理的总共花费时间。 

²错误日志error.log,如果请求报错,在这里可以看到更加详细的错误信息。 错误日志plugin.log,如果转发请求日志,在这里可以看到转发到中间件的日志信息。

Web Server常见问题

²默认没有打印处理时间。 

²LogFormat "%h %l %u %t \"%r\" %>s %b" common

²默认只打印一个文件,导致文件太大。 

²CustomLog "| /usr/sbin/rotatelogs /var/logs/access_%Y%m%d.log  86400 480" common

进程日志

故障应急处理_第2张图片

进程日志重定向

²Some.sh  >  standout .log

²Some.sh  1 >  standout .log

²Some.sh  > > standout.log 

²Some.sh  2> standerr.log 

²Some.sh  1> standout.log  2> standerr.log 

²Some.sh  1>standout.log 2>&1 

²Some.sh  1>/dev/null 2>&1 

²Some.sh  <  standin.txt 

²1. 标准输入(stdin) :代码为 0 ,使用 < <<
2. 标准输出(stdout):代码为 1 ,使用 > >>
3. 标准错误输出(stderr):代码为 2 ,使用 2> 2>>

故障应急处理_第3张图片

²1.   java  A_StdOut 

²2.   java  A_StdOut > 1.log  2> 2.log 

²3.   java  A_StdOut  >1.log  2>&1 

²4 .  nohup  java A_StdOut >1.log & 

²5.   nohup  java A_StdOut >1.log 2>&1 &

问题

²问题1:生产服务器突然之间有一台服务器CPU一直增涨到%100,过段时间另外几台也出现。 

²问题2:系统监控到大部分时间是CPU是正常的,但是在某一个时间段,大约10多秒,CPU %90以上并发出了警报。 

²问题3:突然出现出现客户访问服务时,访问不了,报访问超时错误。

故障应急处理_第4张图片

故障应急处理_第5张图片

线程栈

²线程栈信息是非常重要的信息。从线程栈信息中可以看出应用服务行为,也就是可以知道应用正在做什么或正在等待什么。结合应用的日志,可能可以知道哪一个用户正在执行什么交易,并知道执行到哪里。 

²线程栈是应用程序在某一时间的文本表示形式。 

²ibm jdk生成的javacore文件信息更多,包含线程、垃圾回收、JVM运行参数、内存地址、操作系统、生成文件原因等信息。 

²sun/oracle jdk生成的只有线程的信息。

故障应急处理_第6张图片

进程内存

故障应急处理_第7张图片

JVM进程内存

故障应急处理_第8张图片

Gc日志

²gc(Garbage Collection)日志也就是java堆垃圾回收日志。 

²GC日志是一个很重要的信息,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置,或者改进应用程序的对象分配方式。 

²最重要的是很多的应用的内存漏洞是一个缓慢的过程。通过GC日志,可以查看出堆有没有内存漏洞问题。 

²默认情况下,jvm是没有开启gc日志的,可以通过设置JVM参数来开启gc日志。 ²was服务也可以在was控制台设置开启。

Gc日志分析

故障应急处理_第9张图片

Jconsole介绍

故障应急处理_第10张图片

²was数据库连接池监控

故障应急处理_第11张图片

²Wassession监控

故障应急处理_第12张图片

²Wasjava堆监控 

故障应急处理_第13张图片

Tcp/ip状态图

故障应急处理_第14张图片