4

我已经启动了一个码头服务器和一个 ehcache 实例,很快我在启动另一个 java 进程时遇到了 linux 上的线程限制。

错误消息是unable to create new native thread(PS 我的 linux 操作系统是 CentOS 6.2)。

然后我ps -xH知道两个java进程(jetty和ehcache)产生了将近800个线程,总数ps -xH是1023,ulimit -u显示1024。

所以,我的问题是为什么java产生线程但我遇到了进程数的限制?

PS我有足够的内存

4

2 回答 2

3

因为对于 Linux 线程,进程基本上是相同的。它们之间的区别在于线程共享内存、文件描述符等内容,而进程不共享。

查看内容以获得更深入的见解。因此,线程和进程都计入 1023 个进程的限制。

您可能应该尝试创建更少的线程,这对我来说似乎是一个巨大的数目。

于 2012-11-27T10:23:31.590 回答
0

到目前为止,至少对于 Jetty 来说,这是过多的线程。除非您已经对服务器施加了每秒数百个请求的压力,否则这种情况不应该发生。仔细检查线程是否无限期阻塞。在任何情况下,在入队或拒绝请求之前配置允许的最大线程数。

于 2012-11-27T10:22:30.510 回答