上线前压测发现业务线程 hang 死在 LinkedBlockingQueue,同时另外一条线程在 LinkedBlockingQueue.forEach() 中死循环了。看来是触发了 JDK(1.8.0_261) 的 bug。
Java Http Client 连接池复用研究
Posted on
|
In
Java
项目中用到了apache的httpclient,使用了池化的PoolingHttpClientConnectionManager,研究了一下相关的实现以及JDK原生的HttpURLConnection 的连接复用实现。
Netty shutdownGracefully 处理缺陷导致的内存泄漏
Posted on
|
In
Java
上周两个应用CPU涨到500%,查看监控Major GC次数、耗时都暴涨:
看情况很可能是内存泄漏了,接着看一下内存统计
jmap -histo
发现一个不该存在如此多的对象竟然有200w+个:
1 | num #instances #bytes class name |
这个时候,进程不响应Jmx的请求了,埋点的监控诊断无法正常进行,并且这个时候已经是业务低峰期,干脆直接dump下内存,保留线程栈,然后重启应用。重启后业务恢复正常。
MySQL Innodb Recovery崩溃恢复
Posted on
|
In
MySQL
内网发布用的配置数据库突然崩溃,查看mysql_error.log 可以看到只要一有写操作,一直在重复kill -6 -> recovery,无法自行恢复。摸索了两个小时,终于恢复完毕。现在记录一下主要的步骤。