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

本文通过分析jsconsole线程堆栈信息,定位到订单处理过程中的性能瓶颈,并给出针对性优化方案,包括调整Thrift默认参数及改进库存扣减逻辑。

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);
		}

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

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

转载于:https://my.oschina.net/u/1412810/blog/753387

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值