收到报警邮件,生产环境order服务挂了,顿时炸锅了呀,先把服务重启了,然后排查问题。
类似这种问题比较麻烦,需要收集生产环境的日志,来分析。经过1个小时左右,找到问题所在,是因为导出的功能导致内存溢出。一个导出为什么会内存溢出呢?本地调试,导出30w+的数据,越来越慢,最后内存溢出。导出的逻辑是分页将数据存在List,最后写入excel。看了下5000条数据的占用内存大概在10M左右,我的天。这下到解决问题的时候了,怎么搞呢....,脑顿大开。都分页查了,为何不每次把查出来的结果集直接写到excel呢?可以试一试,果然,问题解决了,开心开心,在此,给同学们提个醒,遇到导出大量数据的时候一定要注意性能问题。
记录一次因导出导致的生产事故
博客讲述了在生产环境中遇到order服务因导出功能导致的内存溢出问题。作者通过收集日志,发现5000条数据占用了约10MB内存,最终定位问题在于将数据存入List后再写入Excel。为解决这个问题,作者改为直接从数据库分页查询并写入Excel,成功避免了内存溢出。这个案例提醒大家在处理大量数据导出时要注意性能优化。
摘要由CSDN通过智能技术生成