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

MongoDB ops manager“java.lang.OutOfMemoryError:无法创建本机线程”

欧阳乐生
2023-03-14

我目前正在安装一台新的MongoDB ops manager机器。安装工作正常,但我无法启动mongodb彩信服务。实例0的启动因java而失败。lang.OutOfMemoryError异常。我使用与测试服务器上相同的配置(2个CPU核,8gb ram),在那里服务启动时没有任何中断。更改ulimit配置/使用root用户启动服务无效。

新服务器规格:

  • 2.0Ghz的10个Vcore
  • 48gb内存
  • 800gb存储
  • Ubuntu 18.04 LTS 64bit

由于新服务器与其他服务器共享,主机是否可能限制每个用户的cpu使用率?

mms0.log:

[Starting Logging - App Version: 4.2.23.57072.20210126T1748Z]
2021-03-28T19:32:11.682+0000 [main] INFO  com.xgen.svc.mms.dao.mongo.MongoSvcUriImpl [MongoSvcUriImpl.java.initMorphiaMapper:154] - Initialized Morphia in 12538ms
2021-03-28T19:32:12.319+0000 [main] INFO  com.xgen.svc.mms.dao.mongo.MongoSvcUriImpl [MongoSvcUriImpl.java.<init>:89] - Created MongoSvc with 1 client(s)
[Starting Logging - App Version: 4.2.23.57072.20210126T1748Z]
2021-03-28T19:33:07.998+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.doPreFlightCheck:295] - Starting pre-flight checks
2021-03-28T19:33:20.990+0000 [main] INFO  com.xgen.svc.mms.dao.mongo.MongoSvcUriImpl [MongoSvcUriImpl.java.initMorphiaMapper:154] - Initialized Morphia in 12920ms
2021-03-28T19:33:21.555+0000 [main] INFO  com.xgen.svc.mms.dao.mongo.MongoSvcUriImpl [MongoSvcUriImpl.java.<init>:89] - Created MongoSvc with 1 client(s)
2021-03-28T19:33:22.983+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.doPreFlightCheck:301] - Successfully finished pre-flight checks
2021-03-28T19:33:22.984+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.start:308] - Starting mms...
2021-03-28T19:33:23.142+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.createNonSSLConnector:843] - Creating HTTP listener on *:8080
2021-03-28T19:33:23.438+0000 [main] ERROR com.xgen.svc.core.ServerMain [ServerMain.java.main:226] - Cannot start mms server [FATAL-EXITING] - instance: 0  - msg: unable to create native thread: possibly out of memory or process/resource limits reached
java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
        at java.base/java.lang.Thread.start0(Native Method)
        at java.base/java.lang.Thread.start(Thread.java:803)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.startThread(QueuedThreadPool.java:660)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.ensureThreads(QueuedThreadPool.java:642)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.doStart(QueuedThreadPool.java:182)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.server.Server.start(Server.java:423)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
        at org.eclipse.jetty.server.Server.doStart(Server.java:387)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at com.xgen.svc.core.ServerMain.start(ServerMain.java:424)
        at com.xgen.svc.core.ServerMain.main(ServerMain.java:221)

mms0启动。日志

[23,180s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 512k, guardsize: 0k, detached.
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[19,947s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 512k, guardsize: 0k, detached.
Cannot start mms server [FATAL-EXITING] - instance: 0  - msg: unable to create native thread: possibly out of memory or process/resource limits                                                                                              reached
java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
        at java.base/java.lang.Thread.start0(Native Method)
        at java.base/java.lang.Thread.start(Thread.java:803)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.startThread(QueuedThreadPool.java:660)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.ensureThreads(QueuedThreadPool.java:642)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.doStart(QueuedThreadPool.java:182)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.server.Server.start(Server.java:423)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
        at org.eclipse.jetty.server.Server.doStart(Server.java:387)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at com.xgen.svc.core.ServerMain.start(ServerMain.java:424)
        at com.xgen.svc.core.ServerMain.main(ServerMain.java:221)

ulimit-a

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1544321
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62987
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

共有1个答案

纪畅
2023-03-14

建议:关注JVM;

  • 确保你有64位版本的Java
  • 尝试调整您的JVM参数:

https://docs.opsmanager.mongodb.com/current/reference/troubleshooting/system/

>

查找此行:

JAVA_MMS_UI_OPTS="${JAVA_MMS_UI_OPTS} -Xss228k -Xmx4352m -Xms4352m -XX:NewSize=600m -Xmn1500m -XX:ReservedCodeCacheSize=128m -XX:-OmitStackTraceInFastThrow"

将-Xmx和-Xms值更改为更大的值。两个参数都应设置为相同的值,以消除VM不断从堆中回收内存的任何性能影响。

值指定为#k|m|g:一个数字后跟

k(千字节)、m(兆字节)或g(千兆字节)

默认情况下,Xmsx和Xms都设置为4,352 MB(4352m)。

示例:要将Java堆设置为10 GB,请将此值设置为:

-Xmx10g -Xms10g

强烈建议:我将继续关注JVM设置,但是,此链接也可能相关:

https://stackoverflow.com/a/31445282/421195

当我们升级到Ops Manager 1.8.0时,我在测试Ops Manager部署中遇到了类似的问题。我最终打开了一张MongoDB支持的票据,这就是我们问题的解决方案

Ops Manager组件使用默认用户名“mongodb-mms”启动。请调整此用户的ulimited设置以匹配“mongodb”用户的设置,当前定义在/etc/security/Limited. d/99-mongodb-mms-automation-agent.conf中。

您可能希望为mongodb-mms用户添加一个单独的文件在/etc/securitysd/下。

更多信息可在此处找到。

新信息:

所以我尝试使用相同版本的MongoDB(4.4.3)和Ops Manager(4.4.8.100)进行新安装,以检查最新版本是否有问题。抛出相同的错误。

我尝试运行jConver-debug-

[1,323s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached

这表明您可能已经用完了线程。

相关链接:

https://github.com/elastic/elasticsearch/issues/31982

Elasticsearch版本(bin/Elasticsearch——版本):6.3.1

JVM版本(java-version):10

操作系统版本:centos

java.lang.OutOfMemoryError:无法创建本机线程:可能内存溢出或进程/资源限制,但我的操作系统有可用的80g内存

我用了docker。有弹力的co/elasticsearch/elasticsearch:6.3.1,

jvm config:
-Xms32g
-Xmx32g

...

[我]在我们的应用程序(使用ES客户端)中有一个类似(但可能无关)的问题。无论出于何种原因,它在周末变得疯狂,产生了9400个线程,这使得机器无法为同一用户帐户创建新线程。

ps-o nlwp,pid-fe帮助我发现了这一点,因此我可以消除错误的进程并使系统恢复到可用状态。非常感谢!

下面是一个来自我的Ubuntu系统(AWS VM)的示例。我怀疑你的“ps”看起来会非常非常不同:

# ps -o nlwp,pid -fe
NLWP   PID
   1 13409
   1 13410
   1 13418
   1   915
   1   911

增编:

我将操作系统(从Ubuntu 18.04 LTS 64位)切换到CentOS 8,现在它工作得很好。

 类似资料:
  • 问题内容: 我看到这样的评论 我见过这个问题的一个地方是,如果您继续创建线程,而不是直接在线程对象上调用run(),而不是调用start()。这将导致线程对象不被取消引用…因此,一段时间后,出现无法创建新本机线程的消息 在Sun Java论坛上 在我的应用程序中,最初我们计划使用线程,但是后来,我们决定不再需要线程,因此我们只调用run()而不是start()。我们是否需要为新的threadCla

  • 我试图在(1and1VPS)上运行服务器。就在服务器启动和客户机的几个请求(重新加载网页)之后,我得到了这个错误: 但是当我在计算机上运行时,一切都正常。我使用和Centos5.8新安装制作了自己的虚拟服务器,它也在那里工作。 这个内存不足错误的原因可能是什么?如果你有任何建议,请分享。我不知道该怎么处理这个了。

  • 它的发生是因为我创建了许多线程,而没有关闭它们?还是经常创造新的? 有人能告诉我在代码中是否做错了什么吗?

  • 运行5-6小时后,我从spark-driver程序中得到以下错误。我正在使用Ubuntu16.04LTS和Open-JDK-8。 cat/proc/sys/kernel/threads-max “无法创建新的本机线程”显然意味着它与堆无关。所以我相信这更多的是一个操作系统的问题。

  • 我想在我的虚拟服务器上启动一个野蝇。每次我运行./wilfly/bin/standalone.sh我在无融资创业时都会收到以下错误: 让我得到以下信息: 如您所见,虚拟内存是无限的,最大用户进程非常大。 在启动本文中描述的jvm时,我还使用-Xss256kb增加/减少了堆栈大小,但没有任何成功。 同样在standalone.xml中为每个子系统增加50也不起作用(在本文中描述)。 您还有其他想法如