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)モジュールがありますが、一般的に使用されるのはworkerとpreforkです。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: 実践/トラブルシュート/監視
サーバーのパフォーマンスを定期的にモニタリングし、必要に応じて設定を見直しましょう。httopやabなどのユーティリティを使用して、HTTPリクエストの処理能力を測定できます。
# ab -n 1000 -c 50 http://localhost/
注意事項
- スロットリング: 大量の同時リクエストが予想される場合、
MaxClientsとThreadsPerChildを増やすことで対応できます。 - メモリ消費: スレッド数を多く設定すると、サーバーのメモリ使用率も高まります。適切なバランスが必要です。
- セキュリティ上の注意: 設定が不適切だと、サーバーは攻撃者によるDoS攻撃に対して脆弱になります。
まとめ
1. プロセッサコア数の確認: プロセッサコア数に基づいてスレッド数を最適化します。
2. MPMモジュールの設定: workerモジュールを使用し、必要なパラメータを調整します。
3. サーバー再起動: 設定が反映されるようにApacheを再起動します。
4. パフォーマンス監視: 定期的にサーバーのパフォーマンスをモニタリングし、必要に応じて調整を行います。
関連記事: