正常一年多的一个服务突然在23号出现异常,响应最快的竟然达到60几秒。apache与jboss之间大量连接超时。
看异常日志,发现竟然有一个新上的Servlet出现OOM。
review该Servlet,发现竟然用了一个CopyOnWriteArrayList来存放大量写和读和临时数据,该数据结构只适合偶尔写大量读的情况,
否则会造成不停地COPY空间,从而导致OOM
本文记录了一次线上服务突然出现响应缓慢及连接超时的问题,并通过日志定位到一个新上线的Servlet出现了内存溢出(OOM)。进一步审查代码发现,该Servlet使用了不合适的CopyOnWriteArrayList数据结构,在频繁写入的情况下导致了持续的空间复制,最终引发内存溢出。
正常一年多的一个服务突然在23号出现异常,响应最快的竟然达到60几秒。apache与jboss之间大量连接超时。
看异常日志,发现竟然有一个新上的Servlet出现OOM。
review该Servlet,发现竟然用了一个CopyOnWriteArrayList来存放大量写和读和临时数据,该数据结构只适合偶尔写大量读的情况,
否则会造成不停地COPY空间,从而导致OOM
1748
689

被折叠的 条评论
为什么被折叠?