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

问题描述 投票:0回答:1

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

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

我通过Phoenix Query Server和“瘦”JDBC客户端连接到Apache Phoenix。 Phoenix Query Server正在名称节点上运行。

我试图插入〜2000个元组,每10分钟~25列,该表已经插入了超过200万个元组,但有时我会在表单中获得异常:

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

Phoenix Query Server正在名称节点上运行,我不确定是什么问题。

它不是一个真正的OutOfMemoryException,但好像它创建了许多线程并且用完了它们?

我已经尝试过做一个ps aux而且我看不到Phoenix Query Server进程创建了超过50个线程,这些方式远远低于普通Linux安装中的线程限制。

也许它真的耗尽内存并且无法创建本机线程是一种症状?

java hadoop hbase phoenix
1个回答
1
投票

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

/etc/security/limits.conf

附:

user - nproc 32768

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

我还读到了群集也需要增加打开文件数限制:

 user - nofile 32768

我这样设置以避免将来出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.