基于Linux的WebSphere性能调优与故障诊断

Posted 李栋94

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Linux的WebSphere性能调优与故障诊断相关的知识,希望对你有一定的参考价值。

一、关于was数据源等问题的配置

 

(1)关于was数据源连接池的最大、最小配置多大合适?怎样去计算?

(2)关于JVM的配置,64位系统,64位WAS,最值小和最大配置多大最优?怎样去计算?

(3)应用服务器线程池,怎么样配置最优? 怎样去计算?

(4)Linux上安装was完成后,linux必须配置哪些参数,was性能最优?如果不配置的话,性能影响大吗


数据库连接池建议初始化调优10-100。was连接池参数说明及调优V1.0:http://www.webspherechina.net/Document/detail/tid/109707
jvm1024-3072,jvm,连接池的请参照文档,官方知识库有些文档,可以当做参考。
线程池100-100。
linux最大文件打开数65536,打开core,用户最大进程数65536
这些都是一般情况下调整,具体的还需要结合实际情况,一般情况下,在系统上线之前,会做压力测试,包括并发测试、疲劳测试等等。在做测试的时候,会不断的调整并发量,压力的时长。这个时候根据每次测试时WAS的运行情况、已经压力测试的结果,会进行不断的调整直到一个满意的值。我在压力测试之前一般把PMI打开,级别是基本,然后每个WAS实例内存最小值为2G,最大值为4G,同时打开WAS的verbose gc。数据源最小值设置为10,最大值设置为50。web container设置为200。其他更多的调整,比如Linux的调整,你可以根据WebSphere Application Server Performance Cookbook里面的建议进行调整。由于文件比较大接近10M,你可以到IBM官网直接下载PDF格式的文件:https://publib.boulder.ibm.com/httpserv/cookbook/
每次压力测试以后,根据verbose gc的记录情况,PMI的记录情况,再进行针对性的调整。如果发现不是WAS的问题,还需要与开发人员一块对业务代码进行优化。 linux参数调整:

参数

参数值

说明

nofiles

10000

允许打开的文件数。打开文件设置的缺省数目 (2000) 通常足以供大多数应用程序使用。如果对此参数设置的值太小,在打开文件或建立连接时就可能会出错。由于此值限制服务器进程可打开的文件描述符数(软限制)。

Nofiles_hard

10000

允许打开的文件数。打开文件设置的缺省数目 (2000) 通常足以供大多数应用程序使用。如果对此参数设置的值太小,在打开文件或建立连接时就可能会出错。由于此值限制服务器进程可打开的文件描述符数(硬限制)。

TCP_KEEPALIVE_INTERVAL

15

当探测没有确认时,重新发送探测的频度。缺省是75秒。推荐设置为15.

TCP_KEEPALIVE_PROBES

5

在认定连接失效之前,发送多少个TCP的keepalive探测包。缺省值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive之后可以有多少时间没有回应 推荐设置为5.

netdev_max_backlog

 

somaxconn

3000

 

3000

 

当由于入局连接请求比率过高而导致连接故障时,更改下列参数:

echo 3000 > /proc/sys/net/core/netdev_max_backlog

 

echo 3000 > /proc/sys/net/core/somaxconn




二、JVM大小的优化


先设置一个经验值,比如最小值2G,最大值4G,同时开启verbose gc。然后做压力测试,或者跑业务,跑一段时间以后根据gc日志再设置一个合理的JVM值。
1、GC日志是设置JVM大小时,最好的参考
2、我看到的很多生产环境GC都是开启的,如果追求极限性能肯定关闭了好
3、session复制是否打开与业务要求相关,性能是是确保业务正常的前提下再考虑的问题

新系统部署上线时,如何评估设置内存大小的合理性?
这个考虑的因素很多,比如,并发用户数,你的应用是不是吃大内存型的?比如要生成大的报表,要返回大的数据库结果集。
通常可以以压力测试来预估一个大致的值,然后再慢慢进行调整。

三、WAS7.0集群某节点假死


WAS7.0 虚拟机 LINUX集群 F5做负载均衡,经常在业务繁忙期遇到某一节点假死情况,在WAS控制台中查看该节点一切正常,F5由于判定假死节点正常所以正常分发负载,造成分发到改节点的访问用户无法使用应用系统,请问有类似的问题的解决方法吗?
这种问题可以从两方面着手:
1、F5探测的方式要准。可以编写一个应用,然后让F5去探测,返回200/500/501之类定制的代码来进行决定要不要进行分发了。另外一个可以直接用F5 + IHS + ODR + WAS,然后加上健康管理策略的方式进行。
2、后端WAS既然在业务繁忙出现性能问题,就在业务繁忙的时候抓几个javacore,找到假死的原因。

有没有分析javacore、GC和heapdump比较好的方法,在日常环境中处理这类问题有没有好的文档供参考。
IBM为javacore、GC和heapdump的提供了一个集成工具,叫IBM Support Assistant,我目前使用的版本还是4.1.2这个版本。
分析javacore、GC和heapdump,实际上就是跟IBM JDK打交道,我看的文档是IBM JDK的诊断文档,对排错非常有帮助。
diag60.pdf:http://www.webspherechina.net/club/attachment.php?aid=MjE5MDd8ODljNzY4YjN8MTQ3NDE4NTgxMHw5ZTgwTW5IUGRuWld0aDBHcE83Mzc4T3dLMXhDaGRxNjhqdk1ibkVuYzBSQzdHSQ%3D%3D

IBMJava626.pdf:http://www.webspherechina.net/club/attachment.php?aid=MjE5MDl8ZjViODI2NDV8MTQ3NDE4NTgxMHxkMDVhOUpoUjNlbk5iYmd5ZG9VeTlCSDc3bk5KUU1Da29CRE5ycUFPS0lDUWxNZw%3D%3D

四、WAS集群,实现session共享问题


WebSphere Application Server ND版本默认自带2种Session共享方式,一种是基于数据库JDBC类型的,一种是基于内存复制M2M的。除了这两个内置的session共享实现方式以外,还有WebSphere eXtreme Scale实现方式,不过这个在早期WebSphere版本中需要额外购买。
对我本人来说,节点数少的情况下,我用内存复制方式比较多。内存到内存复制具体配置步骤,分布式环境设置V1.0.docx:http://www.webspherechina.net/club/attachment.php?aid=MjE4Nzl8NDliZTg0MWJ8MTQ3NDE4NTE5OXxiZGQzL0srcjliTm0xSTJONDB6Y3AzbjlGY1RFS2RpSmQ3dTVVdkI5N2dWUzFNMA%3D%3D

量小的话,采用内存到内存复制即可。
量大的话,可以上WebSphere eXtreme Scale进行了。
怎么样监控会话数。启用PMI,PMI数据里面有会话数这一项。

五、WAS 如何监控到位?

目前,监控WebSphere最好的软件是APM范畴的软件。最火的APM范畴的监控工具,比如Quest Foglight、BMC PATROL等等。以oneapm为例,监控内容如下:

使用 OneAPM Java 探针来监控运行在 WebSphere 之上的 Java 应用程序,OneAPM 提供深度高可见性的应用性能管理解决方案,能够抓取到 WebSphere 上 Web 应用程序的行级代码或 SQL 语句调用。OneAPM 还提供了丰富的 JVM 分析、线程、会话等监控信息,可以直观地展示 JVM 堆内存、非堆内存(栈内存、方法区、常量池等)、各个时期对象的内存占用大小、垃圾回收活动详情及类的数量等。

监控 WebSphere 中 Java 应用的主要特点

监视分布式 SOA 应用程序的跨应用程序追踪

将主要业务轨迹的关键业务进行拓扑分析

用性能剖析分析方法调用栈轨迹

深度地监控您的 JVM 健康状况


WebSphere 中 JVM 的内存图表:

堆内存显示图表

非堆内存显示图表

实时显示垃圾回收活动

装载和卸载掉 class count 图表


WebSphere 中 JVM 的线程图表:

活动线程数图表

线程池的活动和空闲线程


WebSphere 中 HTTP Server 的会话图表:

分析每个应用程序的 HTTP 会话数,包括:活跃、过期、拒绝的会话


WebSphere 应用服务器事务:

WebSphere 事务管理、活跃事务监控

监控 WebSphere 应用服务器创建的每个事务总数的变化

监控总的事务的变化

六、ISA healthcenterclient 连接不上agent


问:服务器was8.5 、WAS SDK1.6(was自带),ISA5最新版(默认SDK1.8)、本地电脑jdk1.8
was节点虚拟机上已开启 1972 agent代理端口
2016-8-16 9:51:50 com.ibm.java.diagnostics.healthcenter.agent.mbean.HCLaunchMBean startAgent
INFO: Health Center agent started on port 1972.
health center 连接 1972 端口报错:
在 193.28.6.8 上的端口 1972 未检测到 JVM

答:办法1:用JDK 1.6版本对应的health center client
办法2,你试试看看好使不好使:
${WAS_HOME}${YOUR_JAVA_HOME}jrelibhealthcenter.properties
from:
com.ibm.java.diagnostics.healthcenter.agent.transport=iiop
to:
com.ibm.java.diagnostics.healthcenter.agent.transport=jrmp
相关说明:
com.ibm.java.diagnostics.healthcenter.agent.transport(仅限 Java 应用程序)
设置用于客户机与代理之间连接的传输协议,可以是 IIOP 或 JRMP。如果将 Health Center V1.3.0 或更高版本与 WebSphere? Application Server for z/OS? 一起使用,请将该属性设置为 jrmp。缺省值是 iiop。

问:还有Performance tuning toolkit 和这个isa有什么区别和联系;pmi方式和现在的jmx方式连接诊断工具;PTT应该就是soap协议收集pmi的数据吧?isa应该是使用JMX协议收集PMI的数据吧?
答:可以这样简单理解:PTT是在线监控WAS、离线分析WAS监控数据的工具;ISA是离线分析工具的合集。


问:我现在非常困恼,为啥health center client 无法在 端口 1972 未检测到 JVM;不知道哪里出现了问题?
1、我服务器端 health center agent 已经开发了 1972端口,并且我查到了这个端口一直在监听等待连接
2、health center agent 这个代理是was8.5 sdk1.6自带的。
我猜测是否需要升级服务器端 这个agent?


答:com.ibm.java.diagnostics.healthcenter.agent.transportSets the transport protocol to use for the connection between the client and the agent, either IIOP or JRMP. If you are using Health Center version 1.3.0 or later with WebSphere? Application Server for z/OS, set this property to jrmp. The default value is iiop.
通过把传输协议从IIOP 改为 JRMP,可以连通了。高版本的healthcenter client连接低sdk自带的healthcenter agent。

七、was有默认的permsize么?有的话初始值多大?

基于SUN JDK改的IBM JDK,都有permsize。比如下面的based on Oracle 7u79-b14,指的就是基于SUN JDK改的。操作系统主要是windows、linux、solaris平台,设法跟普通的SUN JDK没什么区别。比如64位的JDK,我一般都设置:

-XX:PermSize=256m -XX:MaxPermSize=512m

D:IBMjavajava1.7.0_64_SR9FP1bin>java -version

java version "1.7.0"

Java(TM) SE Runtime Environment (build pwa6470sr9fp1-20150602_01(SR9 FP1))

IBM J9 VM (build 2.6, JRE 1.7.0 Windows 7 amd64-64 Compressed References 20150406_242981 (JIT enable

d, AOT enabled)

J9VM - R26_Java726_SR9_20150406_1443_B242981

JIT - tr.r11_20150401_88894

GC - R26_Java726_SR9_20150406_1443_B242981_CMPRSS

J9CL - 20150406_242981)

八、WebSphere Process Server : 如何手工清理垃圾实例 ??

 

操作 WebSphere Process Server 环境,第 3 部分: 设置、配置和维护 WebSphere Process Server Business Process Choreographer 数据库

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0912_grundler/0912_grundler.html

以上这篇文章里面有相应的脚本,你需要根据项目的实际情况,对脚本进行定制,以便完成手工清理的工作。

九、关于WCS8.0 双节点双Solr节点的搭建

问:最近一直在做Websphere Commerce 维护工作,最近要搭了一套WCS双节点后,业务系统在通过WEB访问时,刷新一次就访问到随机的后端app上,后发现可能是solr群集可能配置有问题,在双节点上都在dmgr中部署了solrcluster,appcluster2个群集,也是正常启动的,更改solrconfig.xml,正常网页访问出错,wcs后台没有问题,把solrconfig.xml改成默认网页能正常,web访问会游离导致不正常的页面,请问具体的was8.5 solr群集部署

答:Websphere Commerce的集群实施是非常复杂繁琐的,并且还需要根据项目要求进行各种个性化设置。你可以参考DW社区的两篇针对性的文档:WebSphere Commerce 以及 Search Engine 双集群环境的搭建:http://www.ibm.com/developerworks/cn/websphere/tutorials/1111_mazq_commmers/

在 WebSphere Commerce V7.0 中部署 solr search 的一些最佳实践:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1306_liq_solr/1306_liq_solr.html

Commerce8.0 采用了自动化部署方式,在Ibm knowlege Center里面,有很多看完后跟Commerce7.0还是有很大的不同的。

十、9080端口占用导致的was启动失败

环境,绩效考核系统Linux6.2,was6.1ND单实例Was正常关闭,但是9080端口迟迟不能释放,使用netstate -an |grep 9080 发现一些连接一直不能释放,那么问题是如果9080端口释放不了,在启动was的时候就会上报端口绑定失败,启动失败,有没有好的办法让这些tcpip的了解快速释放,减少业务停机时间。故障现象记录:

在WAS进程不存在后,使用netstat命令查看9080端口,发现如下结果:

#netstat -aon|grep 9080

tcp 0 153305 ::ffff:20.100.99.40:9080 ::ffff:20.101.37.14:63336 FIN_WAIT1 probe (0.66/0/0)

答:参考调优

http://www.ibm.com/support/knowledgecenter/SSEQTP_6.1.0/com.ibm.websphere.nd.doc/info/ae/ae/tprf_tunelinux.html

在sysctl.conf文件里面增加:

net.ipv4.tcp_fin_timeout = 30

Linux操作系统主动释放

 

十一、was书籍推荐

关于WebSphere的技术知识,我主要是看以下这几本redbook网站下载的电子书

redp4580 WebSphere Application Server V7 Session Management.pdf

redp4855 WebSphere Application Server V8.5.5 Technical Overview.pdf

redp4870 WebSphere Application Server New Features in V8.5.pdf

sg246798 WebSphere ApplicationServer V6 Problem Determination for Distributed Platforms.pdf

sg247461 WebSphere Application Server V6.1 Problem Determination IBM Redpaper Collection.pdf

sg247584 IBM WebSphere Application Server V6.1 on the Solaris 10 Operating System.pdf

sg247615 WebSphere Application Server V7 Administration and Configuration Guide.pdf

sg247708 WebSphere Application Server V7.0 Concepts, Planning, and Design.pdf

sg248022 WebSphere Application Server V8.5 Concepts, Planning, and Design Guide.pdf

sg248043 Enterprise Caching Solutions using IBM WebSphere DataPower SOA Appliances and IBM WebSphere eXtreme Scale.pdf

sg248048 WebSphere Application Server V8.5 Migration Guide.pdf

sg248056 WebSphere Application Server V8.5 Administration and Configuration Guide for the Full Profile.pdf

sg248076 IBM WebSphere Application Server Liberty Profile Guide for Developers.pdf

sg248076 WebSphere Application Server Liberty Profile Guide for Developers.pdf

sg248079 POWER7 and POWER7+ Optimization and Tuning Guide.pdf

sg248194 Configuring and Deploying Open Source with IBM WebSphere Application Server Liberty Profile.pdf

sg248194 Configuring and Deploying Open Source with WebSphere Application Server Liberty Profile.pdf

tips1024 From Development to Production with the IBM WebSphere Application Server Liberty Profile.pdf















































































































































以上是关于基于Linux的WebSphere性能调优与故障诊断的主要内容,如果未能解决你的问题,请参考以下文章

Spark性能调优与故障处理

低价高性能Linux服务器构建实战运维监控性能调优与集群应用PDF电子书

MySQL性能调优与架构设计 PDF扫描版 下载

Spark全方位性能调优-- 参数调优与应用调优

Spark性能优化--数据倾斜调优与shuffle调优

JVM性能调优与实战基础理论篇-上