サーバーでPHPスクリプトの負荷を監視する方法は?

サーバーでPHPスクリプトの負荷を監視する方法は?

私たちの専用サーバーに問題を引き起こすように見えるウェブサイトがあります。

最近専用サーバーがダウンしました。これは非常に迷惑なことです。ランダムに衝突します。ホスティング会社の技術支援チームではメモリ不足のためだと明らかにした。 Apacheのmaxclients設定を増やしましたが、うまくいきませんでした。

したがって、おそらく最終的には(mysqlとイメージをサーバーから移動しました)、どこかに多くのメモリを使用するPHPスクリプトがあるということです。確かにStack Overflow標準ではありませんが、比較的人気のあるサイトです。

どこかにメモリリークがあるか、どこかに無限ループがある可能性があります。

どのスクリプトが最も多くのメモリを使用しているかを確認するには?

ベストアンサー1

記憶力が足りなくてそうです。 Apacheのmaxclients設定を追加しました。

他のサービスプロバイダを探してください。

現在のクライアント数を処理するのに十分なメモリがない場合、クライアント数を増やすと問題が悪化します。

1つ目は、PHPエラーを正しく記録していることを確認することです(つまり、Webサーバーerror_logに書き込みます)。 (意図的に)誤って作成されたスクリプトにアクセスしてそれをテストできます。

<?php
 this_fn_does_not_exist();

メモリ不足エラーは、当時実行していたスクリプトの詳細や失敗した場所など、このエラーログに記録されます。

詳細を記録するコードを追加することもできます。メモリ使用量(たとえば、自動の前に追加のスクリプトを使用)失敗するのを待たないでください。シャットダウン機能を登録してこれを行うことをお勧めします。

これは、リファクタリングにいくつかの優先順位を与える必要があります。

また、別の練習でhttpdプロセスの数と利用可能なメモリ量の記録を開始するcronジョブを設定する必要があります。

#!/bin/bash

t=`date`
m=`free | grep '+'`
p=`ps aux | grep httpd | wc -l`

echo $t $m $p >> /var/log/webload

次に、結果をグラフ化して、指定されたメモリ量でサービスできるクライアントの数を確認します(良いI / Oパフォーマンスはキャッシュによって異なり、システムで発生するI / Oに応じて次のことができます。)の約50%を確保することです)。

これはまた、リファクタリングの効率を測定するメカニズムを提供する。

各PHPプロセスで利用可能な最大メモリを増やすことは、単にphp.iniファイルを更新する問題です。

PHP / Webサーバーのチューニングに一般的なプロセスを適用します。つまり、キャッシュの確認、圧縮が最適に機能していることを確認し、データベースクエリを記録して分析します。

時にはより多くのハードウェアが必要になることがあります。

おすすめ記事