jconsole觀察分析Java程序的運行,進行排錯調優

jsconsole非受權遠程鏈接java

-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運行定時任務程序 報錯以下: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架構

受權鏈接能夠看看這篇文章:jvm

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

性能分析socket

下面說說如何分析,如何使用這六個標籤性能

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

內存: 顯示內存使用信息優化

線程: 顯示線程使用信息.net

類: 顯示類裝載信息

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

針對扣減庫存的方式,此處因爲與業務邏輯綁定在一塊兒的,因此從整個架構來講是暫時無法修改的;必須從總體規劃來解決此問題,已提供更高的吞吐量;

分享下一些服務化處理方法: 輸入圖片說明

相關文章
相關標籤/搜索