本篇共引起三个问题:
1、ulimit 的调整(否则将默认进程只能创建1024个线程)
2、XSS配置的说明(默认线程为1M,此处配置XSS线程所占用内存为246K)
3、 线程所占用的内存为堆外内存(相比大家也都知晓该问题,本篇也是因为服务内存不足,调整Ulimit后还是存在oom的问题,而最终引起并说明下该线程堆外的问题)
 
 
注意:(java中每实例化一个线程,则是向操作系统服务器请求实例化一个本地内存,并非是直接使用的JVM中所配置的堆的内存的大小,,需注意,)
在直接使用线上内存分析时,曾出现类似的一个问题是这样的,
线上服务器共8G内存,通过 ps -ef|grep java,可以查看共部署了3台服务,
前两台robot服务,分别配置Xms为2G,我们的core设置JVM参数为-Xms为3G,
此时则已经吃掉了7G的内存,除去服务器自身再吃掉500M内存,那么此时可供使用的内存仅有
500M左右,而此时服务器频繁报错异常则为,

 
不能够创建新的本地线程,最初时怀疑是 linux 服务器所设置的进程可开启线程数较少的原因,查看ulimit -a 发现,服务器的确没有被优化过,默认ulimit -u的参数值为1024,即的确没有调整过linux服务器的最大线程创建数的值,    
      此时通过linux -u调整参数为 10240,在已有的可创建线程数量上乘以10,需要提及一下(此时的,JVM针对单个线程的堆栈占用内存此时配置的是246K,线程所设置的占用内存较小,则
      可以保证所创建的线程的数量越多,这是ok的)
      此时在设置了ulimit参数后,过了一天,重复出现了,本地线程创建失败,内存异常的提示,此时则确认原因为:java线程在实例化创建时,是向服务器操作系统申请内存进行线程的创建,并非是使用的JVM所配置的堆的内存空间进行创建,所以此时问题已经可以很明显了,服务器基本还剩余的500M内存,是不够线程的创建数量的,并且是部署了三个项目的情况下,分别开了三个容器Jetty,
      三个项目同时运行,所开启的线程数,必然是500M内存,所不够的,所以此时的解决方式则是,
       1.申请增加服务器内存,
      2. 重新调整三个容器中JVM的配置参数,
即调小JVM的堆的内存配置,剩余出较多的服务器内存,用于创建线程时使用,调整了-Xms和-Xmx的堆内存配置,
当然,既然已经调整了Xmx堆的内存配置,则同步也调整了年轻代,Xmn的配置,
此处我们的配置比例基本为3:1,即堆内存和年轻代的设置比例
 

常见的 由于未调整服务器 ulimit 而引起的内存溢出问题的更多相关文章

  1. linux服务器下tomcat部署项目内存溢出

    今天将一个项目部署到linux服务器上,结果tomcat在启动运行到一定时间后就报错.根据以往的经验,查了一些资料,终于解决了该问题并顺便解决了生产环境中的get方式中文传递乱码问题. tomcat启 ...

  2. commons-dbcp2 新版本2.6使用连接池在关闭服务器的时候会有内存溢出的BUG....

    这是异常信息.本人使用的mysql8.0数据库驱动版本mysql-connector-java Version 8.0.11,发生这种情况的原因主要是Dbcp2的XBasicDataSource在关闭 ...

  3. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  4. Httpd服务入门知识-Httpd服务常见配置案例之显示服务器版本信息

    Httpd服务入门知识-Httpd服务常见配置案例之显示服务器版本信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.httpd配置文件的组成 1>.主要组成 Globa ...

  5. Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

    最近老是遇见服务器内存溢出的问题,故在网上搜了搜,总结了一些java内存溢出的解决方式 java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都 ...

  6. .Net 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结

    .Net 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结 在什么情况下会出现OutOfMemonryException呢? 在我们试图新建一个对象时,而垃圾 ...

  7. 性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

    堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java h ...

  8. [转]Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

    原文地址: http://outofmemory.cn/c/java-outOfMemoryError java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生 ...

  9. Java常见的几种内存溢出及解决方法

    Java常见的几种内存溢出及解决方法[情况一]:java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另一 ...

随机推荐

  1. MySQL8.0 新特性 Hash Join

    概述&背景 MySQL一直被人诟病没有实现HashJoin,最新发布的8.0.18已经带上了这个功能,令人欣喜.有时候在想,MySQL为什么一直不支持HashJoin呢?我想可能是因为MySQ ...

  2. docker容器访问宿主机的IP——以rocketmq管理工具为例

    在宿主机(MacOS系统)上运行了原生的RocketMQ服务,为了方便管理,需要以Docker方式运行RocketMQ的管理工具——rocketmq-console (项目地址:https://git ...

  3. 【Android - 组件】之IntentFilter的匹配规则

    我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动.显式启动需要明确的指定被启动的对象的组件信息,包括包名和类名:而隐式启动需要 Intent 能够匹配目标组件的 IntentFi ...

  4. rug

    rug()函数 :给图添加rug representation. · 一维的 · rug的方式是补充,仅仅包括落在图像区域内的x的值,丢失掉任何有限的值,将会被警告:而丢失任何非有限的值,则静静地丢失 ...

  5. VMware中windows虚拟机的安装流程

    1.打开安装的VMware 15,点击新建虚拟机 2.选择典型即可,点击下一步          3.选择“稍后安装操作系统”,点击下一步        4.选择想安的版本,点击下一步         ...

  6. PAT(甲级)2017年秋季考试

    PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...

  7. gulp+webpack+angular1的一点小经验(第二部分webpack包起来的angular1)

    又一周过去了,项目也已经做得有点模样了.收集来一些小经验,分享给大家,有疏漏之处,还望指正,海涵. 上周整合了gulp与webpack,那么工具准备差不多了,我们就开始编码吧.编码的框架就是angul ...

  8. Delphi - 调用SuperDll 持续更新

    调用SuperDll 接上一篇Delphi创建Superdll,将生成的SuperDll.dll文件复制到本工程路径下,创建如下代码进行Superdll各个接口的测试. 创建uSuperDll.pas ...

  9. js3——表格下拉

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. 0-N-0计数的优化写法

    采用取余%的写法: int i = 0; while( 1 ) { printf( "%d\n", i ); i = ( i + 1 ) % ( N + 1 );}