首先很容易排除是 程序问题
内存用了很少,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 nproc16384
* 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);}
}
}
随机推荐
android的apk逆向工程后的文件目录介绍
一.用压缩软件打开apk,得到五个文件或文件夹 1.META-INF 2.res 3.AndroidManifest.xml 4.classes.dex 5.resources.arsc 二.xml文 ...
对话框AlertDialog.Builder使用方法
我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...
C#模拟浏览器发get,post请求
调用: JArray ja = (JArray)JsonConvert.DeserializeObject("["+GetDataPost()+"]"); Re ...
careercup-递归和动态规划 9.10
9.10 给你一堆n个箱子,箱子宽w,高h,深d.箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子.实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和. 解法: ...
MVC-Easy-UI-datagrid-分页-查询
时间仓促,代码写的乱,莫怪,着影区不用理会(功能之外)
自定义JSTL函数标签(一)
jstl标签库的配置 * 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar) 注意:jstl必须在能够支持j2ee1.4/servl ...
基于HTML5 Canvas 实现商场监控
伴随国内经济的高速发展,人们对安全的要求越来越高.为了防止下列情况的发生,您需要考虑安装安防系统: 提供证据与线索:很多工厂银行发生偷盗或者事故相关机关可以根据录像信息侦破案件,这个是非常重要的一个线 ...
oracle 多版本
并发控制 concurrency control 数据库提供的函数集合,允许多个人同时访问和修改数据. 锁(lock)是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间“相互干涉”的核心 ...
01JAVA语言基础课后作业
1.问题 一个Java类文件中真的只能有一个公有类吗? 请使用Eclipse或javac检测一下以下代码,有错吗? 回答 真的只能有一个公有类 一个Java源文件中最多只能有一个public类,当有 ...