今天11:00~12:00之间weblogic 程序告警weblogic端线程100基本耗光,剩余10个左右,发现同是链接到一个tuxedo出现的问题,tuxedo中间件再次出现问题,登入tmadmin,显示无BBL存在,但ps 看还有BBL进程,但已不能在tmadmin下执行命令;
沟通bea工程师,还是采取老王的办法。bea工程师的建议是:
1) tuxedo一直使用Tuxedo 8.1 for AIX4.3.3版本,建议使用tuxedo 8.1 for AIX 5.2版本,打上补丁Rp357。
2) 目前应用是在Tuxedo 8.1 for AIX4.3.3 RP243上编译,建议在tuxedo 8.1 for AIX 5.2 RP357上重新编译。 后续待观察,有结果再更新。
升级以后发现由于服务core掉导致的BB被破坏已经基本恢复,营业也是只编译了相关的库文件。但是BB也出现由于core 被破坏的现象,服务也经常core 掉,于是觉得应用由多线程改为单线程去掉参数THREADSTACKSIZE = 1048576 ,然后重新启动。同时增加参数 ,设置环境变量如:LDR_CNTRL=MAXDATA=0x80000000 然后重启GWTDOMAIN.通过监控发现,GWTDOMAIN出现内存分配错误时占用内存已经达到上限256m(应用的maxdata为8,可以使用2G)。而GWTDOMAIN处理一个消息最大需要15倍消息大小的内存(用于编码\解码、压缩\解压、加密\解密等操作)。在关闭大报表之后,目前没有出现问题,但还是有些GWTDOMAIN 的占用内存接近上限以及丢弃消息现象。
根据上述信息:
1)建议为GWTDOMAIN���立独立的启动脚本,启动GWTDOMAIN之前增加环境变量:LDR_CNTRL=MAXDATA=0x20000000 (即最大可以使用512m内存,今后根据监控情况再调整)
2)经运行监控脚本,当监控到GWTDOMAIN分配内存失败,自动重起GWTDOMAIN
暂时没发现后台服务频繁的core 掉。后续观察更新中。
目前生产已经使用LDR_CNTRL=MAXDATA=0x40000000最大分配内存1G。这个可以处理返回的数据大小大约为最大15倍,但是看到目前的情况没有编码解码的情况下,一般是8倍左右,那就是说1G/8=150M 的数据。即tuxedo 可以反馈150M的数据给前台处理,但是前台内存块大小不够这么大的,所以javacore 产生,鉴于此情况,准备调整此参数为 LDR_CNTRL=MAXDATA=0x20000000 512M内存.
处理方法为:
tmshutdown -s GWTDOMAIN
LDR_CNTRL=MAXDATA=0x20000000
tmboot -s GWTDOMAIN
在javacore 里面发现日志cache了很大的数据到300M,所以调整参数domain--->Configuration--->General Console Log Buffer Handler Cache Size 为0.即。不记录在缓存中条数。