JAVA本地环境启动OOM问题排查
1.问题描述
每次启动信息报错如下:
2.排查过程
2.1起初怀疑是堆内存不够:
将本地队内存调整由-Xms512M,-Xmx1024M,改成与测试环境相同1536M,还是失败
如上图报错中有notify问题,怀疑notify启动占用线程数过多,增加如下线程限制:
后进行重启测试,发现还是启动报错,排除notify问题
2.2后续怀疑是线程空间占用过大
调整xss 128k
一般说来,Stack Space为128K是够用的。不过既然报错按照160k进行更改,直接报错如下
栈空间溢出。。。放弃此路。。
2.3既然自己机器不行,试试别人机器以及日常环境
日常环境ok,同事eclipse ok (Windows),同事 idea 启动失败(mac)
比较奇怪。。要不要放弃idea。。后排查eclipse启成功以及日常成功原因
日常环境
:ulimit -u 显示:131072
mac环境
:ulimit -u 显示:709
注: ulimit -u由此可以看出最大线程数差异,也理解了为何mac启动cannot create native thread
备注:可以进行修改,但是根本原因没找到,因此未进行调整
ulimit -u 65535 命令或者直接修改limits.conf文件,将max user process参数修改为65535。
2.4启动后加入HeapDumpOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
并没有任何日志。。。。
3 问题再次思考:到底多少内存,才能合适的创建最多的线程,保证线程够用?
有了以上理论支撑,因此不是堆内存调的越大越好
3 换个思路从头再来
idea 装入java virtualvm插件
http://www.oschina.net/translate/setting-up-visualvm-in-under-5-minutes
真相大白。。。DTS起了1800左右线程。。。
`后沟通dts负责同学,因是并行计算job 执行频率高老的版本没有进行好的线程回收,否则线上也可能会有OOM
因此需要dts版本升级,目前最稳定版本1.6.3`
总结
花了一定精力排查,环境各种折腾jdk升级、tomcat升级,差点从idea转成eclipse,终于水落石出~建议对dts进行升级,避免线上带来不必要的麻烦~
JAVA本地环境启动OOM问题排查的更多相关文章
- Java 本地环境设置
如果你希望在你的本地环境中设置 Java 程序环境,下面的这部分将会指导你在你的本地计算机上下载和设置 Java 环境.你可以按照下面的步骤进行. Java SE 目前是免费下载的,你可以通过单击下面 ...
- BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符
问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...
- zk strom 本地环境启动命令
bin/zkServer.sh statusbin/zkServer.sh startbin/storm nimbus &bin/storm ui &bin/storm drpc &a ...
- 本地部署JAVA SE环境
一.下载安装JDK: 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-doc-downloads-2133158. ...
- java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)
概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...
- JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝 ...
- 定制化Azure站点Java运行环境(5)
Java 8下PermGen及参数设置 在上一章节中,我们定制化使用了Java 8环境,使用我们的测试页面打印出了JVM基本参数,但如果我们自己观察,会发现在MXBeans中,没有出现PermGen的 ...
- Jenkins 通过 maven 构建编译 JAVA 项目环境
Jenkins 通过maven 构建编译 JAVA 项目环境 官网下载合适Jenkins版本包: 1.jenkins http://mirrors.jenkins.io/war-stable/ 2.J ...
- JAVA开发环境和IntelliJ工具安装
在本地开发机中进行web项目的开发,部署到生产环境进行产品发布时,需要将web应用的文件打包成war包,War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动, ...
随机推荐
- openstack pike 集群高可用 安装 部署 目录汇总
# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...
- HDU5804--Price List
Price List Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) Tot ...
- scapy安装及SCTP包分析
关于Scapy scapy是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等.它可以很容易地处理一些典型操作,比如端口 ...
- Python---初识堡垒机
在学习堡垒机之前,我们需要首先了解下Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...
- NOIP2012junior—P1—质因数分解
NOIP2012junior-P1-质因数分解 时间: 1000ms / 空间: 131072KB [背景] NOIP2012[描述] 已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数. [ ...
- bitcms 一个迟到的项目,一个老程序的项目总结
经历长达两年的开发,两个版本的更换.bitcms要终于面世了.先来接受大家的吐嘈.项目文档,慢慢完善中... 首先先来介绍下项目 bitcms是由asp.net开发,sqlite为数据库的开源内容管理 ...
- 【机器学习】RNN学习
感谢中国人民大学的胡鹤老师,课程容量巨大,收获颇丰. 之前提到的CNN模型主要用到人类的视觉中枢,但其有一劣势,无论是人类的视觉神经还是听觉神经,所接受到的都是一个连续的序列,使用CNN相当于割裂了前 ...
- TP3.2 图片上传及缩略图
基于TP自带的上传文件的类, Think/Upload.class.php 设置表单的enctype属性 下面是上传的具体方法 /** * 图片上传处理 * @param [String] $path ...
- Intent及IntentFilter具体解释
Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同一时候还是组件之间通信的重要媒介. 使用Intent启动组件的优势 1, Intent为组 ...
- JAVA入门[20]-Spring Data JPA简单示例
Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ...