转载请注明原创出处,谢谢! 因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全链路!).本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的. Linux系统参数层面的修改: 修改可打开文件数和用户最多可开发进程数 命令: ulimit -n 655350 ulimit –u 655350 可以通过ulimit –a查看参数设置,不设置时默认为1024,默认情况下,你会发现请求数到到一定数值后,再也上不去了. 操作系统内核优化 net.ipv4.tcp_max_t…
转载请注明原创出处,谢谢! 前几天有个朋友问了我个问题,下面给大家分享下,希望大家积极在评论区进行评论留言,等你来战!!! 先来个趣味题,热身下,引出后面的jvm题目. 地上的影子是那个人的? 地上的影子是左边人的还是右边人的? 哈哈哈,知道你一定挺纠结的吧.下面看看今天的jvm这个问题呢? 这个JVM现象该如何解释呢? 代码如下: private static final int _1MB = 1024 * 1024; public static void main(String[] args…
转载请注明原创出处,谢谢! 题目回顾 JVM菜鸟进阶高手之路十三,问题现象就是相同的代码,jvm参数不一样,表现的现象不一样. private static final int _1MB = 1024 * 1024; public static void main(String[] args) throws Exception { byte[] all1 = new byte[2 * _1MB]; byte[] all2 = new byte[2 * _1MB]; byte[] all3 = n…
https://mp.weixin.qq.com/s/qD1LFmsOiqZHD8iZX97OfA? 问题现象 代码如下,使用 ParNew + Serial Old 回收器组合与使用 ParNew + CMS 回收器组合时,结果为什么差异如此之大 ? private static final int _1MB = 1024 * 1024;    public static void main(String[] args) throws Exception {        byte[] all…
转载请注明原创出处,谢谢! 最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2.3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本解决oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时候啥不懂,直接粘贴,但是并没有解决问题,通过这个就告诉我们作为开发人员也需要对jvm很熟悉才行,问题来了,很多人会说我的代码并没有出现oom啊,不需要关注啊,因为不理解不知道重要性,可以回头看看的我的…
转载请注明原创出处,谢谢! gc日志问题 查看docker环境的gc日志,发现是下面这种情况,很奇怪,一直怀疑是docker环境那里是否有点问题,并没有怀疑配置,之前物理机上面的gc日志都是正常那种. 表示很奇怪,后来飞哥告诉我,有没有PrintGCDetails这个参数呀?一看果然,加上之后gc日志就和我们以前看的正常格式一样了. Xmn问题 -Xms4g -Xmx4g -Xmn3g 使用cms回收器,查看gc日志,发现一次ygc需要效果大概20s多,平均时间都在10s左右,入下图:查看jma…
转载请注明原创出处,谢谢! 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的. system.gc其实是做一次full gc system.gc会暂停整个进程 1小时1次FGC问题,该问题在高并发情况下对性能产生很大的波动不可小看,也许一个小小的调优可以给性能带来很大的改善.通过查看JVM参数的确发现了RMI的相关配置,如…
转载请注明原创出处,谢谢! 今天看群聊jvm,通常会问ygc合适吗? 阿飞总结,可能需要2个维度,1.单位时间执行次数,2.执行时间 ps -p pid -o etime 查看下进程的运行时间, 17天才这么点ygc,(这里算出频率),正常, 然后再算出ygc每次的时间,即142/7618=18ms,正常 -o后面可以加很多东西,可以通过ps L查看可以加哪些定义 总结性,3s一次ygc的频率,甚至频率更低,5s一次,7s一次,这是正常的:如果超过1s一次ygc,0.5s一次ygc那可能eden…
转载请注明原创出处,谢谢! 上次分析详细地址在:http://www.jianshu.com/p/a6236cd39e2d 以为上次问题是rmi的问题就此结束了,但是问题并没有结束,其实本次问题不是rmi问题导致的,但是rmi也的确可能会有sys.gc fullgc问题. 查看GC统计汇总情况: java jstat -gcutil pid 3s 30参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的System.gc()的默认效果是引发一次st…
转载请注明原创出处,谢谢! 今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下 关于jstat命令详情可以参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html 高手就是高手,就通过这个,直接提出1,就是达到old的92%的阈值了 不断做cms gc 2.估计是不断做system gc这些都是猜测,让执行 jstat -gccau…
转载请注明原创出处,谢谢! 经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章. 目前jdk9和jvm9的规范都还没有出来,很多细节估计还不清楚,基本就是通过官方介绍,看的. 所以各位看官莫急 去首页下载jdk9,你会发现: 不这么吓唬我们,我们一般不会这么快用的 之后下载页发现和以前的略有不同,没有32位了. 下载.安装和以前没有啥区别,之后运行效果: Java Platform,…
转载请注明原创出处,谢谢! 在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题.第八系列地址:http://www.jianshu.com/p/7f7cecb983cc. 关于MAT工具相关知识解惑 MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析,MAT下载地址,以及相关文档. 获取堆…
转载请注明原创出处,谢谢! 由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可: -verbose:gc -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/appl/gclogs/gc.log 备注:-Xloggc的目录需要提前建好. 个人公众号…
转载请注明原创出处,谢谢! 笨神大大分享: 小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法. -XX:MaxTenuringThreshold,这个参数主要是设置YGC的时候,新生代的对象正常情况下最多经过多少次YGC的过程会晋升到老年代. 注意这里表达的是最多,意思就是说某个对象其实并不一定要达到这个值才会晋升到old的,具体经过多少次ygc进入到old,这个取决于当时的具体情况,比如survivor的内存大小,以及那些活对象的情况.在CMS…
转载请注明原创出处,谢谢! 在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题.第八系列地址:http://www.cnblogs.com/lirenzuo/p/7582530.html. 关于MAT工具相关知识解惑 MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析,MAT下载地址,以及…
转载请注明原创出处,谢谢! 问题 这个Xmn设置为1G,,我用jmap -heap 看,这个Eden From To怎么不是一个整8:1:1的关系呢? 我看内存分配还是没变,我Xmn1g,感觉From.To应该都是102.4M才对,现在是102.375M. 执行命令 jstat -gc pid 1s 1 结果: 发现很奇怪,的确和我们相信的不一样,我觉得只有源码可以告诉我们他做了啥.查看源码: 执行上面的例子代码 public static void main(String[] args) {…
http://www.jianshu.com/u/3def157aab07?utm_medium=note-author-link&utm_source=mobile…
     版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lirenzuo/article/details/77164033 因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全链路).本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的. Linux系统参数层面的修改: 1.修改可打开文件数和用户最多可开发进程数 命令:ulimit -n 655350 ulimit –u 655350 可以通过ulimit –a查…
Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置.首先是对这几个参数的含义要有深刻而清楚的理解.以tomcat8.5为例,讲解参数. 同时也得认识到一点,tomcat调优也受制于linux内核.linux内核对tcp连接也有几个参数可以调优. 因此我们可以将tomcat调优分为linux内核优化.java虚拟机调优和tomcat自身的优化. 一.Tomcat自身优化 1. maxThreads :tomcat创建的最大线程数,也就是同时处理的请求最大并发数.默认值…
文章目录 tomcat调优 tomcat监控 tomcat调优 vi catalina.sh # ----------------------------------------------------------------------------- # Control Script for the CATALINA Server # # Environment Variable Prerequisites # # Do not set the variables in this script…
Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 (Final) Tomcat版本:   Apache-tomcat-7.0.54 Tomcat介绍: Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了…
tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复JRE内存泄漏 线程池设置 压缩 数据库性能调优 Tomcat本地库 其它选项 第1步 – 提高JVM栈内存Increase JVM heap memory 你使用过tomcat的话,简单的说就是"内存溢出". 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使…
目录 1. tomcat 启动慢 1.1 tomcat 获取随机值阻塞 1.2 tomcat 需要部署的web应用程序太多 1.3 tomcat启动内存不足 2 Connector 调优 2.2 Connector 其它属性调优 2.3 Host 属性调优 2.3 tomcat线程关闭不掉调优(代码层) 2.4 AJP 连接器禁用 3 JVM 设置 1. tomcat 启动慢 在线上环境中,我们经常会遇到类似的问题,就是tomcat 启动比较慢,查看内存和cpu,io都是正常的,但是启动很慢,有…
一.Tomcat和apache的比较 共同点:apache和tomcat都是属于web服务器. 不同点:他们是两个不同的容器,承载的东西不一样,tomcat属于一种java应用的服务 器,只针对java提供,比如JSP:apache都是属于web服务器,给web服务,比如HTML. 二.启动tomcat服务 首先启动tomcat 输入命令 service tomcat6 start 浏览器输入:http://192.168.110.131:8080/ 点击进入status Server stat…
Tomcat 调优技巧:1.Tomcat自身调优: ①采用动静分离节约Tomcat的性能: ②调整Tomcat的线程池: ③调整Tomcat的连接器: ④修改Tomcat的运行模式: ⑤禁用AJP连接器: 2.JVM调优 具体调优过程:1.采用动静分离: 静态资源如果都让Tomcat处理的话,Tomcat的性能会被损耗很多,所以我们一般都是采用:NGINX+Tomcat实现动静分离,让Tomcat只负责jsp文件的解析工作,Nginx实现静态资源的访问. 2.调优Tomcat线程池: 打开Tom…
一.前言 最近整理了 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,Tomcat 调优大致分为两大类. 1.Tomcat的自身调优 采用动静分离节约 Tomcat 的性能 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 Tomcat 的运行模式 禁用 AJP 连接器 2.JVM的调优 调优Jvm内存   二.Tomcat 自身调优 1.采用动…
测试环境: OS: Ubuntu14.04 64位 (运行在Docker1.9) CPU: Intel i3 双核四线程 Mem: 8G Tomcat版本: Tomcat8.5 Java SDK版本: JDK 8 测试软件: Apache JMeter 2.8 测试说明: 测试代码为接受一个http请求,返回一个String变量s. 该变量初始化为””, 循环10000次,每次添加内容”test ” public class Test extends HttpServlet { @Overrid…
描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,tomcat调优大致分为两大类: 一.tomcat的自身调优 采用动静分离节约tomcat的性能 调整tomcat的线程池 调整tomcat的连接器 修改tomcat的运行模式 禁用AJP连接器 二.jvm的调优 调优Jvm内存 tomcat自身调优 采用动静分离 静态资源如果让to…
转载:www.cnblogs.com/wangsen, https://mp.weixin.qq.com/s/WrIsOOyR7o4SwSXMT0Zecg 最近,看到一篇讲述 Tomcat 调优的文章,写得挺不错的,由于之前写了好几篇关于 Tomcat 的文章,这篇分享给各位读者,做一下补充. 原文如下. 一.描述 最近,在补充自己的短板,刚好整理到 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用…
前言 在这里告诫一下那些感觉自己啥都会的朋友们,其实你会的可能只是皮毛,不要感觉这个东西以前已经做过了,就不想去做了 其实你还远没有达到精通的地步,遇到以前做过的东西,也要用心的再去做一遍,你可能会从中学习到以前没学到的知识点 一.Tomcat调优主要内容如下: 1.增加最大连接数 配置过Tomcat的同学,应该都知道这个配置,好多地方也建议你,把这个配置调到最大(1000),如果服务器本身的性能允许的话 2.调整工作模式 tomcat下工作模式有三种,bio   nio   apr bio (…