【发布时间】:2020-03-04 09:20:18
【问题描述】:
所以我们的 V-Server 上运行了一些游戏服务器(我所说的那个有 8vCores 和 4.2GHz 和 32GB DDR4 RAM),例如 Minecraft。我们的问题是服务器在大约 640 个线程时内存不足(它不关心哪个堆栈大小,1024KB,512KB 都是相同的结果)。那么有没有办法让我们的系统产生更多的线程呢?
Linux:Debian 9 Virtuozzo 容器
爪哇:
openjdk 版本“1.8.0_232”
OpenJDK 运行环境(build 1.8.0_232-8u232-b09-1~deb9u1-b09)
OpenJDK 64 位服务器 VM(内部版本 25.232-b09,混合模式)
systemd/system.conf:
DefaultTasksMax=infinity
ulimit -a:
核心文件大小(块,-c)0
数据段大小 (kbytes, -d) 无限制
调度优先级 (-e) 0
文件大小(块,-f)无限制
待处理信号 (-i) 3088273
最大锁定内存 (kbytes, -l) 64
最大内存大小 (kbytes, -m) 无限制
打开文件 (-n) 1024
管道大小(512 字节,-p)8
POSIX 消息队列(字节,-q)819200
实时优先级 (-r) 0
堆栈大小(千字节,-s)8192
cpu时间(秒,-t)无限制
最大用户进程 (-u) 62987
虚拟内存 (kbytes, -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?
最好的问候
【问题讨论】:
-
DieLikeADog 测试的重要部分是错误消息之前的最后一行。指示可以创建多少个线程。当然还有使用的命令行。
-
谢谢@MattiasIsegranBergander 编辑它
-
A few 实用笔记...