• 首先很容易排除是 程序问题

    • 内存用了很少,64 位 Java也没有内存限制,线程也不多,-Xss 堆栈也没人会配置很大。
    • 那么肯定是 limit 不足引起
  • 配置 ulimit 就可以了,问题看起来很简单,但是问题为什么有时候难以解决,因为涉及 Uinux 下面因素
    • 到底那一个 limit 控制
    • 到底 soft 还是 hard
    • 设置在 /etc/security/limits.conf, 还是用户 Profile
    • 如果是 crontab 启动又如何配置
  • 澄清概念
    • Java 线程数多少是受 max user processes 控制
    • max user processes 是什么
      • 也就是 /etc/security/limits.conf 下面:

* soft nproc 4096
* hard nproc 16384

或者是下面

bash-3.2$ ulimit -a
max user processes              (-u) 4096

    • hard / soft 区别

      • hard 只能 root 设置,允许的最大值。
      • soft 意味着用户的默认值。用户自己用户可以通过  ulimit -u  重新配置成为小于 hard 的值。
    • 怎么修改
        • hard 只能 root 设置 - 修改文件/etc/security/limits.conf,并重启 OS
        • Soft - ulimit -u 10240 , 比如这个命令就改成 10240 了,没超过 hard 的 16384 。
    • crontab 环境变量
      • 注意和用户登录到 OS shell 得到的是不一样的,它不读任何的用户 profile
        所以要特别使用 source xxxx/profile  或者  . xxxx/profile 来引入环境变量 (务必不能 sh xxxx/profile, 这是设置到新启动的 shell 里面了)。
  • 如何配置
    • 如下配置,并重启 OS 是最最简单的方法,也就是 /etc/security/limits.conf 下面:

* soft nproc 16384
* hard nproc 16384

    • 如果是其它不同的配置,要理解上面的概念并相应操作
  • 附一段最简单代码来测试能启动的线程数:
public class ThreadsTest extends Thread {

	  public ThreadsTest() {
start();
} public void run() {
while(true) {
try {
Thread.sleep(120000);
}catch (Exception e)
          {System.out.print(e);}
}
} public static void main(String[] args) {
for(int i = 0;; i++){
new ThreadsTest();
System.out.println("Thread ...: " + i);}
}
}

再谈 Unlix (Linux, AIX, HPUX) 上 Java 的 java.lang.OutOfMemoryError: unable to create new native thread的更多相关文章

  1. 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 创建线程数公式(MaxProcessMemory - JVMMemory – ReservedOsMemory)

    剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 星期一早上到了公司,据称产品环境抛出了最可爱的异常—OutO ...

  2. 记一次内存溢出java.lang.OutOfMemoryError: unable to create new native thread

    一.问题: 春节将至,系统访问量进入高峰期.随之系统出现了异常:java.lang.OutOfMemoryError: unable to create new native thread.在解决这个 ...

  3. [java] [error] java.lang.OutOfMemoryError: unable to create new native thread

    前言 最近公司的服务器出现了oom的报错,经过一番排查,终于找到了原因.写下这篇博客是为了记录下查找的过程,也是为了帮助那些跟我门遇到的情况相同的人可以更快的寻找到答案. 环境 系统:linux(ce ...

  4. java.lang.OutOfMemoryError: unable to create new native thread如何解决

    工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题.分析问题.解决问题. 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 ( ...

  5. spark java.lang.OutOfMemoryError: unable to create new native thread

    最近迁移集群,在hadoop-2.8.4 的yarn上跑 spark 程序 报了以下错误 java.lang.OutOfMemoryError: unable to create new native ...

  6. 解决java.lang.OutOfMemoryError: unable to create new native thread问题

    解决:1.升级JVM到最新的版本 最新版本的JVM一般在内存优化方面做的更好,升级JVM到最新的版本可能会缓解测问题2.从操作系统层面去解决 使用64位操作系统 如果使用32位操作系统遇到unable ...

  7. 关于“java.lang.OutOfMemoryError : unable to create new native Thread”的报错问题

    好吧 我发誓这是postgresql的Mirroring Controller的RT测试的最后一个坑了. 在这个RT测试的最后,要求测试Mirroring Controller功能在长时间运行下的稳定 ...

  8. JVM内存越多,能创建的线程越少,越容易发生java.lang.OutOfMemoryError: unable to create new native thread。

    一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse ...

  9. spark大批量读取Hbase时出现java.lang.OutOfMemoryError: unable to create new native thread

    这个问题我去网上搜索了一下,发现了很多的解决方案都是增加的nproc数量,即用户最大线程数的数量,但我修改了并没有解决问题,最终是通过修改hadoop集群的最大线程数解决问题的. 并且网络上的回答多数 ...

随机推荐

  1. 参数中带有“&”符号问题

    今天写程序时遇到一个问题: /login.do?service=9861.htm?id=117&pageNo=1 这个链接中有两个问号,以至于后台取参数 service的值时把 &pa ...

  2. 如何把自己打造成技术圈的papi酱

    最近半年,一个叫papi酱的平胸女子连续在微博.朋友圈.创业圈刷屏,当之无愧成了中文互联网的第一大网红.呃,你以为我会巴拉巴拉说一堆网工创业的事?NO,今天想借papi酱的话题跟大家一起聊聊程序员如何 ...

  3. kafka java代码实现消费者

    public class KafkaConsumer { public static void main(String[] args) { Properties props = new Propert ...

  4. 在CentOS 6.6下安装与配置mysql

    1.使用yum安装mysql yum list | grep mysql   //查看mysql信息 yum install mysql-server.x86_64 //安装mysql sudo ap ...

  5. raw socket

    一个很newbee的例子,可惜还得改 import sys import time import socket import struct import random def SendPacketDa ...

  6. Linux的硬链接为何不能链接目录

    Linux中的目录文件是特殊的文件,其中的数据是一个关联列表的,像c++中的map,或者Python中的dict,保存每个文件名(包括子目录,Linux中一切皆文件!)到iNode的映射.iNode本 ...

  7. 从零开始学Linux[二]:常用操作:用户组、进程、网络、ssh

    摘要:Linux基础学习:创建用户组和用户.软件包管理.磁盘管理.进程管理.前后台进程的切换.网络配置.浏览网页.远程登录ssh 第一节,主要介绍一些简单命令,这节介绍一些日常操作. 1.创建用户组和 ...

  8. 用OOP设计以下场景。太阳发出太阳光,照射在墙壁上,在地面形成影子。

    首先分析出有哪些实体类,太阳.太阳光.墙壁.地面.影子 然后分析太阳应该继承自发光体类.太阳光继承自光类.墙壁继承自物体类 地面是一个承载影子的容器.

  9. 【Selenium】4.创建你的第一个Selenium IDE脚本

    http://newtours.demoaut.com/ 这个网站将会用来作为我们测试的网址. 通过录制来创建一个脚本 让我们来用最普遍的方法——录制来创建一个脚本.然后,我们将会用回放的功能来执行录 ...

  10. ESB 中的流量控制

    ESB 中的流量控制