资源描述
XXXX用户系统健康检验汇报
一、 综述 3
二、 系统环境 3
关键业务系统 3
三、 工作日志 4
四、 系统健康检验具体列表 4
1. 关键业务系统 4
五、 日常维护提议 10
六、 故障出现时,系统处理步骤 11
七、 命令介绍 11
一、 综述
应XXXX用户要求,倚博企业中间件技术教授针对用户关键业务系统做了一次完整系统健康检验。
整体上讲,企业关键系统运行比较稳定,故障率和用户业务系统MTBF (Mean Time Between Failure)全部比较小。
但从系统维护管理工作规范和完善角度讲,还未建立完善中间件维护,监控方案。现阶段,关键是利用维护人员现场应急处理经验确保系统运行正常,未合理计划维护步骤,未确定中间件监控指标,未建立完善监控,预警和应急处理方案。
本文档总结了这次现场工作各项情况,并依据现场维护人员要求,增加了系统维护方法扼要说明。
二、 系统环境
关键业务系统
用户系统名称:关键业务系统
OS CPU:8
OS Memory: 16 GB
OS: Red Hat AS 4
KENERL: 2.6.9-42.ELsmp
JBOSS Application Server 4.2.3
JDK:
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)
Java HotSpot(TM) Server VM (build 1.5.0_17-b04, mixed mode)
三、 工作日志
6月5日 早晨 9:30 系统健康检验
四、 系统健康检验具体列表
1. 关键业务系统
操作系统配置检验
系统配置:
名称
提议值
实际值
是否符合要求
操作系统版本
Linux/Hp
Red Hat AS4
Y
主机名
N/A
App1
Y
CPU
> 1GHZ
8*1.9G,
Y
内存
> 2G
16G
Y
磁盘空间
>20G
360G
Y
系统内核参数:
名称
提议值
实际值
是否符合要求
说明
文件句柄数
4096或更大
8192
Y
进程最大文件句柄数
JAVA虚拟机配置检验
虚拟机安装路径:/opt/jdk1.5.0_17/
名称
提议值
实际值
是否符合要求
说明
JVM 版本
1.5
JDK 1.5.0_17
Y
JVM HEAP初始值 -Xms
514M
1024M
Y
JVM HEAP最大值 -Xmx
512M-1536M
1536M
Y
Permsize
64M
256M
JBOSS配置检验
安装路径:/opt/jboss/jboss-4.2.3.GA
参数
值
提议值
说明
线程数
400
一个CPU对应50个线程左右
线程个数应和CPU处理能力匹配。
JSP编译调试信息标志
false
false
生产环境中提议将JSP编译调试功效关闭,降低因编译占用系统资源对系统影响。
开发模式设置
false
false
应用使用连接池数量
400
400
生产环境中提议将连接数量和线程总数保持统一。
应用使用连接池初始值
100
400
最小值和最大值保持一致,避免运行状态在创建连接时消耗系统资源。
连接池Prepared Statement Cache
无
10
缺省JBOSS服务器是不会Cache Prepared Statement对象,为了提升性能我们能够设定每个连接Cache Prepared Statement对象个数
运行期系统状态检验
名称
平均值
峰值
是否异常
CPU
35%以下
60%
未出现长时间CPU使用率超出100%
内存使用
3.5G以下
无页交换情况
磁盘空间
20%
满足应用日志或JBOSS日志所用磁盘空间要求
网络流量
200K/S
800K/S
无网络阻塞和网络风暴
运行期虚拟机状态检验
名称
实际情况
是否符合要求
说明
JVM HEAP最小值
280M
Y
JVM HEAP最大值
1100M
Y
为今天观察结果
运行期JBOSS组件状态检验
名称
正常值
实际值
是否符合要求
说明
线程使用情况
使用率<50%
<70%
Y
开启目录core文件检验
在JBOSS开启目录中发觉“core”文件和“hs_err_pid*.log”错误日志文件,说明系统出现过JVM core dump和异常退出故障,故障出现在一个虚拟机解压缩操作,期望能经过深入和开发商,维护人员沟通找出具体故障原因,并提出处理方案。
日志检验
名称
提议值
实际值
是否符合要求
说明
日志中Error信息检验
Review All Logs
Review All Logs
N
对日志中Error消息进行检验,参考下面例子。
日志文件中发觉错误信息以下:
1) 开启JBoss时报以下错误:出现过一次
22:53:52,907 ERROR [MainDeployer] Could not create deployment: file:/D:/新建文件夹/jboss-4.2.2.GA/server/default/conf/jboss-service.xml
org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.UndeclaredThrowableException)
at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
at org.jboss.system.ServiceController.install(ServiceController.java:226)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy4.install(Unknown Source)
at org.jboss.deployment.SARDeployer.create(SARDeployer.java:249)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy5.deploy(Unknown Source)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
at org.jboss.Main.boot(Main.java:200)
at org.jboss.Main$1.run(Main.java:508)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.UndeclaredThrowableException
at org.jboss.system.ServiceCreator.install(ServiceCreator.java:236)
at org.jboss.system.ServiceConfigurator.internalInstall(ServiceConfigurator.java:451)
at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:171)
... 36 more
Caused by: java.lang.Error: ERROR: it turns out the root cause is not always a runtime exception!
at org.jboss.mx.server.MBeanServerImpl.handleInstantiateExceptions(MBeanServerImpl.java:1295)
at org.jboss.mx.server.MBeanServerImpl.instantiate(MBeanServerImpl.java:1237)
at org.jboss.mx.server.MBeanServerImpl.instantiate(MBeanServerImpl.java:286)
at org.jboss.mx.server.MBeanServerImpl.createMBean(MBeanServerImpl.java:344)
at org.jboss.system.ServiceCreator.install(ServiceCreator.java:157)
... 38 more
jboss-service.x配置错误,经过修改具体错误配置,并处理了这个问题。
2) NoClassDefFoundError错误,目前类装载器不能找到这个类文件,频率:出现一次
java.lang.NoClassDefFoundError: Could not initialize class org.jboss.aspects.security.SecurityActions$ContextInfoActions
at org.jboss.aspects.security.SecurityActions.getContextException(SecurityActions.java:467)
at org.jboss.aspects.security.AuthenticationInterceptor.authenticate(AuthenticationInterceptor.java:131)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:66)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84)
at $Proxy147.getInitConfigAsInteger(Unknown Source)
at com.police.alarm.AlarmAction.execute(AlarmAction.java:28)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.police.filter.SystemUserFilter.doFilter(SystemUserFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.police.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at .JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
NoClassDefFoundError错误,经过找到类所在文件,并经过正确配置或使其在正确类路径中来处理此问题。
故障汇总
1) 在JBOSS开启目录中发觉“core”文件和“hs_err_pid*.log”错误日志文件,说明系统出现过JVM core dump和异常退出故障,故障出现在一个虚拟机解压缩操作,期望能经过深入和开发商,维护人员沟通找出具体故障原因,并提出处理方案。
2) 布署问题,布署描述符配置错误,需仔细检验布署描述符号。
3) NoClassDefFoundError,原因为在目前类装载器路径中,不能找到相关类文件,需检验类装载路径里面是否存在这个类文件
4) 监听端口配置问题。
在分配服务器监听端口时,需检验操作系统中这个端口是否被占用。
Netstat –an | grep port
另外,也需要咨询系统管理员对主机端口分配。
五、 日常维护提议
管理上,提议安排专员负责中间件管理和维护,负责应用布署,确保中间件稳定运行。对于日常维护工作能够从以下多个方面入手:
1) 系统运行监控和调优
¨ 监控操作系统内存和CPU使用情况
¨ 虚拟机内存和线程使用情况
¨ 各个关键应用并发访问情况
2) 日志文件管理
¨ 日志文件合理计划空间,不一样类型日志使用不一样文件路径
¨ 过期日志文件定时存档清理
3) 应用程序更新和布署
4) 系统出现故障时应急处理
倚博能够为用户提供完整系统监控方案,系统维护手册和系统应急处理方案,满足用户对系统高可用性,规范维护和预防性维护需求。
六、 故障出现时,系统处理步骤
1) 观察硬件CPU和内存使用情况并统计
Vmstat,top等命令。
2) 经过“ps –ef”命令中观察JBOSS对应Java进程是否存在
3) 使用“kill -3 pid”来生成系统线程堆栈,查看是否全部线程运行状态全部正常,跟踪并处理长时间运行任务。
4) 查看日志并搜集日志。搜集日志包含(nohup.out,jboss server.log)
七、 命令介绍
Linux操作系统
查看系统内核版本命令:uname -a
查看CPU配置: grep "model name" /proc/cpuinfo
查看内存配置:more /proc/version
查看进程各项阈值:”ulimit –a”
设置文件句柄数:”ulimit –n 4096”
查看CPU运行状态: vmstat,top
查看IO状态: iostat
查看文件句柄数 : lsof –p pid
Java进程线程堆栈:“kill -3 pid
展开阅读全文