同期的なログ出力方式では、ワーカースレッドがログ内容のカプセル化とファイル書き込み操作を同時に担当します。これによりプログラムのパフォーマンスが低下するだけでなく、特定のI/O異常によってログ書き込みがブロックされ、SQL応答時間にジッターが発生したり、OceanBaseデータベースのプロセス状態が異常になることもあります。OceanBaseデータベースでは、非同期ログ出力方式を導入しています。ワーカースレッドはログ内容のカプセル化のみを担当し、ファイル書き込み操作は専用のスレッドが担当することで、プログラムのパフォーマンスとシステムの安定性が向上します。非同期ログ出力機能を有効にするかどうかは、クラスタ構成パラメータenable_async_syslogで制御され、デフォルトでは有効になっています。
注意
安定性を考慮して、非同期ログを有効にすることを推奨します。ただし、非同期ログを有効にした場合、OBServerが異常終了した際に、最後の短いログセグメントがディスクにフラッシュされずに失われる可能性があるため、テスト環境では非同期ログを無効にすることを推奨します。
システムに異常が発生した場合、OceanBaseデータベースは大量のログを出力します。問題の調査のためにより長期間のログを保持するために、OceanBaseデータベースはログレートリミッティング機能をサポートしています。ログ出力レートは、クラスタ構成パラメータsyslog_io_bandwidth_limitで制御され、デフォルト値は30MB/秒です。ログレートリミッティングが発生すると、ログがランダムに破棄され、同時にREACH SYSLOG RATE LIMITのINFOログが出力されます。ERRORレベルのログはレートリミットの対象にはなりません。
注意
非同期ログ出力方式があるにもかかわらず、CPU負荷は発生します。極端なパフォーマンスが求められるシナリオ(例えば、大規模なセールイベントなど)では、ログレベルをERRORに設定することでログ量を削減できます。