httpclient一只read time out,使用jmx 产看内存是每天都在上升的。
jstack pid > jstack.log 保存栈日志 jmap -dump:format=b,file=heap.log pid 保存堆日志
重启应用,回复服务,先止血。或者不影响服务的话可以直接连上服务器分析,不用分析日志。
两种方案:
根据第四步分析出具体oom对象,发现一个connectManager被放到了map中,map的clear是跟httpclient shutDown一块的。但是项目原因,封装的阿里云 apachHttpclient,每次的ak和sk不一样所以每次创建一个新的client,所以map一直在增加没有被释放。