opentsdb too many open files问题调研

表象:opentsdb实例进程存在,但已不能提供服务

错误:日志报too many files open,并且有大量tcp close_wait连接

opentsdb相关论坛:https://www.bountysource.com/issues/1754116-opentsdb-leaking-sockets 

排查命令:ll /proc/pid/fd | wc -l 可以看到该进程打开了多少文件句柄

    cat /proc/pid/limits 可以看到该进程允许的最大文件句柄数

          netstat -anp | fgrep 4244 |  awk '{print $6}' | sort | uniq -c  可以看到close_wait/establish等tcp连接状态数

  lsof -a -p pid

结论: tcp close_wait连接是由于opentsdb阻塞没有调用close() 方法产生的,具体原因需要查看opentsdb相关代码,据网上说,是因为hbase region server down或者有异常时,opentsdb获取不到数据一直被阻塞,并且没有相关timeout异常,但是task_queue还在一直接收agent发来的请求,一直在创建socket连接,以至于达到最大文件句柄数 程序报错

//需要参考tcp 三次握手 和 四次挥手

你可能感兴趣的:(opentsdb too many open files问题调研)