LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問18
高可用性プラットフォームの構築/Webサーバーによる負荷分散nginxをリバースプロキシとして使い、eventsブロックでworker_connectionsを設定している。worker_connectionsの説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)
- A起動するワーカープロセスの数そのものを指定するもので、autoにするとCPUコアの数に合わせて決まる
- B1つのワーカープロセスが同時に開ける接続数の上限で、クライアントとの接続だけでなくプロキシ先との接続も含まれる
- C1つのキープアライブ接続で処理できるリクエストの件数の上限で、この件数に達するとその接続は閉じられる
- Dすべてのワーカープロセスを合計した同時接続数の上限で、ワーカーの数を増やしても全体の値は変わらない
正解:B
解説
worker_connectionsは、1つのワーカープロセスが同時に開ける接続数の上限です。nginxの公式ドキュメントにあるとおり、この数にはクライアントとの接続だけでなく、プロキシ先のサーバーとの接続なども含まれます。そのためリバースプロキシでは、1つのクライアントのリクエストを中継するのに2つの接続を使うことがあり、同時に扱えるクライアント数はおおむねworker_processes×worker_connectionsの半分程度になります。実際に開けるファイルディスクリプタ数の上限(worker_rlimit_nofile等)とも合わせて調整します。
選択肢ごとの解説
- A誤り。ワーカープロセスの数を指定するのはworker_processesで、autoにするとCPUコアの数に合わせて決まります。
- B正しい。ワーカー1つあたりの同時接続数の上限で、プロキシ先との接続も数に含まれます。
- C誤り。1つのキープアライブ接続で処理するリクエスト数の上限はkeepalive_requestsで指定します。
- D誤り。worker_connectionsはワーカー1つあたりの上限で、ワーカーの数を増やせば全体で扱える接続数も増えます。