Troubleshooting
Problem
Db2 V10.5 を Linux for z で使用しているとき、データベース接続が非常に遅かったり、接続がハングしたように見えることがあります。
Symptom
暗号化を利用したデータベースの接続が非常に遅いことがあります。
Cause
Db2 は接続の暗号化で GSkit の一部である ICC (IBM Crypt for C) を利用します。
ここで、System z 上で ICC が乱数を生成する処理が非常に遅かったり、ハングしたようになることがあります。
ここで、System z 上で ICC が乱数を生成する処理が非常に遅かったり、ハングしたようになることがあります。
この問題はIT20939 として報告されており、V10.5 FP9 以降で修正されています。
IT20939 AUTHENTICATION VERY SLOW WITH HIGH CPU USAGE ON CERTAIN ZSERIES HARDWARE
Environment
zLinux で稼動する Db2 V10.5 FP8 以前
Diagnosing The Problem
Db2 のパフォーマンス・トレースを採取すると、cryptDHGetPublicKey で遅延が発生していることが確認できます。以下の例では 120 回の接続に 26 秒かかったうち、24.5 秒は ICC での遅延です。
nCalls TotalElapsed TotalSpent FunctionName
120 27.369034493 0.000348565 sqljsDrdaAsDriver
120 27.368685115 0.000630187 sqljsDrdaAsInnerDriver
120 26.106644502 0.000115187 sqljsDriveRequests
120 26.106529315 0.004548491 sqljsSqlam
239 25.944174721 0.000929621 sqljsParse
120 25.927604023 0.000118252 sqljsParseConnect
120 25.927485771 0.000176062 sqljs_ddm_accsec
358 25.927210333 0.000328000 sqljsConnectAttach
120 25.911151147 0.000527618 sqleUCagentConnect
120 25.900599337 0.000256875 sqleUCengnInit
120 25.900342462 0.000409937 sqeApplication::AppLocalStart
120 25.818030732 0.000281622 sqleExecuteSecurityCheck
120 25.817749110 0.002334317 sqlexEngAuthenticate
239 25.174662535 0.002626248 sqlexSlsServerEncryptAuthenticate
120 24.576815846 24.576815846 cryptDHGetPublicKey
ハングに近い状態の場合、db2agnt のスタック・トレースを採取すると、以下のように cryptDHGetPublicKey の先で ICC ライブラリーが処理中の状態になっています。
<StackTrace>
-----FUNC-ADDR---- ------FUNCTION + OFFSET------
0x00000201559CA51E address: 0x00000201559CA51E ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004A51E ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559CA702 address: 0x00000201559CA702 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004A702 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559CB6A2 address: 0x00000201559CB6A2 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004B6A2 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559CB2A4 address: 0x00000201559CB2A4 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004B2A4 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559CC3BE address: 0x00000201559CC3BE ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004C3BE ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559CC4D6 address: 0x00000201559CC4D6 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000004C4D6 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559C3EDC address: 0x00000201559C3EDC ; dladdress: 0x0000020155980000 ; offset in lib: 0x0000000000043EDC ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559C0802 address: 0x00000201559C0802 ; dladdress: 0x0000020155980000 ; offset in lib: 0x0000000000040802 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559FE692 address: 0x00000201559FE692 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000007E692 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000201559FE840 address: 0x00000201559FE840 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000007E840 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x0000020155A1D5D4 address: 0x0000020155A1D5D4 ; dladdress: 0x0000020155980000 ; offset in lib: 0x000000000009D5D4 ;
(/opt/ibm/db2/V10.5/lib64/gskit_db2/C/icc/icclib/libicclib084.so)
0x00000200013CDC7C cryptDHGetPublicKey + 0x0290
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x000002000466CEFC _Z33sqlexSlsServerEncryptAuthenticateP14db2UCinterfacelPj + 0x08e8
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x0000020004660868 _Z20sqlexEngAuthenticateP14db2UCinterface + 0x19e8
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x0000020004407F18 _ZN14sqeApplication13AppLocalStartEP14db2UCinterface + 0x031c
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x00000200045F24EC _Z11sqlelostWrpP14db2UCinterface + 0x005c
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x00000200045F28D6 _Z14sqleUCengnInitP14db2UCinterfacet + 0x03c6
(/home/db2inst1/sqllib/lib64/libdb2e.so.1)
0x00000200045F52D4 sqleUCagentConnect + 0x03dc
Resolving The Problem
この問題は Db2 V10.5 FP9 以降で修正されています。
関連情報
パスポート・アドバンテージによく寄せられる質問
GSKit Versions Shipped with DB2
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
FP9 を適用した場合、以下の設定を追加してください。
注: FP8 以前で以下の設定をしても問題は解消しません。FP10 以降は以下の設定は不要です。
- インスタンス・オーナーでデータベース・サーバーにログインします。
- root で ICCSIG.txt を開きます。(下の例はsudo 経由で vi から開いています。)
sudo vi $HOME/sqllib/lib64/gskit/N/icc/icclib/ICCSIG.txt - 最下行に以下の 2 行を追記して保管します。(別の箇所に追記してはいけません。)
ICC_LOOPS=1
ICC_SHIFT=8 - 環境変数 ICC_IGNORE_FIPS=YES を設定します。
永続化するには db2profile などにも追記します。
export ICC_IGNORE_FIPS=YES - レジストリ変数 DB2ENVLIST で環境変数 ICC_IGNORE_FIPS を読むように設定します。
db2set DB2ENVLIST=ICC_IGNORE_FIPS - 変更を反映させるため、インスタンスを再起動します。
db2stop force
db2start
関連情報
パスポート・アドバンテージによく寄せられる質問
GSKit Versions Shipped with DB2
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkdAAE","label":"Connectivity"},{"code":"a8m500000008PmnAAE","label":"Security and Plug-Ins-\u003EEncryption"}],"ARM Case Number":"","Platform":[{"code":"PF016","label":"Linux"}],"Version":"10.5.0"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
swg22013936