Java エージェント JCo プラグインのトラブルシューティング
このセクションでは、Java エージェントと JCo プラグインを使用して SAP Java アプリケーションをモニタリングする際の最も一般的な問題の障害対応手順について説明します。
Java エージェントと JCo プラグインの互換性の問題
Java から ABAP への RFC コールが検出されない
ビジネストランザクション検出が Java エージェントに対して設定されているかどうかを確認します。
- RFC コールは、ビジネストランザクション中に exit コールとしてのみ検出されます。
- JCo クラスが呼び出される場合、ビジネス トランザクション スナップショットのコールグラフを確認します。
- コールグラフに JCo クラスがない場合、RFC コールはビジネストランザクション内で実行されません。
ログファイル Agent.<timestamp>.<num>.log を確認します。
[AD Thread Pool-Global898] 26 Mar 2019 09:53:26,700 WARN SDKJarValidator - *** WARNING *** Loading potentially unsigned SDK extension jar F:\AppDynamics\ver4.4.3.23530\ sdk-plugins\SAP_JCO_iSDK.jar.
[AD Thread Pool-Global898] 26 Mar 2019 09:53:27,023 INFO InstrumentationSdkPluginRuleApplier - Applying rules: SDK Rules for class F:\AppDynamics\ver4.4.3.23530\ sdk-plugins\SAP_JCO_iSDK.jar
ログファイル ByteCodeTransformer.<timestamp>.<num>.log を確認します。
[Service Runner [dsr]] 10 Mar 2019 00:23:49,704 INFO - Matching class name com/sap/mw/jco/ JCO$Client [ClassLoader]com.sap.engine.boot.loader.ResourceMultiParentClassLoader[hashcode]583765599 : Class match found.
[Service Runner [dsr]] 10 Mar 2019 00:23:49,710 INFO - Matching method execute ((Lcom/sap/mw/jco/JCO$Function;)V)
[Service Runner [dsr]] 10 Mar 2019 00:23:49,710 INFO - Applying method interceptor instrumentation.sdk.Generic at com/sap/mw/jco/ JCO$Client.execute ((Lcom/sap/mw/jco/JCO$Function;)V) id:147
ログファイル ByteCodeTransformer.<timestamp>.<num>.log を確認します。
ログで「maximum 50 transformations exceeded for package prefix com.sap」を検索します。
解決方法:
インストゥルメント化されたクラスの制限を増やします。次の Java エージェントパラメータを調整します。
- ノードプロパティ:max-async-transformed-classes
- 値:(デフォルトは 100)500 に増やす
- ノードプロパティ:max-async-transformed-classes-by-package
- 値:500 に増やす
JCo Plugin causes exception: com.sap.conn.jco.JCoException: (106) JCO_ERROR_RESOURCE: Connection pool <connection pool name> is exhausted. The current pool size peak limit is 20 connections .
解決方法:
SAP Java スタック設定で [Max Pool Size] と [Max Connections] を増やします。元の値の少なくとも 2 倍にすることを推奨します。
JCo プラグインは、パラレルステートレス RFC コールをサポートしていません。
ログファイル Agent.<timestamp>.<num>.log を確認します。
[Thread-799] 15 Oct 2019 10:27:19,500 ERROR JCo3Interceptor - [4.5.1908.9] ERROR correlation of stateless parallel RFC is not supported (RFC FM: <Function module name>).Please add a new rule to file: /opt/appdynamics/appServerAgent/ver4.5.1.23676/sdk-plugins/jco-rules.xml, to disable the correlation .
com.sap.conn.jco.JCoRuntimeException: The context with the session id [...] scope type [null] is currently used in thread Thread-799 [0x190e] .Current thread is Thread-801 [0x1910].
解決方法:
- 具体的な <Function module name> を RFC ブラックリストに追加します(例:<exclude type="fm"> FM_NAME <exclude>)。または、
- [exclude stateless RFC calls]を true に設定します:<exclude type="stateless">true</exclude>
複数の JVM を使用する SAP AS Java でのノード名の問題
SAP AS Java(PO、ポータルなど)は、拡張環境で複数の JVM を使用できます。追加のパラメータがない場合、結果として Java エージェントは単一のノード名を求めて競合します。
解決方法:Java エージェントのスタートアップ パラメータ リストに JVM パラメータ -Dappdynamics.agent.nodeName=$SAPINFO を追加します。
Java エージェントが Wily と競合
SAP AS Java(PO、ポータルなど)は、Wily Introscope を実装して実行できます。Java エージェントを起動するには、追加のパラメータと設定が必要です。
解決方法:
- Java エージェントの起動パラメータリストには、次の JVM パラメータを使用します。
-
-Dallow.unsigned.sdk.extension.jars=true
-
-Dorg.osgi.framework.bootdelegation=com.singularity
-
-Dappdynamics.bciengine.should.implement.new.interfaces=false
-
-
Java エージェントの app-agent-conf ファイルに次のルールを追加します。
CODE<custom-exclude filter-type="STARTSWITH" filter-value="com/sap/engine/core/cluster/impl6/p2pnio/P2PConnectorImpl"/> <custom-exclude filter-type="STARTSWITH" filter-value="com.sap.engine.core.cluster.impl6.p2pnio.P2PConnectorImpl"/> <custom-exclude filter-type="STARTSWITH" filter-value="com/wily/*"/> <custom-exclude filter-type="STARTSWITH" filter-value="com.wily.*"/>