java.lang.OutOfMemoryError:无法在Java(Play Framework)中创建新的本机线程

2022-02-22 00:00:00 out-of-memory playframework java
我的应用程序中的

在Amazon AWS实例中运行。在这些代码中,我得到了java.lang.OutofMemory错误。我的实例在ubuntu机器上运行。以下是我收到的错误信息。我向谷歌咨询过此问题,但未找到有关此错误的任何解决方案。

    java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:640)
        at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:727)
        at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:176)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:156)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:325)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
我想知道这些错误是什么时候发生,以及我们如何防止这种情况发生。

提前感谢。


解决方案

我在使用JMeter运行大量并发进程测试应用程序时遇到了同样的问题。我使用的是Fedora,默认情况下可用的进程数量是1024。

您可以通过在命令行输入ulimit-u查看最大进程数,要永久更改最大进程数,只需编辑/etc/security/limits.conf下的文件,并在文件末尾添加以下行:

用户名软nproc xx

用户名Hard nproc xx

例如,将用户ibai的最大进程数设置为10000

IBAI软件nproc 10000

IBAI硬核处理器10000

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/sect-Oracle_9i_and_10g_Tuning_Guide-Setting_Shell_Limits_for_the_Oracle_User-Limiting_Maximum_Number_of_Processes_Available_for_the_Oracle_User.html

相关文章