因此,我们的V服务器上运行了一些游戏服务器(我正在谈论的是具有4.2GHz和32GB DDR4 RAM的8vCore),例如Minecraft。我们的问题是服务器在大约640个线程处耗尽内存(它不在乎哪个堆栈大小,1024KB,512KB都是相同的结果)。那么有什么办法可以从我们的系统中获取更多的线程?
Linux:Debian 9 Virtuozzo容器
Java:
openjdk版本“ 1.8.0_232”
OpenJDK运行时环境(内部版本1.8.0_232-8u232-b09-1〜deb9u1-b09)
OpenJDK 64位服务器VM(内部版本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
堆栈大小(KB,-s)8192
cpu时间(秒,-t)无限
最大用户进程(-u)62987
虚拟内存(千字节,-v)无限
文件锁(-x)无限
就是这样。
java -Xss512k DieLikeADog(但堆栈大小没有区别)
错误是:
新线程#634
线程“主”中的异常java.lang.OutOfMemoryError:无法创建新的本机线程
在java.lang.Thread.start0(本机方法)
在java.lang.Thread.start(Thread.java:717)
在DieLikeADog.main(DieLikeADog.java:20)
被杀
使用此线程中的线程创建工具:
How many threads can a Java VM support?
最好的问候
答案 0 :(得分:0)
与所有这些设置和配置相比,您确实应该能够比它高得多。
我建议这是主机提供商对您的计算机施加的限制。
这并非闻所未闻,例如,请参见以下超级用户问题:
https://superuser.com/questions/360000/613-threads-limit-on-debian
提供以下后续自我解答:
”仅获得以下信息:这是由 我的托管服务提供商。”