(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【minikube】Db2エラー及び起動時のメモリ割り当て変化手順

スポンサーリンク

事象

Db2と接続するJava アプリにてSQLCODE805/SQLSTATE51002エラーが発生する。

[err] java.sql.SQLException: DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=NULLID.SYSSN200 0X5359534C564C3031, DRIVER=4.26.14 DSRA0010E: SQL State = 51002, Error Code = -805
環境情報
  • Kubernetes v1.17(minikube)
  • Buildroot 2019.02.7(minikubeのos-release)
  • DB2 Client 11.5

原因

既知の事象で以下のような回答あり。

以下、本事象の該当箇所抜粋。

数千ものステートメントをキャッシュすると、サーバー側でパッケージ・キャッシュやアプリケーション・ヒープに追加のリソースが必要になる可能性があります。

対応策

メモリーを増強することで対応。

本事象はminikube上で展開したコンテナにて確認したエラーなのでminikubeに割り当てるメモリを増やした。

デフォルトでは2000MBなので以下にて4000MBに変更。

$ minikube config set memory 4000
! These changes will take effect upon a minikube delete and then a minikube start

ちなみに単位をつけると文法エラーになるので注意。

X Set failed: [memory:strconv.Atoi: parsing "4000mb": invalid syntax]

起動時に反映される。

$ minikube start
* minikube v1.6.2 on Microsoft Windows 10 Enterprise 10.0.18362 Build 18362
* Selecting 'virtualbox' driver from user configuration (alternates: [hyperv])
* Creating virtualbox VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...

終わりに

上記割り当てを行う前はDb2プロセスを上げるとホスト上のWindows端末のCPUが跳ね上がっていましたが、minikubeへのメモリ割り当て追加によってWindows端末のCPUは100%に張り付くことがなくなりました。(代わりにメモリが100%近くになる)

スワップが起きるとCPU側に負荷がかかるのかもしれません。

[root@db2 ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  47580 112160 2702832    0    0    76  3369 2019 3584 23 13 64  00

以上、ご参考になれば幸いです。