文档章节

jconsole观察分析Java程序的运行,进行排错调优

j
 johnli
发布于 2016/09/29 17:12
字数 578
阅读 20
收藏 0

jsconsole非授权远程连接

-Djava.rmi.server.hostname=172.16.10.218 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

linux运行定时任务程序 报错如下:

Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: =mail.06taobao.com

解决:hostname =wangfw-smarttrip-dev-8.novalocal 没有对应一个ip地址,在/etc/hosts中添加127.0.0.1 =wangfw-smarttrip-dev-8.novalocal

授权连接可以看看这篇文章:

http://www.linuxidc.com/Linux/2015-02/113420.htm

性能分析

下面说说如何分析,如何使用这六个标签

概述: Displays overview information about the Java VM and monitored values.

内存: 显示内存使用信息

线程: 显示线程使用信息

类: 显示类装载信息

*VM摘要:*显示java VM信息

MBeans: 显示 MBeans.

以上这些介绍大家可以看下这篇博客详细介绍

http://jiajun.iteye.com/blog/810150

这里主要讲解下根据jsconsole线程提供的堆栈信息检查判断性能瓶颈

背景如下:

这里两天做下单的性能测试发现,在优化Thrfit接口参数以及调优了jvm参数之后,最好的tps就是在80左右,无法再往上提升了;

Thrift 默认socket连接轮休线程数,以及逻辑处理线程数,所以有时候还是需要改下对应的默认参数的,我们项目组优化了这两个参数之后,tps直接翻倍

 /** The number of threads for selecting on already-accepted connections */
    public int selectorThreads = 2;
    /**
     * The size of the executor service (if none is specified) that will handle
     * invocations. This may be set to 0, in which case invocations will be
     * handled directly on the selector threads (as is in TNonblockingServer)
     */
    private int workerThreads = 5;

以下为线程堆栈信息,下面对应指向了交易的代码;review此处代码发现,这个地方存在数据库锁,所以不管优化哪里,此处都会存在竞争关系,所以必须等待,这也就是为什么tps上不去的原因;

输入图片说明

// 商品已售数量增加减操作;
		int effectRow = goodModuleDao.updateGoodsBuyRuleHadSaleNumForPackage(packageGoods.getGoodsPackageBuyRule()
				.getId(), voucher.getMaxUseNumber());
		if (effectRow != 1) {
			logger.error("商品库存不足 voucherData" + voucherData);
			throw new BussinessExceptionNeedCatch(OrderModuleErrorCode.GOODS_STOCK_FINISH_ERROR);
		}

针对扣减库存的方式,此处由于与业务逻辑绑定在一起的,所以从整个架构来说是暂时没法修改的;必须从整体规划来解决此问题,已提供更高的吞吐量;

分享下一些服务化处理方法: 输入图片说明

© 著作权归作者所有

共有 人打赏支持
j
粉丝 0
博文 7
码字总数 3032
作品 0
程序员
私信 提问
关于 Java 性能监控您不知道的 5 件事

当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中。跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的,因为 Java 虚拟机有黑盒效应,而且 Java 平台分析工具一贯就有缺陷。...

红薯
2010/08/22
859
5
JVM参数调优:Eclipse启动实践

JVM参数调优:Eclipse启动实践 本文主要参考自《深入理解 Java 虚拟机》。 这本书是国人写的难得的不是照搬代码注释的且不是废话连篇的技术书,内容涵盖了 Java 从源码到字节码到执行的整个过...

天天顺利
2015/01/13
0
0
一文详解java中对JVM的深度解析、调优工具、垃圾回收

jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具。jdk自带工具一般在jdk bin目录下面,以exe的形式直接点击就可以使用,其中包含分析工具已经很强大,几乎涉及了...

小刀爱编程
2018/10/11
0
0
JVM学习笔记之终:MyEclipse调优

在将工作电脑的操作系统更换为win7之后,我的MyEclipse的启动速度和运行速率一直很不理想。特别是在同时修改调试多个页面模板的时候,来回切换两个文件总是会卡个十来秒。试过关掉各种插件和...

GameKing
2014/02/17
0
12
JVM性能调优实践——JVM篇

前言 在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践...

lijingyao8206
2018/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
52分钟前
2
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
54分钟前
12
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
56分钟前
3
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
57分钟前
9
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部