2024.11.25

#34 Nginx、PHP-FPMのデータ取得に対応しました

目次

開く

     

    こんにちは。ES/1 Shelty担当の山田です。

    ES/1 Shelty V2.8.0から新たにNginxとPHP-FPMのデータ取得に対応するので、ご紹介します。

    どのようなデータが取得できるのか、データの具体的な活用方法についても記載しておりますので、これらの環境をお使いの方に是非読んで頂ければ幸いです。

    ※こちらの機能を活用頂くには、PHP-FPMとNginxそれぞれの設定ファイルにて統計情報のWeb表示を有効化する必要があります。

     詳しくはそれぞれの公式ドキュメントをご参照ください。

     

    PHP-FPM統計情報の取得

    PHP-FPMとは、Webサーバー上でPHPを効率的に実行していくための仕組みです。

    PHP-FPMは設定を有効化することで、瞬間的な情報をWebページから参照することができます。

    下の図のように表示されるのですが、単なる数字でしか表示されておらず、瞬間的の値しか見れないので、データとして見づらくなっています。例えば、「active processes」はこのWebページにアクセスした瞬間に動いているプロセス数となっています。

     

    スクリーンショット 2024-11-12 135604
    スクリーンショット 2024-11-12 135604

    PHP-FPM統計情報

     

     

    今回リリースされるV2.8.0ではこの統計情報をES/1 Sheltyに取り込み、アプリケーションのリクエスト数の変化を計測したり、性能問題のチューニングをしたりするための情報として活用することができます。

     

    データの活用法

    PHP-FPMではリクエストを捌くためのプロセスを一定数常に起動することで、処理にかかるオーバーヘッドを極力減らして素早い処理を実現します。リクエストを捌いているプロセスを「アクティブプロセス」、待機しているプロセスを「アイドルプロセス」と呼びます。

    常に起動するプロセス数やピーク時に起動するプロセス数の上限などは、設定により変更できます。リソースに上限が無ければプロセス数を増やせば増やすほど処理が早くなりますが、そうは行きません。CPUが足りなければプロセスを多く起動しても処理が間に合わず、むしろプロセスを増やす分メモリに負荷をかけることになります。

    アプリケーションの性質に合わせてリソースを最大限活用できるように設定することが望ましいです。

     

     

    小規模な環境ではありますが、PHP-FPMを利用した環境を用意して、統合ダッシュボードで監視してみました。

     

    スクリーンショット 2024-11-18 171326
    スクリーンショット 2024-11-18 171326

    統合ダッシュボードでのPHP-FPM統計情報の表示

     

    まず、下のグラフではPHP-FPMが受け入れたリクエスト数を計測しています。これによってアプリケーションの利用傾向などを見ることができます。今回では9~12時と16時以降にリクエストが急増することが分かります。

    それと合わせて上のグラフでプロセスの動きについて見てみます。ピーク時でもほとんどのプロセスはアイドル状態であり、常時ここまでのプロセスを起動する必要は無いように見えます。それならば、待ちプロセスの最大許可数を減らすことでサーバーが他のプロセスにリソースを割くことができます。逆にアイドル状態のプロセスが常に少ないようなら、常時起動しておくプロセス数を増やすことで、レスポンスの改善を見込むことができます。

     

    スクリーンショット 2024-11-18 171639
    スクリーンショット 2024-11-18 171639

    プロセス情報

     

    対象サーバーにOS Agentを導入してプロセス情報を見ても分かる通り、PHP-FPMのプロセスは常に起動中であるため、ほとんどがアイドル状態であっても放置しておくとメモリ使用量は増加します。業務傾向とプロセス単位やサーバー単位でのリソース利用状況を比べることで、メモリ使用量が大きくなる前に定期的にプロセスの再起動を行うなどの、適切な運用方法が見えてきます。

     

    Nginxアクセスログ+統計情報

    Nginxについては、アクセスログを取り込むことができます。またPHP-FPM同様に、統計情報について取り込むことができます。
    アクセスログを特定のフォーマットで出力する設定と、統計情報をWebページで表示するための設定が必要になります。

     

     

    アクセスログ対応

    Apacheアクセスログに続きNginxアクセスログへの対応をしました。

    ES/1 Sheltyではアクセスログを取り込むことによって各URLの応答時間やアクセス数を統計して表示することができます。

    Java Agentや.NET Agentを導入することでも同じ機能を利用することができますが、APサーバーにAgentを導入したくない、又は対象の環境を利用していないというユーザーであっても、アクセスログを取り込むことでこちらの機能が利用できます。

     

    スクリーンショット 2024-11-12 161201
    スクリーンショット 2024-11-12 161201

    アクセスログデータを利用したURL一覧画面

     

    統計情報

    Nginxでも設定を有効化することで統計情報を取得することができます。こちらもWebページから参照できるのですが、PHP-FPM統計情報と同様で、そのままでは扱いづらい形になっています。

     

    スクリーンショット 2024-11-12 162420
    スクリーンショット 2024-11-12 162420

    Nginx統計情報

     

    ES/1 Sheltyを用いて統計情報を定常的に取得することで、業務量の変化やWebサーバー側でリクエストを拒否した数などを長期間でまとめて見ることができます。

     

    スクリーンショット 2024-11-18 172829
    スクリーンショット 2024-11-18 172829

    統合ダッシュボードでのNginx統計情報監視

     

    PHP-FPMの時と同じような話になるので省略しますが、こちらもPHP-FPM統計情報と同様にOS性能情報と合わせて見ることで、チューニングのヒントを見つける手助けとなります。

     

     

    まとめ

    V2.8.0でのアップデートで、PHP-FPM統計情報やNginxアクセスログ、Nginx統計情報に対応しました。

    これらの環境を使っているものの、情報を取っていない又は活用することができていないといったお悩みがありましたら、今回の機能をお試しください。

     

    ES/1 Sheltyでは、今回の様に取得可能なデータ項目の追加を積極的に行っています。

    現在対応していないデータ項目も、お客様のご要望がありましたら優先的に対応していきます。

    製品に対するご要望がございましたら、担当SEにぜひご相談下さい。

     

     


     

     

    コメント一覧

    執筆者

    T.Y. 

    営業技術本部 技術統括部 顧客サポート部 

    関連記事