缘起
应用用的ES集群版本是1.7,公司内部让升级版本,说是这个集群版本太老了,由于种种原因没有升级,就这样应用拖到了618,结果在这期间应用频繁的发生502和rpc线程池被打满的情况,给我们本应该顺畅的618带来了一片乌云。
得到此报警之后,开始dump机器线程,发现有大量的es线程在阻塞,并且有很多的http线程也在阻塞,这也就不难排查发生502和RPC线程池被打满的原因,由于es操作迟迟未返回,导致业务线程池被打满,http连接一直等待结果返回,连接不释放,导致了tomcat接收业务请求也被打满,进而导致应用访问频繁出现502。
上图就是jstack下来线程,可以看到有大量的http线程被阻塞,然后查看详情,
详情中有大量的线程被阻塞在了ES的调用上,这样问题就很明显了,按理来说问题定