Apache Phoenix java.lang.OutOfMemoryError:无法创建新的本机线程

Apache Phoenix java.lang.OutOfMemoryError:无法创建新的本机线程,java,hadoop,hbase,phoenix,Java,Hadoop,Hbase,Phoenix,我有一个小小的Hadoop集群,有5个数据节点和1个名称节点,所有4个核心/4个线程的机器都有4GB的RAM,只有一个数据节点有8GB的RAM 他们都在运行RHEL 6 x86_64。HBase版本为1.2,Phoenix版本为4.14 我通过Phoenix查询服务器和“瘦”JDBC客户端连接到ApachePhoenix。Phoenix查询服务器正在名称节点上运行 我正在尝试插入~2000个元组,每10分钟插入~25列,表中已经插入了200多万个元组,但有时会出现以下形式的异常: 原因:java

我有一个小小的Hadoop集群,有5个数据节点和1个名称节点,所有4个核心/4个线程的机器都有4GB的RAM,只有一个数据节点有8GB的RAM

他们都在运行RHEL 6 x86_64。HBase版本为1.2,Phoenix版本为4.14

我通过Phoenix查询服务器和“瘦”JDBC客户端连接到ApachePhoenix。Phoenix查询服务器正在名称节点上运行

我正在尝试插入~2000个元组,每10分钟插入~25列,表中已经插入了200多万个元组,但有时会出现以下形式的异常:

原因:java.lang.OutOfMemoryError:无法创建新的本机线程 [...]原因:AvaticClientRuntimeException:远程驱动程序错误:RuntimeException:org.apache.phoenix.execute.CommitteException:java.lang.RuntimeException:java.lang.OutOfMemoryError:无法创建新的本机线程->CommitteException:java.lang.RuntimeException:java.lang.OutOfMemoryError:无法创建新的本机线程->RuntimeException:java.lang.OutOfMemoryError:无法创建新的本机线程->OutOfMemoryError:无法创建新的本机线程。错误-1(00000)null

Phoenix查询服务器正在名称节点上运行,我不确定出了什么问题

这不是一个实际的OutOfMemoryException,但好像它正在创建许多线程并耗尽它们

我试过做ps aux,但我看不到Phoenix查询服务器进程创建了超过50个线程,这比正常Linux安装中的线程限制要小得多


可能它真的是内存不足,无法创建本机线程是一种症状?

我编辑说,Hadoop进程运行的用户对新进程的限制太低了

/etc/security/limits.conf

与:

它成功了。我没有看到特定的线程计数限制,但是增加进程计数限制就可以了

我还了解到,集群也需要增加开放文件数量限制:

 user - nofile 32768

我这样设置是为了避免将来出现问题。

旁注,
ps aux
将只显示进程,而不是线程。试试
ps-eLf
,你可能会知道你为什么会达到这个极限。我手头没有,但是是的,我使用了一些命令来列出线程,通过一些行计数,我看到它达到了约700个线程,仍然低于用户的1k限制。我让Ganglia监视集群并搜索进程历史,我意识到在某个时间点执行插入时,它达到了1k限制。Ganglia显示集群多次达到1k极限,然后由于异常而停止时突然下降。
 user - nofile 32768