当前位置: 首页 > 知识库问答 >
问题:

Debian Java线程限制为630线程

白光耀
2023-03-14

所以我们有一些游戏服务器在我们的V服务器上运行(我说的这款有8Vcore、4.2GHz和32GB DDR4内存),例如Minecraft。我们的问题是服务器在大约640个线程的情况下耗尽了内存(它不关心栈大小,1024KB、512KB都是相同的结果)。那么有没有办法从我们的系统中得到更多的线程呢?

Linux:Debian 9 Virtuozzo容器
Java:
openjdk版本“1.8.0232”
openjdk运行时环境(build 1.8.0_232-8U232-B09-1~DEB9U1-B09)
openjdk 64位服务器VM(build 25.232-B09,混合模式

systemd/system.conf:
defaultTasksmax=infinity

ulimit-A:
核心文件大小(块,-c)0
数据序列大小(千字节,-d)无限
调度优先级(-e)0
文件大小(块,-f)无限
挂起信号(-i)3088273
最大锁定内存(千字节,-l)64
最大内存大小(千字节,-m)无限
打开文件(-n)1024
管道大小(512字节,-p)8
POSIX消息队列(字节,-q)819200
实时优先级(-r)0
堆栈大小(千字节,-s)8192
cpu时间(秒,-t)无限



Java-xss512k DieLikeADog(但堆栈大小并不重要)错误是:
新线程#634
线程“main”java.lang.OutOfMemoryError:无法创建新的本机线程
在java.lang.thread.Start0(本机方法)
在java.lang.thread.Start(thread.java:717)
在DieLikeADog.main(DieLikeADog.java:20)
线程创建工具从这个线程中杀死了

Java VM可以支持多少线程?

共有1个答案

舒浩邈
2023-03-14

你真的应该能够去很多更高的与所有这些设置和配置。

我认为这是主机提供商对您的机器施加的限制。

这并不是闻所未闻的,例如参见这个超级用户问题:

https://superuser.com/questions/360000/613-threads-limit-on-debian

附上以下后续自答:

“刚得到以下信息:这是我的主机提供商施加的限制。”

 类似资料:
  • 问题内容: 我在实践中阅读Java Concurrency,并且有点与线程限制概念混淆。这本书说 当一个对象被限制在一个线程中时,即使该限制对象本身不是一个线程,这种使用也是自动的线程安全的 那么,当一个对象被限制在一个线程中时,没有其他线程可以访问它吗?那就是局限于线程吗?如何将对象限制在线程中? 编辑: 但是,如果我仍然想与另一个线程共享对象怎么办?假设在线程A完成对象O后,线程B想要访问O。

  • 我正在尝试创建一个具有一定数量线程的ThreadPoolExector,但同时,我想控制池队列的大小。所以我使用完整的构造函数创建了执行器: 然而,这给了我一个非法辩论例外。如果我将构造函数更改为 它起作用了。如果我希望理想的线程数和最大线程数相同,为什么它不起作用呢。

  • 问题内容: 基本上我需要在更多线程中运行〜数百个计算。我只想在paralell中运行一些并行线程,例如5个线程和5个计算。 我正在使用spring框架,@Async选项是自然选择。我不需要全功能的JMS队列,这对我来说有点麻烦。 有任何想法吗 ?谢谢 问题答案: 你检查了吗?你可以定义一个线程池,其中包含最大数量的线程来执行任务。 如果要与结合使用,请在spring-config中使用它:

  • 问题内容: 以下代码假定可以创建100,000个线程: 它运行在具有32GB RAM的64位计算机上;已安装Debian 5.0,所有库存。 ulimit -s 512来减小堆栈大小 / proc / sys / kernel / pid_max设置为1,000,000(默认情况下,上限为32k pid)。 ulimit -u 1000000增加最大进程数(根本不认为这很重要) / proc /

  • 我有一个tomcat服务器,可以处理一些rest API请求。这个tomcat崩溃是由于某些输入中的一个特定rest请求内存不足导致的,这会导致大量堆大小的使用,从而导致所有站点崩溃。 我想限制这个Rest请求内存使用我怎么能做到呢?我通常想保护tomcat免受大内存使用请求崩溃的影响。我怎么能做到呢?也许以某种方式限制所有线程最大堆大小?

  • 我正在使用Pircbot创建一个IRC bot,它可以响应某些请求(例如“!time”提供本地时间)。我正在构建的功能之一是一个giveaway系统,从当前在线的用户中随机抽取一个用户,给他们一个奖品。 我想通过强制中奖者在中奖后30分钟内键入“!接受”来领取奖品来增强系统。然而,我希望bot仍然运行,这意味着我不能冻结整个线程30分钟等待一个消息。 我想做的几种方法对我来说有点太古怪了。 > 我