java.lang.OutOfMemoryError: unable to create new native thread
2021/8/6 11:35:48
本文主要是介绍java.lang.OutOfMemoryError: unable to create new native thread,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux普通用户运行服务报错java.lang.OutOfMemoryError: unable to create new native thread
解释
这个错误在高并发请求服务器经常会出现,因为这个native thread 异常与对应的平台有关。
导致原因
你的应用创建太多线程了,一个应用进程创建多个线程,超过系统承载极限。
你的服务器并不允许你的应用程序创建这么多线程,linux系统默认允许单个进程可以创建的线程数是1024个,你的应用创建超过这个数量,就会报java.lang.OutOfMemoryError: unable to create new native thread异常。
解决办法
想办法降低你应用程序创建线程的数量,分析应用是否真的需要创建这么多线程,如果不是,改代码将线程数降到最低。
对应有的应用,确实需要创建很多线程,远超过linux系统默认1024个线程的限制,可以通过修改linux服务器配置扩大linux默认限制。
查看当前系统应用使用进程数
ps -eLf | wc -l 17035
查看用户最大线程数(切换普通用户查看)
ulimit -u 4096
可以看出默认的普通用户只有4096。不足以运行当前的这些应用。所以报不能创建新的线程。
线程数配置文件
vim /etc/security/limits.d/20-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096 root soft nproc unlimited
修改最大线程数
vim /etc/security/limits.d/20-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096 root soft nproc unlimited 普通用户名 soft nproc 50000
修改完需要重启服务器,配置才能生效
重启
查看
ulimit -u 50000
完成
这篇关于java.lang.OutOfMemoryError: unable to create new native thread的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)