实时流处理服务OutOfMemoryError现象之一
今天对一个实时流数据处理服务进行压力测试,很快发生OutOfMemoryError错误,分别记录堆占用大小情况如下:
1. 原系统堆占用大小走势
2. 注释一行log后堆占用走势
发现注释了一行频繁命中的log输出之后,堆占用大小迅速下降和处于平稳状态
3. 线程运行情况
通过查看原系统的业务线程运行情况,发现有很多进程显示为红色,处于竞争log文件资源写的阻塞等待状态,导致处理的数据流逐渐积累,最后发生OutOfMerrory错误。
4. 总结
a、堆溢出的异常,有些情况不是由于内存泄露造成的,特别是大规模数据实时流处理,有时候消费太慢,导致实时新生产的数据积累
b、觉得实时流数据处理服务的大多数瓶颈在于网络或磁盘I/O