最近、Ubuntu 10.04とApacheを実行している6コアサーバーを購入しました。 6つのコアすべてを使用するようにApacheを設定するにはどうすればよいですか。これを行うためのベストプラクティスは何ですか。
それは可能ですか?可能であれば、それは以下と関係があります(これらは私の設定ではありません)?
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 1500
MaxClients 1500
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
乾杯
これは私の現在の設定です
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Apache(およびその他のマルチスレッドアプリケーション)は、デフォルトで使用可能なすべてのコアを使用します。 Apacheでコアよりも少ないサーバーを使用するように設定していない限り、他に必要なアクションはありません。
Apache内で何が実行されていますか?多くの場合、スレッド化の制限は、非スレッド化モジュールまたはアプリケーションコードにあります。
デフォルトでは、Apacheのほとんどのパッケージバージョンで利用可能なストック構成を使用して、何もする必要はありません。
マルチコアシステムでのApacheの動作と構成方法は、使用する [〜#〜] mpm [〜#〜] によって大きく影響されます。最も一般的なMPMの1つはpreforkです。
プリフォークは基本的に、すべてのリクエストに対して個別のプロセスを提供します。プロセスは、すべてのコアを使用するためにOSによって簡単に分散できます。
ワーカーMPMは実際にはマルチスレッド操作を有効にしますが、スレッドセーフでない一部のApacheモジュール(PHPなど)とは互換性がありません。
このページ コア機能とマルチプロセッシングモジュール を参照し、リンクをたどって、利用可能なさまざまなモジュールについて読んでください。