最近,我们在工作中遇到了一个bug。
我们都知道javanio的异步阻塞io。我们有一个客户端来执行缓存查询和插入操作。突然,天线发出警报,缓存查询超时。然后我们迅速拉缓存人员来解决这个问题(大公司的人员速度很慢,效率很低)。缓存人员直接剪了一张照片告诉我们,这不是他们的问题。最后,定位后的原因是memcache的客户端是nio模型,只有一个线程进行复用。但是!因为当时cpu有点高。(50%似乎并不高)。但由于服务器使用线程池,服务器使用线程池,已经设置了1000多个java线程。。cpu调度失控。。缓存获取速度非常快,但是因为只有一个线程,所以到缓存线程的cpu调度已经超时…
然后。。解决办法是增加机器。。结论:(公司里的这些人真的很擅长他们的能力。)