目次
Webアドレス:https://arthas.aliyun.com/doc/index.html
Arthasはあなたのために何ができますか?
Arthas
これはAlibabaのオープンソースJava診断ツールであり、開発者に深く愛されています。
次の同様の問題に遭遇し、途方にArthas
暮れている場合、それはあなたがそれらを解決するのを助けることができます:
-
このクラスはどのjarパッケージからロードされますか?さまざまな種類の関連する例外が報告されるのはなぜですか?
-
変更したコードが実行されないのはなぜですか?コミットしなかったのでしょうか?間違ったブランチ?
-
問題が発生した場合、オンラインでデバッグできません。ログを追加することによってのみ再公開できますか?
-
オンラインでユーザーのデータ処理の問題が発生しましたが、オンラインデバッグも不可能であり、オフラインを再現できません。
-
システムの状態を表示するためのグローバルな視点はありますか?
-
JVMのリアルタイムの実行ステータスを監視する方法はありますか?
-
アプリケーションのホットスポットをすばやく見つけてフレームグラフを生成するにはどうすればよいですか?
Arthas
JDK 6以降をサポートし、Linux / Mac / Windowsをサポートし、コマンドラインインタラクティブモードを採用し、Tab
問題の特定と診断をさらに容易にする豊富なオートコンプリート機能を提供します 。
Arthasスニークピーク
前提はArthasをインストールすることです。国内のgiteeアドレスを参照してください:https://gitee.com/arthas/arthas
印刷入力パラメータと戻り値を監視する
[arthas@18656]$ watch com.forestar.redis.RedisDistributedLock tryGetDistributedLock "{params,returnObj}" -x 2 -b -s -n 10
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 81 ms, listenerId: 7
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtEnter
ts=2021-03-03 09:15:33; [cost=0.038707ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[71f3965f-9429-4104-a475-03eacfd48dec],
@Integer[5000],
],
null,
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtExit
ts=2021-03-03 09:15:33; [cost=2.3058954671954437E10ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[71f3965f-9429-4104-a475-03eacfd48dec],
@Integer[5000],
],
@Boolean[true],
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtEnter
ts=2021-03-03 09:15:43; [cost=0.016312ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[7471d14f-4a60-4011-9623-d42b11e6d78c],
@Integer[5000],
],
null,
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtExit
ts=2021-03-03 09:15:43; [cost=2.3058964472276306E10ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[7471d14f-4a60-4011-9623-d42b11e6d78c],
@Integer[5000],
],
@Boolean[true],
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtEnter
ts=2021-03-03 09:15:46; [cost=0.016448ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[9132dcb6-b999-4fdc-902e-f834acd6a029],
@Integer[5000],
],
null,
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtExit
ts=2021-03-03 09:15:46; [cost=2.3058967163121655E10ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[9132dcb6-b999-4fdc-902e-f834acd6a029],
@Integer[5000],
],
@Boolean[false],
]
method=com.forestar.redis.RedisDistributedLock.tryGetDistributedLock location=AtEnter
ts=2021-03-03 09:15:51; [cost=0.011194ms] result=@ArrayList[
@Object[][
@String[xht:application:hly-id-lock],
@String[9132dcb6-b999-4fdc-902e-f834acd6a029],
@Integer[5],
],
null,
]
トレース印刷方法の順序と実行
[arthas@18656]$ trace com.forestar.xht.hly.XHRYCtrl hly_add
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 2) cost in 319 ms, listenerId: 10
`---ts=2021-03-03 09:33:07;thread_name=http-nio-8081-exec-7;id=27;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.WebappClassLoader@432cd66e
`---[2.241784ms] com.forestar.xht.hly.XHRYCtrl$$EnhancerByCGLIB$$9eca3052:hly_add()
`---[2.068124ms] net.sf.cglib.proxy.MethodInterceptor:intercept() #95
`---[1.930108ms] com.forestar.xht.hly.XHRYCtrl:hly_add()
+---[0.036573ms] data.common.util.StringUtils:IsNullOrEmpty() #183
+---[0.01407ms] com.forestar.xht.util.Utils:getWorkSpace() #189
+---[0.044448ms] com.forestar.xht.util.Utils:getMetadataWorkspace() #192
+---[0.017292ms] data.metadata.IMetadataWorkspace:OpenTable() #95
+---[0.00912ms] com.forestar.xht.util.Utils:getBaseDataService() #193
+---[0.183323ms] com.alibaba.fastjson.JSONObject:parseObject() #196
+---[0.011264ms] data.general.RowBase:<init>() #198
+---[0.010371ms] data.general.RowBase:setCurrentObjects() #199
+---[0.008256ms] com.forestar.core.session.SessionFactory:getSession() #201
+---[0.010008ms] com.forestar.core.session.ISession:getTableSuffix() #95
+---[0.037512ms] data.general.RowBase:getCurrentObjects() #202
+---[0.010109ms] com.forestar.syscore.encrypt.MD5:<init>() #203
+---[0.006698ms] data.general.RowBase:getCurrentObjects() #204
+---[0.034949ms] com.forestar.syscore.encrypt.MD5:getMD5() #95
+---[0.008434ms] data.general.RowBase:getCurrentObjects() #206
+---[0.007273ms] data.general.QueryFilter:<init>() #207
+---[0.024029ms] data.general.QueryFilter:setWhereString() #208
`---[0.77195ms] com.forestar.redis.RedisDistributedLock:tryGetDistributedLockByBlocking() #215
`---ts=2021-03-03 09:33:16;thread_name=http-nio-8081-exec-35;id=52;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.WebappClassLoader@432cd66e
`---[1.0833ms] com.forestar.xht.hly.XHRYCtrl$$EnhancerByCGLIB$$9eca3052:hly_add()
`---[1.019633ms] net.sf.cglib.proxy.MethodInterceptor:intercept() #95
`---[0.954022ms] com.forestar.xht.hly.XHRYCtrl:hly_add()
+---[0.007426ms] data.common.util.StringUtils:IsNullOrEmpty() #183
+---[0.038057ms] com.forestar.xht.util.Utils:getWorkSpace() #189
+---[0.00616ms] com.forestar.xht.util.Utils:getMetadataWorkspace() #192
+---[0.007478ms] data.metadata.IMetadataWorkspace:OpenTable() #95
+---[0.007375ms] com.forestar.xht.util.Utils:getBaseDataService() #193
+---[0.038762ms] com.alibaba.fastjson.JSONObject:parseObject() #196
+---[0.005113ms] data.general.RowBase:<init>() #198
+---[0.006275ms] data.general.RowBase:setCurrentObjects() #199
+---[0.006229ms] com.forestar.core.session.SessionFactory:getSession() #201
+---[0.006964ms] com.forestar.core.session.ISession:getTableSuffix() #95
+---[0.004853ms] data.general.RowBase:getCurrentObjects() #202
+---[0.005499ms] com.forestar.syscore.encrypt.MD5:<init>() #203
+---[0.004376ms] data.general.RowBase:getCurrentObjects() #204
+---[0.019182ms] com.forestar.syscore.encrypt.MD5:getMD5() #95
+---[0.004806ms] data.general.RowBase:getCurrentObjects() #206
+---[0.005104ms] data.general.QueryFilter:<init>() #207
+---[0.004758ms] data.general.QueryFilter:setWhereString() #208
`---[0.511894ms] com.forestar.redis.RedisDistributedLock:tryGetDistributedLockByBlocking() #215
`---ts=2021-03-03 09:33:25;thread_name=http-nio-8081-exec-15;id=2f;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.WebappClassLoader@432cd66e
`---[0.95822ms] com.forestar.xht.hly.XHRYCtrl$$EnhancerByCGLIB$$9eca3052:hly_add()
`---[0.920732ms] net.sf.cglib.proxy.MethodInterceptor:intercept() #95
`---[0.866213ms] com.forestar.xht.hly.XHRYCtrl:hly_add()
+---[0.007652ms] data.common.util.StringUtils:IsNullOrEmpty() #183
+---[0.011245ms] com.forestar.xht.util.Utils:getWorkSpace() #189
+---[0.005283ms] com.forestar.xht.util.Utils:getMetadataWorkspace() #192
+---[0.007431ms] data.metadata.IMetadataWorkspace:OpenTable() #95
+---[0.007284ms] com.forestar.xht.util.Utils:getBaseDataService() #193
+---[0.039893ms] com.alibaba.fastjson.JSONObject:parseObject() #196
+---[0.005045ms] data.general.RowBase:<init>() #198
+---[0.004925ms] data.general.RowBase:setCurrentObjects() #199
+---[0.005901ms] com.forestar.core.session.SessionFactory:getSession() #201
+---[0.008045ms] com.forestar.core.session.ISession:getTableSuffix() #95
+---[0.00491ms] data.general.RowBase:getCurrentObjects() #202
+---[0.005447ms] com.forestar.syscore.encrypt.MD5:<init>() #203
+---[0.004425ms] data.general.RowBase:getCurrentObjects() #204
+---[0.017348ms] com.forestar.syscore.encrypt.MD5:getMD5() #95
+---[0.004585ms] data.general.RowBase:getCurrentObjects() #206
+---[0.004571ms] data.general.QueryFilter:<init>() #207
+---[0.004564ms] data.general.QueryFilter:setWhereString() #208
`---[0.431266ms] com.forestar.redis.RedisDistributedLock:tryGetDistributedLockByBlocking() #215
ttStaticメソッドのフィールド値の呼び出し
クラスの静的フィールドを取得し、クラスの静的メソッドを呼び出します:https://arthas.aliyun.com/doc/tt.html
メソッドの実行時間を監視する
ブラウザを介してarthasを接続します
Arthasは現在Webコンソールをサポートしています。正常に接続した後、ユーザーはhttp://127.0.0.1:3658/に直接アクセスできます。
IPを入力して、他のマシンのarthaにリモートで接続できます。
デフォルトでは、arthasは127.0.0.1のみをリッスンするため、リモートで接続する場合は、
--target-ip
パラメーターを使用してリスナーのIPを指定できます-h
。詳細については、ヘルプの説明を参照してください。セキュリティリスクがあることに注意してください。次のトンネルサーバーソリューションを検討してください。