设为首页 加入收藏

TOP

flume高并发优化——(17)解决cpu占用高的问题
2018-11-28 17:50:08 】 浏览:36
Tags:flume 并发 优化 解决 cpu 占用 高的 问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xvshu/article/details/81189496

在博客中,我们通过《jstack分析cpu占用高应用》,发现flume占用过高,通过分析代码,发现了一个死循环,这里给大家看看两个代码的差别:

old:

//读到空行
              if(line==null||line.trim().length()<1){
                
                while (true){
                 
                  logger.info(this.filepath+"=randomAccessFile.readLine=> line is null");
                  filePointer = randomAccessFile.getFilePointer();
                  line=randomAccessFile.readLine();
                  if ((line!=null && line.trim().length()>0) || fileLength <= filePointer) {
                    break;
                  }
                  
                }
              }

new:

//读到空行
              if(line==null||line.trim().length()<1){
                int io_c = 0;
                while (true){
                  io_c=io_c+1;
                  logger.info(this.filepath+"=randomAccessFile.readLine=> line is null");
                  filePointer = randomAccessFile.getFilePointer();
                  line=randomAccessFile.readLine();
                  if ((line!=null && line.trim().length()>0) || fileLength <= filePointer) {
                    break;
                  }
                  if(io_c%10==0){
                    try {
                      Thread.sleep(10000);
                    }catch (Exception ex){
                      logger.warn("Thread.sleep(10000)",ex);
                    }
                  }
                }
              }

解决办法也很简单,既然这是必然的操作,那么加入10次休眠10s这样的话,就可以释放cpu资源。注意,内存资源不会释放,因为线程还未结束,是可用状态

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop数据收集与入库系统Flume与.. 下一篇Hive读取Flume正在写入的HDFS

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目