1. 概述
这次工作主要是配合XXX局方26日晚6点半开始的压力测试,分析系统配置及压测时各项监控指标,给出中间件系统调优建议。
2. 发现问题及解决方案
2.1 weblogic发现问题及解决方案
1) 应用部署调优
部署在XXX主机上,域BSSWEB下的webapp均未进行调优,建议把Resource Reload Check (in seconds)、JSP Page Check (in seconds)参数值调整为-1,可使每秒钟检查更新的线程空闲下来做业务处理,生产环境下不进行资源和JSP的检查可提升一定的性能。修改过程请见下图:
以修改acctmanm应用为例
2) 数据源配置调整
数据库连接池的初始值、最大值及步增的配置要根据生产环境下压力的变化情况作出适当的调整。具体调整可参考数据库监控选项卡提供的当前容量、当前活动的数据库连接数、数据库连接数最大值等参数。建议数据库连接池初始值设置不宜过小,否则业务高峰期到来,需要创建大量新的数据库连接,首先创建数据库连接是个相对耗时的操作,其次在创建数据库连接时,数据库连接池处于锁定状态,即外面的线程不能从池内拿到连接处理业务,同时处理完业务不再使用的连接也不能被放回池内。业务高峰期时会严重影响系统性能。
另外关于数据源配置还要格外注意的是步增的设置。如果是在数据库服务器性能非常好的情况下,可根据上面提到的原则把初始值直接设置到连接数最大值,步增可设置为1(此种情况视为初始值即可满足最大压力)否则初始值设置一个较小值时,业务量陡增时,如果步增设置太小,则会出现频繁创建数据库连接,连接池频繁被上锁解锁上锁,导致池内连接不能被正常使用。而如果把步增设置的相对的大一些则可一次创建足够多的连接避免频繁的对连接池上锁解锁上锁所造成的性能损耗。
同时以E端CUSTSERV域为代表存在比较严重的连接泄露问题,如下图
大量连接泄露导致连接池不能被正常释放,会严重影响系统性能。解决方法是探查到具体的内存泄露点,修改相关代码,打上try catch finally块,并在finally块内关闭数据源保证发生异常时连接仍可得到释放。探查连接泄露点的方法如下:
以ds_crm_uop_crm4为例,在配置项(configuration)中的诊断选项卡(Diagnostics),把“Profile Connection Leak”选项打上√。之后在出现连接泄露时,相应的泄露点详细堆栈即可打印在server日志中,开发人员即可做出相应的代码调整。
3) 日志记录调优
检查发现在YYY主机上的sysmanm_194_01server下的日志记录文件夹已达到41G之大。
如不适当控制很快将会把磁盘撑满。主要原因是由于没有对日志文件的个数做限制,另外日志中主要为debug日志,日志记录粒度过小,导致很快生成一个5M的日志文件。解决办法如下:
登录管理控制台,进入需要修改的server的Logging选项卡
将“Limit number of retained files”选项前的√打上,默认保留7个文件
进入高级选项卡,调整“severity level”为级别更高的warnning
2.2 tuxedo发现问题及解决方案
压测期间,可以看到相关业务处理server的处理量有显著增加,但server状态基本都处于空闲(idle)状态,server运行状态良好
压测时查看BB状态
从上图可看出当前BB状态基本上为设置值的一半左右,当前设置没有问题。但存在设置不合理的地方
当前最大客户端设置为1500
但设置的WSL可同时处理最大值为80*10=800个。可根据当前应用的特点适当减少最大客户端数,或将-x参数调整为15。-x参数代表每个WSH进程同时可处理的客户端数量,根据经验该值设置过小会严重影响系统性能。