相同环境,java运行速度慢几倍

2 篇文章 0 订阅
2 篇文章 0 订阅

问题描述

在本地环境中执行数据库查询的时间是1s左右,而在paas平台中执行相同操作时,需要消耗6秒左右。操作的数据是一样的。

问题分析过程

1、调整容日的基本参数和jvm的参数和本地一致,尽量排除环境参数的干扰。
本地环境:cpu 8核,内存16G。jvm配置参数:Xms\Xmx 8192m\8192m
docker容器:cpu 8核,内存16G。jvm配置参数:Xms\Xmx 8192m\8192m
调整之后重新部署服务,问题依旧存在。
2、查看容器的运行参数:cpu和内存利用率。
使用docker stats 容器id 查看。注意:paas平台的性能统计的最小时间粒度是分(因平台而异),不能实时反映容器的运行参数。–被这个性能参数误导了好久。
不进行操作的时候cpu利用率在20%左右,一旦执行查询操作,cpu利用率飙升,大于100%。
与本地对比,本地在执行操作的时候cpu利用率在40%左右。嘻嘻,出现点眉目。
3、增大cpu核数。问题仍未解决。查询是单线程操作,和cpu核数应该没有什么关系。
4、查看启动脚本,发现jvm开启了的debug模式。关闭debug模式,继续尝试。问题解决,查询速度和本地一致。操作时,cpu利用率在40%左右。
总结:jvm开启debug模式后,比较消耗cpu!!!

问题查询过程中的知识积累

1、查看docker容器运行状态:
docker stats 容器id
2、jvm参数
ms/mx:定义YOUNG+OLD段的总尺寸,ms为JVM启动时YOUNG+OLD的内存大小;mx为最大可占用的YOUNG+OLD内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
NewSize/MaxNewSize:定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
PermSize/MaxPermSize:定义Perm段的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
SurvivorRatio:设置Survivor空间和Eden空间的比例
参考出处

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值