生产环境,出现tomcat预警 OutOfMemoryError: Java heap space,出现此问题,经过排查,发现tomcat设置内存参数xmx为2G
经过评估,可能此值不够大,经过服务整体情况评估,决定加大内存,加到到3G。(服务器资源紧张,没有多余的资源),以为万事大吉。
第二天,继续的OutOfMemoryError ,问题继续排除
经过日志分析,发现在内存溢出时,now client pool [leased: 211; pending: 0; available: 2; max: 800],即httpclient 线程池已经被消耗了200个线程handle
正常情况,httpclient应该不会有这么大的消耗,经过日志分析,前端存在http恶意请求,做ngnix 针对于同一个ip,做限流拦截。