提问者:小点点

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


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

它们都运行RHEL 6x86_64HBase版本是1.2,Phoenix版本是4.14

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

我试图up0018~2000元组,~25列每10分钟,表已经插入了超过200万元组,但有时我在表单中遇到异常:

由以下原因引起:java. lang.OutOfMemoryError:无法创建新的本机线程[…]由以下原因引起:AvaticaClientRuntimeException:远程驱动程序错误:RuntimeException:org.apache.phoenix.执行。提交异常:java.lang.RuntimeException:java.lang.OutOfMemoryError:无法创建新的本机线程-

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

它不是一个实际的OutOfMemoryException,但好像它正在创建许多线程并用完它们?

我试过做一个ps aux,我看不到Phoenix查询服务器进程创建超过50个线程,这是一种方式,远远低于正常Linux安装中的线程限制。

也许它真的是内存溢出,无法创建本机线程是一个症状?


共1个答案

匿名用户

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

/etc/security/limits.conf

与:

user - nproc 32768

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

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

 user - nofile 32768

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