关于大数据量插入频繁的问题,解决方案

  近年接了个有关大数据的项目,从0到有,一路走来,虽然中间磕磕绊绊,所幸走到现在,项目已是快要接近尾声;

  项目采用的是elasticsearch搜索引擎用作数据库,主要场景,一个任务需要读取本地文本文件,大概七八十兆大小,八万条,一百五十列左右,读取完立即写入数据库,写入以后,再把每行的值根据另一个表来判断是否重复,也就是去重,去重以后再次插入这张对比的表;8核32g,虚拟机容量调到8g,十个并发内存就溢出了,而且程序运行期间,浏览网站响应时间超久,一直处在等待状态。

  监控系统,elasticsearch进程cpu占用率峰值达到400%-500%,java进程也达到了200%左右,如何解决?

 分析原因,页面一直在等待响应,很明显cpu的任务分配已经满员,没有多余的空间处理请求,造成cpu爆满的原因是,频繁的读写数据库,并且还要读取本地的文件内容,对内存来说也是一种负担;

  第一次解决方案,去重方法加锁,限制并发去重的次数,结果是网页卡死,没有一个完成;

  第二次解决方案,加锁,批量去重插入,结果是内存溢出,网页卡死,只有一个完成;

  第三次解决方案,加锁,并且每次去重插入后,都让线程休息十秒,全都完成,网页运行流畅;

 

  时间换空间,延长了系统执行的时间,把数据库的压力转移到系统中,将所有等待的内存对象移交到虚拟机中,需要调大虚拟机内存;延长线程休息时间,提升系统的吞吐量;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值