Web调优之IBM JDK+liberty(一): Jmeter pod里压力,50个线程并发测试,调整 -Xms -Xms, Log原来是大问题
1.运行环境
k8s
Web服务器: Liberty(IBM J9 JDK),base image : FROM websphere-liberty:20.0.0.3-kernel-java8-ibmjava
DB: DB2
WebApp 简介: 一个简单的Restful服务,从DB2 Select若干条数据
测试环境: 为防VPN等家里网络影响测试效果,在另外一个POD上装Jmeter,这样用POD调用POD,测试结果比较准确
2.调优前
2.1 环境设置
JVM setup: -Xms -Xmx : 2G Xmn:1G
Liberty connector: <connectionManager minPoolSize=“50” maxPoolSize=“50" purgePolicy=“FailingConnectionOnly”/>
DB 最大连接数: 50
2.2 50个并发压测结果
3. 分析50个线程压测30分钟结果
3.1 结果
- Global GC 发生了11次,后面平均2分钟左右一次
- Local GC发生了558次,基本3-4秒一次
- Contrast 最多占了28%左右的工作线程,占了700M的内存
- 很多线程在执行new relic
- 很多线程park, 因为mybatis 在输出log (在这次压测之前,通过new relic分析调用栈发现占用时间最多的是打印log,原来通过AOP记录日志的代码已经关闭)
第一次dump的内存使用率
Nursery Area Free : 767,422,912 bytes Total : 1,048,576,000 bytes 73 % free
Tenured Area Free : 951,384,856 bytes Total : 1,098,907,648 bytes 86% free
最后一次dump的内存使用率
Nursery Area Free : 791,680,088 bytes Total : 1,048,576,000 bytes 75 % free
Tenured Area Free : 671,331,936 bytes Total : 1,098,907,648 bytes 61% free
3.2 措施
- 调整Xms Xmx 为 4G, Xmn为2G
- 关闭Contrast 和 new relic
- 调整日志level为error,即很少有日志输出。
4.3 效果
1. Local GC每1-2s一次,反而更多,因为Throughput 加大,每秒处理的请求从39变成了630,所以GC更频繁,但是每次回收效果不错, 所以尚可接受
Global GC只在压测的刚开始发生了一次(前面也压测过)
2. Global GC 就没有发生,即压测的半个小时没有Global GC
3. Park 的进程数由23%左右变成11%左右
4. 平均响应时间由1260ms 变成 79.2ms, 原来的运行时间是现在的16倍,Trasactions/s由39s变成630
Web调优之IBM JDK+liberty(一): Jmeter pod里压力,50个线程并发测试,调整 -Xms -Xms, Log原来是大问题的更多相关文章
- jmeter之如何减负-实现稳定超高并发测试(性能调优)之正确添加监听器
jmeter之如何减负-实现稳定超高并发测试(性能调优)在测试过程中,初学者使用工具不当,添加众多监控组件,非常想看到实时报告,跑不了一会,jmeter就卡死,只得重启 下面来总结下如何正确使用jme ...
- JVM调优前戏之JDK命令行工具---jhat
在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...
- JVM调优前戏之JDK命令行工具---jstack
在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...
- Tomcat性能调优
1.集成apache 虽然Tomcat也可以作web服务器,但是处理静态html的速度比不上apache,且其作为web服务器的功能远不如Apache,因此把apache和tomcat集成起来,讲ht ...
- Tomcat 调优总结
一. jvm参数调优 常见的生产环境tomcat启动脚本里常见如下的参数,我们依次来解释各个参数意义. export JAVA_OPTS="-server -Xms1400M -Xmx140 ...
- Java GC 专家系列3:GC调优实践
本篇是”GC专家系列“的第三篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种G ...
- 基于Dubbo的压测调优实例
不久前参与开发了一个基于dubbo分布式框架的底层账单系统,并实现了其中的一部分业务接口,目前需对这些接口进行压测,以评估生产环境所能承受的最大吞吐量.笔者以其中一个查询接口为例来回顾此次压测的整体流 ...
- JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
转载请注明原创出处,谢谢! 因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全链路!).本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的. Linux系统参数层面的 ...
- JVM高手之路七(tomcat调优以及tomcat7、8性能对比)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lirenzuo/article/details/77164033 因为每个链路都会对其性能 ...
随机推荐
- python 3 for嵌套
- 在自己win系统里面给idea配置Git
这里直接是写好的步骤 下载链接
- maven安装配置以及eclipse的配置
一.需要准备的东西 JDK Eclipse Maven程序包 二.下载与安装 前往https://maven.apache.org/download.cgi下载最新版的Maven程序: 将文件解压到D ...
- 搜索引擎学习(六)Query的子类查询
Query的子类查询 PS:这是通用代码,下面的子类查询调用到的时候就不再写这部分的具体的实现过程了 /** * 构造IndexSearcher对象 * * @return * @throws Exc ...
- vue +signalR 实现服务端到客户端消息发送
承接上一篇 上一篇博客实现是了消息的实时通信,这一篇博客主要讲如何从中心服务内部向客户端发送消息. 先看下最终效果: 在core应用程序里加一个控制器TestController 注入控制器中的IHu ...
- 关于sqlmap当中tamper脚本编码绕过原理的一些总结(学习python没多久有些地方肯定理解有些小问题)
sqlmap中tamper脚本分析编写 置十对一些编码实现的脚本,很多sqlmap里面需要引用的无法实现,所以有一部分例如keywords就只写写了几个引用了一下,其实这里很多脚本运用是可以绕过安全狗 ...
- ios自动识别电话并变色的问题解决方法
问题: 在做移动端页面时发现长串数字都被ios系统的手机识别为电话号码,且文字变成很土的蓝色,点击有下划线并弹出提示拨打该电话号码. 解决方法: 1.在head中加上下面这行代码就OK了(仅限于单页面 ...
- Spring学习(一)--Spring的设计与整体架构
之前只是在学校里大概的学习了一下Spring框架的使用以及一些最基本.浅显的原理,并没有做出深入的学习,等到工作之后想提升自己的时候发现所掌握的Spring框架的简直烂如狗屎,为监督自己的学习进度,立 ...
- 报表和仪表板在线设计器Stimulsoft Designer 最新版发布
Stimulsoft Designer是统一的Stimulsoft框架的一部分,该框架包括用于生成报表和分析数据的引擎.报表设计器和查看器. 您可以在计算机上创建报表,继续使用在线设计器在云中对其进行 ...
- Java (三)APACHE Commons IO 常规操作
上一篇:Java (二)基于Eclipse配置Commons IO的环境 例1:查看文件.文件夹的长度(大小). 1 import java.io.File; 2 3 import org.apach ...