(本文档仅供参考)

问题

         自助数据集抽取失败,显示 Caused by: smartbix.SmartbiXException: 抽取未完成或抽取失败: 文件监听线程异常 :java.io.IOException: User limit of inotify instances reached or too many open files

 

         

解决方案

        1、修改SmartbiMPP数据库所在机器的句柄数大小,具体可以参考Wiki文档:解决Too many open files异常  ,相关句柄数设置命令补充说明如下:

              ulimit -a    说明:ulimit -a 用来显示当前的各种用户进程限制

              

              ulimit -n   说明:ulimit -n  查看当前用户默认的最大文件句柄数

 

              

              lsof |wc -l  查看所有进程的文件打开数

              

              lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 查看当前进程打开了多少句柄数,注意第一列是句柄数,第二列是进程id ,这样可以通过进程ID确定具体操作系统句柄数效果的进行是哪个,从而进一步分析问题。

              

 

        2、调整SmartbiMPP所在机器上实例数的大小,因为/proc/sys/fs/inotify/max_user_instances 默认值“128”的话安卓容器只能打开64个,执行命令如下:

 

             echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf

             echo "fs.inotify.max_user_instances=8192" | sudo tee -a /etc/sysctl.conf

             sudo sysctl -p /etc/sysctl.conf

         
            修改后需要重启SmartbiMPP服务。

            是否修改成功可以打开/etc/sysctl.conf 查看,如下图是修改成功的。