Edge Encryption のプロキシで Java のクラッシュと Java のメモリ不足エラーを解決する方法Issue 次のエラーは、Edge プロキシの /logs ディレクトリにある edgeencryption.log または wrapper_.log のいずれかの Java 仮想マシン (JVM) に関連して発生する可能性があります。 2017-06-15 20:58:33,091 ERROR Java heap space 2017-06-15 20:58:44,931 ERROR Java heap space2017-06-15 21:00:11,359 ERROR Java heap space または 2016-11-29 09:18:26,765 [sn221104245-44485] WARN org.eclipse.jetty.util.thread.QueuedThreadPool - 予期しないスレッド停止: org.eclipse.jetty.util.thread.QueuedThreadPool$3@3ad8d4eb in qtp221104245{STARTED,8<=200<=200,i=0,q=72}2016-11-29 09:18:28,672 [sn221104245-44387] WARN com.snc.edgeencryption.EdgeEncryptionLog - GetRequestTransformer 例外 java.lang.OutOfMemoryError: GC オーバーヘッド制限を超過しました2016-11-29 09:18:34,875 [sn221104245-44342] WARN org.eclipse.jetty.servlet.ServletHandler - /amb/connect のエラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超過しました2016-11-29 09:18:35,813 [sn221104245-44344] WARN org.eclipse.jetty.servlet.ServletHandler - /amb/handshake のエラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超過しました2016-11-29 09:18:39,703 [sn221104245-44337] WARN org.eclipse.jetty.servlet.ServletHandler - /angular.do のエラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超過しました2016-11-29 09:18:55,719 [sn221104245-44338] WARN org.eclipse.jetty.servlet.ServletHandler - /amb/connect のエラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超過しました2016-11-29 09:18:31,094 [sn221104245-44532] ERROR com.snc.edgeencryption.EdgeEncryptionLog - GC オーバーヘッド制限を超過しました2016-11-29 09:18:55,719 [sn221104245-44484] ERROR com.snc.edgeencryption.EdgeEncryptionLog - GC オーバーヘッド制限を超過しました または INFO | jvm 64 | 2017/06/01 09:29:38.610 | [CodeBlob (0x0000000001af2290)]INFO | jvm 64 | 2017/06/01 09:29:38.610 | フレームサイズ: 0INFO | jvm 64 | 2017/06/01 09:29:38.610 | BufferBlob (0x0000000001af2290) が StubRoutines に使用されています (2)INFO | jvm 64 | 2017/06/01 09:29:40.033 | #INFO | jvm 64 | 2017/06/01 09:29:40.033 | # Java Runtime Environment で重大なエラーが検出されました:INFO | jvm 64 | 2017/06/01 09:29:40.033 | #INFO | jvm 64 | 2017/06/01 09:29:40.033 | # 内部エラー (sharedRuntime.cpp:834), pid=3856, tid=3824INFO | jvm 64 | 2017/06/01 09:29:40.033 | # 致命的なエラー: PC 0x0000000001af4a10 でインタプリタ、n メソッド、および vtable スタブの外部で例外が発生しましたINFO | jvm 64 | 2017/06/01 09:29:40.033 | #INFO | jvm 64 | 2017/06/01 09:29:40.033 | # JRE バージョン: Java(TM) SE Runtime Environment (8.0_40-b26) (ビルド 1.8.0_40-b26)INFO | jvm 64 | 2017/06/01 09:29:40.033 | # Java VM: Java HotSpot(TM) 64-Bit サーバー VM (25.40-b25 混合モード windows-amd64 圧縮 oops)INFO | jvm 64 | 2017/06/01 09:29:40.033 | # コアダンプが記述されています。デフォルトの場所:C:\EdgeProxy\ServiceNow_443\bin\hs_err_pid3856.mdmpINFO | jvm 64 | 2017/06/01 09:29:40.033 | #INFO | jvm 64 | 2017/06/01 09:29:40.033 | # 詳細情報を含むエラーレポートファイルは、次のように保存されます。INFO | jvm 64 | 2017/06/01 09:29:40.033 | # C:\EdgeProxy\ServiceNow_443\bin\hs_err_pid3856.logINFO | jvm 64 | 2017/06/01 09:29:40.033 | #INFO | jvm 64 | 2017/06/01 09:29:40.033 | # バグレポートを提出したい場合は、以下にアクセスしてください。INFO | jvm 64 | 2017/06/01 09:29:40.033 | # http://bugreport.java.com/bugreport/crash.jspINFO | jvm 64 | 2017/06/01 09:29:40.033 | #ERROR | wrapper | 2017/06/01 09:29:40.142 | JVM が予期せず終了しました。STATUS | wrapper | 2017/06/01 09:29:44.739 | JVM を起動しています...INFO | jvm 65 | 2017/06/01 09:29:44.959 | wrapper (バージョン 3.2.3.SNC.1) http://wrapper.organization.orgINFO | jvm 65 | 2017/06/01 09:29:44.959 | Copyright 1999-2006 Company, Inc. All Rights Reserved.INFO | jvm 65 | 2017/06/01 09:29:44.959 |INFO | jvm 65 | 2017/06/01 09:29:44.959 | WARNING - 現在使用中の wrapper jar ファイルはバージョン「3.2.3.SNC.1」ですINFO | jvm 65 | 2017/06/01 09:29:44.959 | 一方、この JVM を起動した wrapper のバージョンはINFO | jvm 65 | 2017/06/01 09:29:44.959 | 「3.2.3」です。INFO | jvm 65 | 2017/06/01 09:29:44.959 | wrapperは正しく動作しているように見えますが、一部の機能はINFO | jvm 65 | 2017/06/01 09:29:44.959 | 正しく機能していないことがあります。この構成はテストされておらずINFO | jvm 65 | 2017/06/01 09:29:44.959 | サポートもされていません。INFO | jvm 65 | 2017/06/01 09:29:44.959 |INFO | jvm 65 | 2017/06/01 09:31:04.519 | >>> 合計クラス数:1,000 合計長:6,926,185 または ERROR | wrapper | 2017/06/22 19:14:28.388 | JVM が予期せず終了しました。STATUS | wrapper | 2017/06/22 19:14:28.396 | JVM はシグナル SIGKILL (9) に応答して終了しました。STATUS | wrapper | 2017/06/22 19:14:32.540 | JVM を起動...?INFO | jvm 4 | 2017/06/22 19:14:34.543 | wrapper (バージョン 3.2.3.SNC.1) http://wrapper.organization.orgINFO | jvm 4 | 2017/06/22 19:14:34.543 | Copyright 1999-2006 Company, Inc. All Rights Reserved.INFO | jvm 4 | 2017/06/22 19:14:34.543 | INFO | jvm 4 | 2017/06/22 19:14:35.952 | 2017 年 6 月 22 日 7:14:35 PM com.snc.da.cfg.GatewayScanner getTypesXmlResourcesINFO | jvm 4 | 2017/06/22 19:14:35.953 | INFO: xml リソースメソッドを使用したゲートウェイのスキャンINFO | jvm 4 | 2017/06/22 19:14:36.253 | 2017 年 6 月 22 日 7:14:36 PM com.snc.da.cfg.GatewayScanner getTypesMap 症状 Edge プロキシ経由でインスタンスに接続しようとすると、空白のブラウザ画面が表示されるか、ブラウザ画面に「This site can't be reached」のようなエラーメッセージが表示されるEdge プロキシ経由でインスタンスとやり取りするとき、ブラウザのナビゲーションが遅い ReleaseEdge Encryption のプロキシCauseEdge プロキシ Java 仮想マシン (JVM) のメモリが不足しているか、クラッシュしている可能性があります。Resolutionこれらの JVM 関連の問題を解決するには、次のアクションを確認して実行します。 Edge Encryption プロキシが使用する Java JRE をチェックし、必要に応じてアップグレードします プロキシで、$Edge_Install_Directory/conf/wrapper.conf ファイルを開きます。「wrapper.java.command」を含む行を確認すると、次のようになります。wrapper.java.command=../java/jre/bin/javaまたはwrapper.java.command=/home/oracle/jre1.8.0_121/bin/javaまたはwrapper.java.command=C:\Program Files\Java\jre1.8.0_144\bin\javawrapper.java.command の設定に示されているように、bin ディレクトリに移動します。 コマンド java -version を実行して、JRE のバージョンを見つけますLinux:./java -versionjava バージョン「1.8.0_40」Java(TM) SE Runtime Environment (ビルド 1.8.0_40-b27)Java HotSpot(TM) 64 ビットサーバー VM (ビルド 25.40-b25、混在モード)Windows:C:\istanbul_ee_install\istan_eep_443\java\jre\bin>java -versionjava バージョン「1.8.0_40」Java(TM) SE Runtime Environment (ビルド 1.8.0_40-b26)Java HotSpot(TM) 64 ビットサーバー VM (ビルド 25.40-b25、混在モード)ステップ 3 から 4 で 1.8.0_121 より前の JRE バージョンが示されている場合は、次のセクションのステップに従い、JRE をバージョン 1.8.0_121 以上に更新します。 JRE for Windows のアップグレード http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html にある JRE ダウンロードサイトに移動します。ライセンス契約に同意し、使用しているオペレーティングシステムに適したバージョンの JRE をダウンロードします (たとえば、Windows x64 オフラインの場合は jre-8u144-windows-x64.exe)。ダウンロード後、jre-8u144-windows-x64.exe を実行し、GUI を使用してインストールして、要求された場合は古いバージョンの JRE を保持します。 インストールディレクトリ (通常は C:\Program Files\Java\jre1.8.0_xxx) に移動します。 256 ビットの暗号化キーを使用する場合は、元の Java JRE インストールディレクトリから新しいインストールディレクトリに次の 2 つの jar ファイルをコピーします。元の場所:C:\<Old JRE install directory>\java\jre\lib\security\local_policy.jarおよびC:\<Old JRE install directory>\java\jre\lib\security\US_export_policy.jarコピー先の新しい場所:C:\Program Files\Java\jre1.8.0_xxx\lib\security\local_policy.jarおよびC:\Program Files\Java\jre1.8.0_xxx\lib\security\US_export_policy.jarEdge プロキシサーバーを停止します。Java インストールの新しい場所を指すように C:\<Edge_Install_Directory>\conf\wrapper.conf ファイルを次のように変更します。wrapper.java.command=C:\Program Files\Java\jre1.8.0_xxx\bin\javawrapper.conf を保存します。 次回プロキシが起動する場合は、新しい JRE バージョンで実行されます。 JRE for Linux のアップグレード http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html にある JRE ダウンロードサイトに移動します。ライセンス契約に同意し、使用しているオペレーティングシステムに適したバージョンの JRE をダウンロードします (たとえば、Linux x64 の場合は jre-8u144-linux-x64.tar.gz)。ダウンロードしたバージョンを Edge プロキシマシンに保存し、開いたり解凍したりできます。インストールディレクトリ構造は次のようになります。$directory_path/jre1.8.0_256 ビットの暗号化キーを使用する場合は、元の Java JRE インストールディレクトリから新しいインストールディレクトリに次の 2 つの jar ファイルをコピーします。元の場所:$Old_JRE_install_directory/java/jre/lib/security/local_policy.jarおよび$Old_JRE_install_directory/java/jre/lib/security/US_export_policy.jarコピー先の新しい場所:$New_JRE_install_directory/java/jre/lib/security/local_policy.jarおよび$New_JRE_install_directory/java/jre/lib/security/US_export_policy.jarEdge プロキシサーバーを停止します。Java インストールの新しい場所を指すように $Edge_Install_Directory/conf/wrapper.conf ファイルを次のように変更します。wrapper.java.command=$jre_install_directory/bin/java(たとえば、wrapper.java.command=/home/sn/jre1.8.0_144/bin/java。) 次回プロキシが起動する場合は、新しい JRE バージョンで実行されます。 Java スタートアッププロパティ -XX:-UseAESIntrinsics の追加 注:JRE が 1.8.0_121 以降の場合はスタートアッププロパティは必要ないため、Edge Encryption プロキシで使用される Java JRE をアップグレードする前のセクションのステップを実行していない場合のみ、このステップを実行してください。 wrapper.java.additional.4=-XX:-UseAESIntrinsics を各プロキシの wrapper.conf ファイルに追加します。 (プロパティの「4」は、別の Java スタートアッププロパティに「4」をすでに使用している場合は、それより大きい未使用の番号に変更できます。) 手順は以下を参照してください。 KB0622015: Edge Encryption プロキシが CPU の 95-100% を占め、Java 例外で失敗する。 wrapper.conf ファイルを変更したら、プロキシを再起動する必要があります。 プロキシが正しくスケーリングされ、十分な JVM ヒープメモリが割り当てられていることを確認します プロキシの推奨要件については、次の製品ドキュメントページで説明しています。 Edge Encryption システム要件Edge Encryption 環境のサイジングプロキシサーバーをインストールしたら、プロキシサーバーの初期メモリ制限と上限メモリ制限を設定する 初期および上限のメモリ制限を設定するときは、プロキシ JVM に可能であれば 6 GB、または少なくとも 4 GB を割り当てます (デフォルトでは、JVM のプロキシは 2 GB で実行されます)。JVM メモリを増やすには、次のドキュメントに従ってください。 プロキシ JVM への 6 GB のヒープメモリ割り当てに対応するには、各プロキシをホストするマシンに少なくとも 8 GB の RAM の空きが必要です。オペレーティングシステムには少なくとも 2 GB、プロキシ JVM には 6 GB を残します。 プロキシを 6 GB で実行するには、$Edge_Install_Directory/conf にある wrapper.conf ファイルを編集します。 wrapper.conf ファイルの wrapper.java.initmemory および wrapper.java.maxmemory プロパティをコメント化します。または、次のプロパティを追加します。 スタートアップ RAM の場合:wrapper.java.additional.(次に続く未使用の wrapper.java.additional number)=-Xms6144m最大 RAM の場合:wrapper.java.additional.(次に続く未使用の wrapper.java.additional number + 1)=-Xmx6144m 次に例を示します。 wrapper.java.additional.5=-Xms6144m wrapper.java.additional.6=-Xmx6144m この変更にはプロキシの再起動が必要です。 必要なプロキシ数のサイズを適正化するには、必要なプロキシの数を決定します。詳細は、Edge Encryption 環境のサイジングを参照してください。 日中のピーク時にプロキシ経由でインスタンスにアクセスしているユーザーの数を把握する必要があります。 「X」に必要なプロキシの数は、同時ユーザーの数です。X 人の同時ユーザーごとに追加のプロキシサーバーを用意します。 Edge プロキシ JVM が Linux オペレーティングシステムによって強制終了されているかどうかの確認 Edge プロキシが Linux で実行されている場合は、wrapper_.log に次の「SIGKILL (9)」エラーが表示されているかどうかを確認します。 ERROR | wrapper | 2017/06/22 19:14:28.388 | JVM が予期せず終了しました。STATUS | wrapper | 2017/06/22 19:14:28.396 | JVM はシグナル SIGKILL (9) に応答して終了しました。STATUS | wrapper | 2017/06/22 19:14:32.540 | JVM を起動...INFO | jvm 4 | 2017/06/22 19:14:34.543 | wrapper (バージョン 3.2.3.SNC.1) http://wrapper.tanukisoftware.orgINFO | jvm 4 | 2017/06/22 19:14:34.543 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.INFO | jvm 4 | 2017/06/22 19:14:34.543 | >INFO | jvm 4 | 2017/06/22 19:14:35.952 | 2017 年 6 月 22 日 7:14:35 PM com.snc.da.cfg.GatewayScanner getTypesXmlResourcesINFO | jvm 4 | 2017/06/22 19:14:35.953 | INFO: xml リソースメソッドを使用したゲートウェイのスキャンINFO | jvm 4 | 2017/06/22 19:14:36.253 | 2017 年 6 月 22 日 7:14:36 PM com.snc.da.cfg.GatewayScanner getTypesMap このエラーが表示された場合は、/var/log/messages ファイルで詳細を確認してください。たとえば、次のように表示されます。 6 月 22 日 19:14:28 eo-0ee971a048 カーネル:メモリ不足:プロセス 8405 (java) スコア 939 を強制終了するか、子を停止します6 月 22 日 19:14:28 eo-0ee971a048 カーネル:強制終了されたプロセス 8405 (java) total-vm:9275688kB, anon-rss:7259600kB, file-rss:0kB, shmem-rss:0kB6 月 22 日 19:14:28 eo-0ee971a048 wrapper[2121]:JVM が予期せず終了しました。