OceanBaseでは、業務テナントのMEMstoreメモリが上限になり書き込みがブロックされるケースに加えて、500テナントやsysテナントなど他のモジュールでのメモリ不足やリークによって引き起こされる書き込みやクエリの問題もあります。本記事では、システムモジュールのメモリ不足やリークに対する緊急対処方法を紹介します。
緊急対処方法
OBシステムモジュールのメモリ不足やリークは、一般的に特殊な状況に遭遇したりソフトウェアバグが発生したりした場合に起こります。緊急時の対処としては、通常、問題のあるノードを隔離または再起動することが一般的です。
OBServerノードの再起動
システム内部モジュールのメモリ問題については、一般的にOBServerノードの再起動で解決できます。OCPを使用して指定ノードの再起動操作を実行することを推奨します。OBServerノードの再起動の詳細については、OBServerノードの再起動を参照してください。
問題ノードまたはレプリカの隔離
内部モジュールでメモリリークまたはメモリ不足が疑われる場合、ノードの再起動では解決できない場合は、問題ノードを隔離することを検討できます。
問題ノードに対しては、
stop server操作を実行できます。以下のステートメントを参照してください。ALTER SYSTEM STOP SERVER 'ip:port' [,'ip:port'...] [ZONE='zone']例:
alter system stop server '10.0.0.0:2882' zone='z1;その他の運用ゾーンの詳細については、クラスタ管理セクションの一般的なクラスタ管理を参照してください。
問題ノードを隔離するだけでなく、状況に応じて、問題が発生したレプリカ全体を
stop zone隔離することもできます。以下のステートメントを参照してください。ALTER SYSTEM STOP ZONE zone_name;例:
ALTER SYSTEM STOP ZONE z4;