Apache Scoreboard:サーバーの使用率を詳細に把握する

Apache Scoreboard では、現在、リクエストを読み取っているワーカー、応答を送信しているワーカー、あるいはアイドル状態で待機しているワーカーの数がリアルタイムで表示されるため、これを利用して サーバーの使用率 当て推量なし。mod_status を通じて、ステータスデータに体系的にアクセスし、シンボルを解釈し、スループットを測定し、そこから具体的な チューニングの手順 より。

中心点

  • リアルタイムステータス すべてのワーカーの状況を理解し、ボトルネックを迅速に把握する。.
  • mod_status 安全に提供し、ExtendedStatusを効果的に活用する。.
  • 主な数字 Req/s、Busy/Idle、CPUなどを体系的に評価する。.
  • 記号 スコアボードの情報を読み解き、的確な行動をとること。.
  • モニタリング 自動化を行い、データに基づいてアラームを設定する。.

Apache Scoreboardとは何ですか?

スコアボードでは、Apacheがワーカーごとに「読み取り中」「送信中」「アイドル」といった現在のステータスを保存しており、それによって私は 業務分担 プロセスの状況です。データは内部で保持されており、mod_status を通じて、HTML 形式または機械可読モードのいずれかを選択してインターフェースに表示されます。そこで、ビジーワーカー、アイドルワーカー、CPU 負荷、稼働時間、およびアクセス数や転送バイト数を確認しています。 特に役立つのは、個々のワーカーをきめ細かく把握できる点です。これにより、処理時間やアクティブなホストを把握できるからです。こうして、処理能力が不足しているか、リクエストの処理に時間がかかりすぎているか、あるいはキープアライブスロットがブロックされているかを、確かな根拠に基づいて判断しています。これら 透明性 原因分析の時間を節約できます。.

mod_status を使って次のようにアクセスします

/server-status を実行すると、見やすい HTML ページが開きます。/server-status?auto を実行すると、以下の情報を簡潔なテキスト形式で表示します。 モニタリング およびスクリプト。本番環境では、ExtendedStatusを有効にしています。これは、ワーカーごとの追加メトリクスが必要なコンテキストを提供してくれるからです。アクセスは管理用ネットワークまたは個々のホストに厳格に制限し、ページを一般公開することはありません。 手動での確認には、短いブラウザセッションで十分ですが、継続的な収集を行う場合は、自動ビューをモニタリングシステムに組み込んでいます。これにより、オーバーヘッドを最小限に抑えつつ、 ステータスデータ 合理的に行う。.

安全な構成とオーバーヘッドの見積もり

私は /server-status を徹底的に保護し、状況に応じて IP の許可、認証、または内部管理用 VHost のいずれかを判断しています。ExtendedStatus は測定可能な影響をもたらしますが、実際にはその影響はごくわずかです。 オーバーヘッド; モニタリングでもデータを使用する場合は恒久的に有効にし、アドホック分析では一時的にのみ有効にします。明確な設定例があると、ミスを防ぐのに役立ちます:

# を有効にする
ExtendedStatus On

# のステータスを内部でのみ提供

  SetHandler server-status

  # 方法 1:IP ベース
  Require ip 10.0.0.0/8 192.168.0.0/16 ::1

  # 方法 2:Basic 認証(例:IP 認証に加えて)
  #AuthType Basic
  #AuthName "Server Status"
  #AuthUserFile "/etc/httpd/conf/.htpasswd"
  #Require valid-user

リライトルールやプロキシルートが干渉しないように、このページは本番用VHost以外からも(例えば内部アドレス経由で)アクセスできるようにしています。デバッグ段階を終える際には、必要な情報のみが公開されていることを確認しています。.

スコアボードの記号を素早く読み取る

不具合が発生した際は、まず記号を確認します。なぜなら、「R」と「W」が密集して並んでいる場合は過負荷を示し、多くの「_」は正常状態を示しているからです。これらは コーディング 診断を迅速化します。また、K には、タイムアウト設定が不適切なためにワーカーを拘束してしまう、開いたままのキープアライブ接続が表示されます。 Dに焦点が当たっている場合は、応答を遅延させているDNSルックアップを示しています。Lのエントリが頻繁に見られる場合は、ブロック型のロギングやストレージサブシステムが原因である可能性があります。このように、一瞥するだけで主なボトルネックを特定し、的を絞った 対策.

記号 意味 緊急のお知らせ
_ アイドルワーカー 十分な 定員 あり
R 閲覧依頼 ネットワークの遅延を確認するか、または クライアント
W 返信を送信中 バックエンド処理時間と出力サイズ 分析する
K キープアライブ タイムアウトとスロットの紐付け 確認する
D DNS 検索 リバースDNSを無効にするか、または キャッシュ
L ロギング 非同期ロギングと 入出力 チェック
C 閉会 通常の接続終了、, 短い 目に見える
G 優雅に仕上げる 完了したリクエスト、ワーカー 片付ける に於いて
I アイドル時のクリーンアップ 批判的でない、ワーカー 調整済み
. 何もしない 落ち着いている時期、リソース 無料

高度なパターンや攻撃プロファイルを検知する

私は個々の状態だけでなく、その 期間 およびシンボルの分布。ネットワーク帯域幅が低い状態で長時間の「R」状態が多数見られる場合は、クライアントの応答が遅い、あるいはSlowloris攻撃のパターンを示唆しています。その場合は、リクエストごとの読み取り時間を制限し(例:RequestReadTimeoutを使用)、現実的な最小レート(Min-Rates)を設定します。 バイト/リクエスト数が大きいW状態が優勢な場合は、帯域幅またはストレージがボトルネックとなっている可能性が高いです。D状態とL状態が同時に集中している場合は、名前解決とログI/Oを優先します。重要なのは、そのパターンが 広い (すべてのワーカー)または ローカル (VHostまたはパスのみ)という条件で検索すれば、アプリケーション内のホットスポットをより素早く見つけることができます。.

Webサーバー分析の主要指標

1秒あたりのリクエスト数はスループットを示していますが、私は並行して、1秒あたりのバイト数と1リクエストあたりのバイト数を評価しています。 ペイロード. ビジー/アイドル比は、スロットが不足しているか、設定が保守的すぎるかを明らかにします。 CPU使用率と応答時間を相関分析し、CPUバウンドとI/Oバウンドを区別します。稼働時間は、直近の再起動と真の傾向を区別するのに役立ちます。この組み合わせから、ワーカー、キープアライブ、および タイムアウト より。

実務における閾値と警報

私はアラームを瞬間値ではなく、移動平均に基づいて設定しており、 期間. 例えば、以下のヒューリスティックが有効であることが確認されています:アイドル状態が 10 % 未満の状態が 5 分以上続くと、キャパシティ不足を示唆します。同じ期間においてビジー/アイドルの比率が 4:1 を超えると、飽和状態を示唆します。 トラフィックが一定であるにもかかわらずReq/sが低下し、Busyが一定のままの場合、その背景にはバックエンドの問題があることが多い。プライムタイムにおいてKの割合が50 %を超える場合は、キープアライブの設定が緩すぎることを示唆している。 閾値に加え、トレンドアラート(負荷が一定であるにもかかわらず応答時間が上昇している状態)も追加します。 季節性 (日単位および週単位のパターン)を把握することで、通常の行動と真の変化を見分けることができるようにするためです。.

ScoreboardFile を正しく分類する

一部のプラットフォームでは、Apacheがステータスデータをスコアボードファイルに書き込むため、私はそれを/var/run/httpdのような高速で安全なディレクトリに配置しています。これにより、 信頼性. 複数のインスタンスが同じファイルを使用することを防いでいます。そうしないと、値が改ざんされる恐れがあるからです。 一部のツールはファイルから直接読み込むため、HTTPエンドポイントが不要になります。権限設定が適切であれば、セキュリティ強化とパフォーマンスの観点からこれは有益です。メンテナンスや モニタリング 一貫性を保つ。.

オペレーティングシステムとコンテナの特長

ファイルディスクリプタの制限、バックログ、一時パスがワークロードに適していることを確認します。systemd 環境では、PrivateTmp や ReadOnlyPaths がスコアボードパスに影響を与えていないかを確認します。 コンテナ内では、プロセス/スレッドごとのメモリ要件を控えめに見積もり、Scoreboardパスを書き込み可能な ランタイムディレクトリ. ピーク負荷時には、カーネルパラメータを次のように調整します:

# Sysctl 設定値の例(システム全体でテストおよび文書化)
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
fs.file-max = 1048576

また、Apache サービスの ulimit -n を、最大値になるように調整しています。 同時性 適切です(経験則:プロキシ中心の構成では、未処理のFD ≈ MaxRequestWorkers の 2~3 倍)。変更後は、スコアボードを再度確認して、その効果を検証します。.

代表的なユースケース:過負荷状態のワーカーを特定する

スロットのほぼすべてがRまたはWで埋まっており、_の項目がほとんど表示されない場合、サーバーは 制限. 。次に、MaxRequestWorkers、レスポンス時間、およびブロックするバックエンドを確認します。ワーカーを追加しても改善が見られない場合、ボトルネックは多くの場合、アプリケーション、データベース、またはストレージにあります。 /server-status?auto を使用することで、その瞬間のスナップショットを見るだけでなく、一定間隔で推移を追跡しています。そうすることで、設定を調整すべきか、キャッシュを強化すべきか、あるいは スケーリング 計画する。.

リソースモデルとキャパシティ計算式

ストレージのボトルネックが発生しないよう、事前に容量を計算しています。Preforkの場合、メモリ ≈ プロセス数 × プロセスあたりのRSSとなります。Worker/Eventの場合、メモリ ≈ プロセス数 × (プロセスあたりのRSS) + スレッド数 × スレッドのオーバーヘッドとなります。 システムのツールを使って実際のRSSを測定し、安全マージンを確保しています。簡単な例を挙げると、20プロセス × 50 MB + 500スレッド × 1 MB で ≈ 1.5 GBとなり、これにキャッシュやOSバッファが加算されます。 これをもとに、MaxRequestWorkers、ServerLimit、ThreadsPerChildを算出します。また、SSL、PHP、リバースプロキシなどのモジュールは、それぞれ スレッド 向上させる可能性があるため、私は単に無負荷状態だけでなく、実際の積載状態でテストを行っています。.

待ち行列とレイテンシの解釈

リクエストが「Accept」または「Write」の状態に長時間留まると、体感上のレイテンシが増大するため、私はキューの長さやAcceptバックログについて検討しています。スコアボードは、その点で貴重な情報を提供してくれます。 指標. キュー、レイテンシ、リクエスト処理についてより詳しく解説しているのは、こちらの記事です: 待ち行列と遅延. これらの基本原則に基づき、ボトルネックがApacheの前、Apache内、あるいはその後に発生しているかを判断します。一時的なトラフィックの急増は許容しますが、継続的な混雑については、処理能力やアーキテクチャの見直しを通じて解消します。これにより、タイムアウトが深刻化するのを防ぎ、クライアントが キャンセル.

バックエンドおよびプロキシへの接続を確立する

プロキシ中心の環境では、Wフェーズから、ワーカーが アップストリーム 待機する。ExtendedStatusでVHostとリクエストされたリソースを確認し、これをもとに処理が遅いバックエンドとのパスを照合する。現実的なタイムアウト(TimeOut、ProxyTimeout)を設定し、スレッドが不必要にブロックされないよう、コネクションプーリングを確認する。 アップロード時にパイプラインが詰まる場合は、クライアントごとの読み取りレートを調整し、送信速度の遅い送信元からの影響を防ぐようにします。大容量のレスポンスが多数生成される場合は、圧縮、チャンキング、および キャッシング W時間を短縮するために検討している。.

キープアライブを適切に設定する

多くの「K」エントリは、接続を閉じずに放置しているクライアントの存在を示唆しています。これにより、後続のリクエストの処理が高速化されますが、スロットが バインド. タイムアウトは、正当なリクエストには有利に働きつつ、アイドル状態が長引かないように設定しています。アクセスが集中するサイトでは、Keep-Aliveを効率的に束ねるアップストリームプロキシが役立っています。微調整の詳細については、以下のガイドを参照しています: キープアライブのタイムアウトを設定する. 適切なタイムアウトを設定することで、スロットの占有率が低下し、サーバーは負荷下でも安定した状態を維持できる レスポンシブ.

HTTP/2、TLS、およびMPMの連携

HTTP/2 では、通常、クライアント 1 つあたりの K バインディング数が少なくなります。これは、1 つの接続で複数のストリームを扱うためです。 共有する. ここでEvent-MPMの強みが発揮されます。キープアライブ処理が効率化され、アクティブな処理はスレッドに委ねられます。TLSは接続ごとのCPU負荷を増加させます。私は、Wの割合が高いこととCPU負荷の高さに相関関係があるかどうかを監視し、暗号スイートやセッション再開を最適化しています。 ステータスビューでは、VHostごとにHTTP/2とTLSの終端パスどちらが優勢かを把握し、それに応じてリソース配分を調整します(例えば、コンテキスト切り替えのコストが高い場合は、プロセス数を増やすのではなくスレッド数を増やすなど)。.

DNSルックアップとロギングを確実に管理

スコアボードに「D」が頻繁に表示される場合は、リバースDNSを確認し、ローカルキャッシュを有効にするか、ルックアップを無効にします。これにより、 レイテンシー. Lエントリが多数見られる場合、ロギングが処理を遅らせるため、ログファイルを分散させたり、より高速なストレージを使用したり、非同期パイプラインを活用したりします。ローテーションログについては、フラッシュのピークが発生しないように設定します。 並行して、書き込みI/Oとファイルロックを測定し、ブロックを引き起こすパターンを解消します。これにより、処理時間を確保し、負荷を軽減します。 労働者.

監視システムへの統合

私は定期的に /server-status?auto を収集し、その値を時系列データとして保存した上で、Busy 対 Idle、Req/s、Bytes/s、および CPU 使用率を ダッシュボード. アラートでは、スロットが常に満杯の状態、応答時間の増加、あるいは異常なトラフィックパターンに対して閾値を定義します。アノテーションを使ってデプロイメントにマークを付けることで、その影響を即座に把握できます。この履歴データにより、一時的なピークと真の傾向を区別できます。これにより、計画的にキャパシティを管理し、以下の事態を未然に防ぐことができます。 サプライズ.

スクリプトによる自動データ収集

手っ取り早い確認には、Autoビューを解析して主要な数値のみを出力する軽量なスクリプトで十分です。 オーバーヘッドを低く抑えるため、クエリ間隔は適度な長さ(例えば10~30秒)に設定し、各サンプルにはホスト、VHost、および環境のタグを付与しています。.

#!/bin/sh
URL="http://127.0.0.1/server-status?auto"
curl -s "$URL" | awk -F': ' '
  /BusyWorkers/ {busy=$2}
  /IdleWorkers/ {idle=$2}
  /ReqPerSec/   {rps=$2}
  /BytesPerSec/ {bps=$2}
  END { printf("busy=%s idle=%s rps=%.2f bps=%.0f\n", busy, idle, rps, bps) }
'

大規模な環境では、さらにワーカーごとの時間を集計し、それらをVHostに割り当てて計算を行います。 分位数 応答時間について。そうすることで、問題を抱えているのが一部のユーザーだけなのか、それとも大多数のユーザーが影響を受けているのかを見極めることができます。.

MPMと生産能力計画

MPMは、Apacheが接続をどのように処理するかを決定します。スコアボードのデータからは、プロセスかスレッドのどちらがボトルネックになっているかが分かります。 要因 です。選択やチューニングの際には、イベントとワーカーを比較し、アイドル時間、キープアライブのバインディング、コンテキスト切り替えを測定しています。この投稿には、簡潔な比較が掲載されています: イベント対ワーカー MPM. 変更を加えた後、Busy/IdleおよびReq/sを再度確認し、その効果を検証します。このようにして、データに基づいた意思決定を行い、 効率性.

グレースフル・リスタート、ローリング・デプロイ、およびメンテナンス

デプロイや設定変更の際には、私は主に しとやか 再起動を停止。スコアボードを見ると、新しいプロセスが起動し、古いプロセスが正常に終了する過程で、多くのG状態が確認できます。私は、十分なアイドル容量が残るようにローリング変更を計画しています。まず負荷を軽減し、次にグレースフルに再読み込みを行い、その後、残りのノードを処理します。 G状態が長引く場合は、古いプロセスが応答の遅いリクエストを待っていることを示唆しています。その場合は、タイムアウトとキープアライブの設定を確認し、切り替え時間を短縮します。.

段階を追って、確かな分析を行う

mod_status を有効にし、アクセス権を設定して、ExtendedStatus を有効にします。そうすることで、すべての 詳細 を取得します。その後、ブラウザでHTMLページを確認し、アイコンの実際の表示パターンを把握します。次のステップとして、/server-status?autoをモニタリングに組み込み、メトリクスを検証します。 その後、ワーカー数、キープアライブ、タイムアウト、キャッシュ、アプリケーションパスといった項目を順に最適化します。各変更について、リクエスト数/秒(Req/s)、応答時間、Busy/Idleが再び 緑地 嘘だ。

要約:羅針盤としてのApache Scoreboard

Apache Scoreboard を使えば、リソース使用率、ボトルネック、および 労働者. mod_status、ExtendedStatus、そして適切なモニタリングを活用することで、生データを信頼性の高い意思決定へと変換します。指標やメトリクスによって、容量を拡張すべきか、タイムアウトを短縮すべきか、あるいはアプリケーションそのものに手を加えるべきかが判断できます。 データが適切に把握されていれば、Keep-AliveやMPMへのわずかな変更でも大きな効果をもたらすことがあります。兆候を正しく読み取れば、負荷のかかった状態でもApacheを安定して稼働させることができます。 レスポンシブ そして計画的である。

現在の記事

Apache Webサーバーが設置され、パフォーマンス監視画面が表示されているサーバールーム
Pleskウェブサーバ

Apache Scoreboard:サーバーの使用率を詳細に把握する

Apache Scoreboard が Web サーバーの分析にどのように役立つかをご覧ください。mod_status の設定方法、Scoreboard のアイコンの解釈方法、そしてサーバーの負荷を最適化するための Apache モニタリングの活用方法について学びましょう。.