今天,咱们性能测试的环境出现个奇怪现象,经过oci direct load回库的进程彷佛僵死了,应用端cpu 200%(两个线程在跑,一个是一直在ocidirectload没反应,另一个是正在sem_trywait),以下:git
oracle服务器端从一开始收到请求并执行完成以后,就没有反应了,也没有等待事件,session状态为inactive(这没有任何反作用),ash中在此以后就没有这个session的任何记录了,多个分库都是同样的现象(比较坑的是,这个动态库是咱们研发中心开发的,代码不open)。github
目前问题尚未时间查,主要怀疑多是表空间满,今天又出来了,不一样的位置,可是内部都是在调用oci direct load的逻辑没有正常返回结果码的问题,经测试,不是这个问题。今天的异常以下:数据库
继续查看了各服务器到数据库的网络链接状态,oracle服务器节点都是keepalived,应用端为off,以下:服务器
输出各列的含义以下:网络
之前都是等待超时之类的,off的状态网上介绍也比较少。它是经过-o选项出来的,也就是网络计时器。经仔细查找,off的含义以下:session
keepalive
- when the keepalive timer is ON for the socketon
- when the retransmission timer is ON for the socketoff
- none of the above is ONoracle
如上述所示,Recv-Q Send-Q 都是0。man也没有写timer的含义。因此这个问题基本上推测就在Timer身上。socket
链接状态转换图以下:性能
参考:测试
https://superuser.com/questions/240456/how-to-interpret-the-output-of-netstat-o-netstat-timers
https://github.com/netty/netty/issues/7292