過去問ドリル

LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問25

性能・拡張性の設計/性能見積もりと評価

高アクセスが想定されるWebサーバーの負荷テスト中に「Too many open files」エラーが発生し、リクエストを受け付けられなくなった。この問題への設計対処として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)

正解:D

解説

「Too many open files」はプロセスが開けるファイルディスクリプタ数の上限(ulimitのnofileまたはsystemdのLimitNOFILE)に達したことを示します。Webサーバーではクライアントとのソケット、静的ファイル、ログファイルなどがファイルディスクリプタを消費します。対処はLimitNOFILEをピーク時の同時接続数やオープンファイル数を踏まえた値に引き上げ、システム全体のfs.file-maxも不足しないよう確認することです。ファイルシステムの変更やスワップの増加はこの問題の原因ではありません。

選択肢ごとの解説

  • A誤り。ファイルシステムやI/Oスケジューラの変更はディスクI/O性能に影響しますが、ファイルディスクリプタ数の上限とは無関係です。
  • B誤り。スワップの拡張は仮想メモリの補助であり、ファイルディスクリプタの上限値とは直接関係ありません。
  • C誤り。ログI/Oの非同期化はスループット改善には寄与しますが、ファイルディスクリプタ枯渇の根本対処にはなりません。上限値そのものを引き上げる必要があります。
  • D正しい。LimitNOFILEとfs.file-maxを実際の最大使用量に見合う値に設定することが、ファイルディスクリプタ枯渇への根本対処です。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く