• 🏡
    首页
  • 📎
    归档
  • ✍
    日志
  • 🐂
    留言板
顶 峰 相 见
顶 峰 相 见

dfxj

各自努力,顶峰相见

09月
28
java

内存溢出的坑

发表于 2019-09-28 • 被 453 人看爆

关于数据处理

互联网圈子有个怪现象,白天用户高峰,为了将可能的影响降到最低,一些数据处理的工作,一般就放在晚上,所谓的晚上也就十一二点以后吧。

可是程序员哥哥也是需要休息的,当程序数据处理出问题了,就没人处理了,这种要么等夜神运维及时发现,层层打电话找人解决,要么服务直接宕机,造成严重故障或不必要的扩大影响。

怎么避免这种问题呢,?

  • 加班到凌晨,甚至睡在公司等数据处理完成再回家,fuck。。
  • 保佑emoji people:pray数据处理一切正常。

我的观点:

  • 在流量低峰处理数据的观点是okay的,无可厚非,但是不一定非要等到夜深人静的时候
  • 处理数据的任务不能影响正常的功能(这个必须得保证,不然就忍受熬夜处理问题吧)
  • 既然处理数据的任务不影响正常的功能,就可以在非用户高峰时间段的工作时间处理任务。这样的好处是(1)有问题能及时处理(2)不用熬夜,fuck

内存溢出

现象

处理数据的任务,运行一段时间后,内存占用逐渐增加,一直居高不下,到达服务器极限,如果不及时处理,服务随时宕机。

处理

  • 停止正在运行的数据处理任务,线上服务器重启,释放内存。
  • 开发环境,运行数据处理任务,jvisualvm观察gc情况,确实占用内存不断彪高,
  • 堆dump,查看堆内容,发现50%+是存数据的Map对象
  • 问题定位,内存里太多承载数据的对象没有及时被处理,导致内存耗尽。

解决方法

  • 处理数据的任务需要异步执行,使用线程池
  • 线程池任务处理时再加载数据(这点很重要)
分享到:
elasticsearch5.5.1安装过程遇到的问题及解决方法
SimpleDateFormat线程不安全问题
  • 文章目录
  • 站点概览
dfxj

trade what you see, not what you think

Github QQ Email RSS
看爆 Top5
  • 金融交易技术分析 1,247次看爆
  • Angular 变更检测 —— 它到底是如何工作的? 1,211次看爆
  • kubernetes低版本java客户端ProcessorListener容量问题 1,117次看爆
  • Angular SSR踩坑记录 1,083次看爆
  • kubernetes容器编排和调度管理 1,011次看爆

站点已萌萌哒运行 00 天 00 小时 00 分 00 秒(●'◡'●)ノ♥

Copyright © 2021 dfxj