测试的时候,报文正常通过,一段时间之后,出现报文全部卡死,之后所有报文都不能正常通讯。(顶不住压力,交易量大就死)
1、重启平台之后,通讯暂时恢复,一段时间之后有卡死。
2、最开始怀疑,内存未回收,jni的变量和tuxedo的变量未回收,检查是否都tpfree和release掉。
3、跟踪jni的程序,发现进入jni函数之后,tpinit出现阻塞,导致之后所有交易都卡到,进jni的c程序之后。
4、去掉tpinit之后,发现程序都阻塞到了,tpcall里面。不tpinit,tpcall自动tpinit。
5、设置tuxedo 客户端,多会话模式,问题解决。
TPINIT * tpinfo = NULL ;
tpinfo = (TPINIT *)tpalloc("TPINIT", NULL, TPINITNEED

博客详细记录了一次Tuxedo客户端在高并发下通讯卡死的问题,通过排查内存回收和JNI函数,发现tpinit调用导致阻塞。设置TPMULTICONTEXTS标志启用多会话模式后,问题得到解决,确保了客户端在多线程环境下的稳定通讯。
最低0.47元/天 解锁文章
7094

被折叠的 条评论
为什么被折叠?



