2026年7月30日

2026年7月30日

Apacheのworkerスレッド数を最適化する方法

はじめに

Apache HTTPサーバーは、多くのウェブサイトで使用されているオープンソースのWebサーバーソフトウェアです。workerスレッド数は、HTTPリクエストを処理するためのスレッドの数を制御します。適切な設定を行うことで、サーバーのパフォーマンスを向上させることができます。

症状・背景

workerスレッド数が最適でない場合、以下のような問題が発生することがあります:

  • リソース競合: 多いHTTPリクエストが同時に処理される際に、サーバーのリソース(CPUやメモリ)が過度に消費され、レスポンスタイムが悪化します。
  • スロットリング: スレッド数が少ない場合、大量の同時リクエストを処理できず、ユーザー体験が低下します。

手順・設定方法

ステップ1: プロセッサコア数を確認

まず、サーバーに搭載されているプロセッサコア数を確認しましょう。これは、Apacheが効果的に処理できる最大スレッド数の目安となります。

# cat /proc/cpuinfo | grep "processor" | wc -l

ステップ2: MPMモジュールの設定

ApacheにはいくつかのMPM(Multi-Processing Module)モジュールがありますが、一般的に使用されるのはworkerpreforkです。workerモジュールはプロセッサコア数に基づいてスレッドを動的に管理します。

# nano /etc/apache2/apache2.conf

<IfModule mpm_worker_module>
    StartServers          50
    MinSpareThreads      100
    MaxSpareThreads     300
    ThreadLimit         400
    ThreadsPerChild     80
    MaxClients         600
    MaxRequestsPerChild   200
</IfModule>

ステップ3: 反映と確認

設定を保存後、Apacheを再起動して新しい設定が反映されます。

# systemctl restart apache2

ステップ4: 実践/トラブルシュート/監視

サーバーのパフォーマンスを定期的にモニタリングし、必要に応じて設定を見直しましょう。httopabなどのユーティリティを使用して、HTTPリクエストの処理能力を測定できます。

# ab -n 1000 -c 50 http://localhost/

注意事項

  • スロットリング: 大量の同時リクエストが予想される場合、MaxClientsThreadsPerChildを増やすことで対応できます。
  • メモリ消費: スレッド数を多く設定すると、サーバーのメモリ使用率も高まります。適切なバランスが必要です。
  • セキュリティ上の注意: 設定が不適切だと、サーバーは攻撃者によるDoS攻撃に対して脆弱になります。

まとめ

1. プロセッサコア数の確認: プロセッサコア数に基づいてスレッド数を最適化します。

2. MPMモジュールの設定: workerモジュールを使用し、必要なパラメータを調整します。

3. サーバー再起動: 設定が反映されるようにApacheを再起動します。

4. パフォーマンス監視: 定期的にサーバーのパフォーマンスをモニタリングし、必要に応じて調整を行います。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ