web-dev-qa-db-ja.com

サーバーの速度が低下する原因を突き止める

私には、ほとんどの場合正常に動作するphpサイトを持っている潜在的なクライアントがいます。ただし、毎週かそこらで、ラグ(ページの読み込みが遅い)が発生します。これを引き起こしている可能性のあるものは無数にあると確信しています(ネットワークの問題、不適切なインストール、特定のphpファイル、トラフィック負荷の増加)。ただし、これを引き起こしている原因を推測する方法が必要です。これらの状況を処理するために特別に作成されたサーバー監視ソフトウェアはありますか?

PS:サーバーはLinuxです

2
user57187

私は次のことを見つけるでしょう:

  • この「スローダウン」はすべてのユーザーに影響しますか?
  • これはサイト全体で遅くなりますか、それともサイト内の特定の機能セットだけですか?
  • それは毎日同じ時間に、毎週同じ日に起こりますか?

スローダウンが常に金曜日の終了時間であり、ユーザーがその週のタイムカードデータを入力するためにアプリケーションが使用されている場合、サーバーが最後のすべての負荷を引き受けるためにより多くのCPU /メモリまたは帯域幅を必要としている可能性があります-分ユーザー。これらのタイプのパターンは、アプリケーションとそのユーザーおよび使用法の詳細を知らなければ、追跡するのが難しいと言えば十分です。

ツールを推奨するには、アプリが実行されているOSを知る必要がありますか? Windows/IIS、Linux/Apache?しかし、私の逸話的な経験では、サイトの速度低下はいくつかの原因の1つによって引き起こされます。

  • 不十分なデータベースプログラミング
    • SELECT * FROM TableXYZ
    • インデックス付けされていない列へのクエリ
  • サーバーの問題
    • メモリーが充分ではありません
    • 帯域幅が足りません
      • サーバー->ユーザー
      • サーバー->データベース

(パフォーマンス関連の問題について)チェックする最も一般的なことは次のとおりです。

  • データベースサーバー
    • CPU負荷
    • 使用可能なメモリ
    • ディスクキューの長さ(ディスクIOが最大になっていますか?
  • Webサーバー
    • CPU負荷
    • メモリ使用量
    • エンドユーザーへの帯域幅
    • データベースサーバーへの帯域幅
2
Nate

MSSQL環境では、ビジー状態のDBサーバーで[DBの自動拡張]オプションを有効にすると、ランダムな速度低下も発生する可能性があります。自動拡張中は、ファイルが展開されるときにディスクI/Oが非常に重いため、その間に発生するリアルタイムトランザクションは、特にこのサーバーがすでにI/O制限の近くで実行されている場合、著しく遅くなります。

これを解決するために、MB単位のDB自動拡張量を、現在は1年に1回だけ発生するように、途方もなく大きな数に拡張しただけです。まだ減速していますが、今は毎週発生していません。

1
Rick

シェルにアクセスできますか?

Sysstatはインストールされていますか?

シェルアクセスがある場合は、sysstatがインストールされ、有効になっていることを確認してください。データが収集されるまで1時間ほど待ち、コマンドラインからrootとして「sar」と入力します。あなたがデータを見れば、素晴らしい。今それを残します。それまでの間、sysstatまたはsarのチュートリアルをお読みください。ラグが再び表示されたら、接続してsarを実行し、正確に何がいつ遅くなっているのかを確認します。いつ、何が不足しているのか(CPU /メモリ/ IO /ネットワーク)を正確に確認することで、何を見るべきかをよりよく理解できます。

0
Kyle__

スローダウンをどのように測定しますか? keynoteやalertfoxなどの外部Web監視ツールを使用していますか?これは、内部ログと比較するのに役立ちます。

0
ssd2012

システム監視(コマンドラインでアドホック、またはバックグラウンドで実行してデータをログに記録するように設定した場合は傾向)のための本当に素晴らしい小さなツールは dstat です。これは、コマンドライン用に私が見つけた最高のツールです。

1つの利点は、Pythonにのみ依存しているため、アクセスが制限されているシステムで自宅からすぐに実行でき、ほとんどの機能はrootを必要としないことです。

主要なコンポーネント(および最も重いヒットプロセス)を毎秒リアルタイムで使用できるようにするためのお気に入りのエイリアスは次のとおりです。

>どのdstat-long 
 dstat-long dstat -cdngm --top-cpu --top-mem
0
entropo