性能改善のためのApache・WSGIチューニング例(ita-api-organization)

概要

ita-api-organizationでは、以下の問題に対してApache・WSGI設定を調整することで改善できる場合があります。

  • 大量レコード参照時のタイムアウト: タイムアウト時間を延長

  • プロセスの長時間稼働によるリソース蓄積: プロセス再起動頻度を調整

チューニング例

前提

  • ITAバージョン: 2.8.0

  • Platformバージョン: 1.12.0

  • インストール環境: kubernetes

シナリオ

  • 問題1: デフォルトのタイムアウト時間では大量レコードの参照処理が完了しない

  • 問題2: プロセスの長時間稼働によるリソース蓄積

大量レコード参照時には処理時間が長くなるため、タイムアウト時間を延長する必要があります。また、Exastroのデフォルト設定では、Apacheプロセスの再起動までの間隔が長く、その間にメモリリークやキャッシュの蓄積が発生する可能性があります。間隔を短く調整することで、プロセスの再起動頻度を高め、より早期にリソースをリセットし、プロセスを健全な状態に保つことを期待します。

設定

# exastro.yaml
exastro-it-automation:
  # 中略
  ita-api-organization:
    extraEnv:
      PLATFORM_API_HOST: "platform-api"
      PLATFORM_API_PORT: "8000"
+     APACHE_TIMEOUT: "600"
+     APACHE_MAX_CONNECTIONS_PER_CHILD: "5000"
+     WSGI_GRACEFUL_TIMEOUT: "600"
    image:
      repository: "docker.io/exastro/exastro-it-automation-api-organization"
      tag: ""

設定パラメータ

項目

デフォルト値

設定値

説明

APACHE_TIMEOUT

300

600

Apacheのタイムアウト時間(秒)。大量レコード参照時にタイムアウトしないよう延長

APACHE_MAX_CONNECTIONS_PER_CHILD

10000

5000

Apacheの子プロセスが処理するリクエスト数の上限。値を下げることでプロセスの再起動頻度を高め、メモリリークやキャッシュ蓄積を定期的にリセット

WSGI_GRACEFUL_TIMEOUT

300

600

WSGIワーカーのグレースフルシャットダウンのタイムアウト時間(秒)。APACHE_TIMEOUTと合わせることで、長時間処理中のリクエストを正常に完了させる

期待される効果

  • タイムアウト回避: 大量レコード参照時にタイムアウトエラーが発生しない

  • メモリ管理の改善: プロセス再起動頻度を高めることで、メモリリークやキャッシュ蓄積を定期的にリセットし、プロセスを健全な状態に保つ

  • 安定性の向上: リソース蓄積による性能劣化やメモリ不足を防止

実環境での効果は、リクエスト処理のレイテンシやタイムアウトエラーの発生率をご確認ください。