java

今天遇到一个压力测试的问题。线程池满,导致交易线程被拒。
jconsole看线程信息时,看到很多线程block。
堆栈信息的第二行能看出自己写的代码的影子——一个send数据的方法。

重点是:第一行信息直接被我忽略了!!!
原因大概是类名里面有 cglib $ 之类的字样。
就因为这个,我就直接把这一行无视了!!!

想起一个类似的情况。有时候看异常堆栈时,会直接忽略掉开始的几行,而从自己写的代码开始看。大多数情况下,这是一个好习惯(因为大多数情况下能更快的解决问题)。大概也正因为如此,才会形成思维定式吧!

但是对程序来说,堆栈信息的第一行当然是最重要的,不管是异常信息还是堵塞信息!!!


(其实要表达的已经完了,这里补充一下问题的成因。send方法所在的类是ibatis从数据库中创建的,中间用到了cglib。而在cglib的代理方法中是加了锁的 (JVM insert monitorenter))

你可能感兴趣的:(技术)