-2

私は困惑しています。遅いクエリを想定しています。

注: すべてのクエリはテストされており、アプリ/ウェブサイトを使用する人が少ない場合 (それぞれ 0.01 秒未満) にうまく動作します。

現在のセットアップで CPU 使用率が高いのですが、なぜだろうと思っていました。インデックスの問題である可能性はありますか?

考えられる解決策: XML キャッシュ ファイルを使用して 1 時間ごとに情報を保存し、MySQL クエリの負荷を軽減できると考えましたか? (1 時間ごとにファイルを更新します)。

そのようなことをしてもよいでしょうか。SSDドライブがあるので?それとも、以前よりも遅くなりますか?

現在、トラフィックが多い時間帯に、当社のウェブサイト/アプリが最初のバイトを返すまでに最大 30 秒かかる場合があります。私のウェブサイトは Plesk 12 サーバーで実行されています。

更新 私のmysqlセットアップに関する詳細情報は次のとおりです.. http://pastebin.com/KqvFYy8y

4

2 に答える 2

1

クエリは常に遅くはないと思います。これが当てはまる場合、クエリが問題である可能性はほとんどありません。

何が CPU を使用しているかを知る必要があります。無限ループを伴うランナウェイ スクリプトの可能性があります。

これを試して:

<?php
header('Content-Type: text/plain; charset=utf-8');
echo system('ps auxww');
?>

これにより、次の形式のリストが返されます。

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

列をスキャンして、列%CPUでユーザー名を探しますUSER

プロセスが 100% の CPU を使用している場合は、PID数値を取得して次のことを行う必要があります。

system('kill 1234');  

はどこ1234ですかPID

441% および 218% で実行されている mysql プロセスは、非常に問題があるようです。

これが共有サーバーであると仮定すると、CPU を占有しているクエリを実行している別のユーザーが存在する可能性があります。プロバイダーに相談する必要があるかもしれません。

共有サーバーの 1 つで監視していますが、mysql プロセスの CPU は 16% を超えていません。

MySQLチューナー

リンクから、トラフィックが多いようです。

  • チューナーは 23.5 分実行されていました
  • インデックスなしで実行された結合: 69863

23.5分で69863。1 秒あたり約 50 件のクエリになります。

この音は正しいですか? 1 秒あたり 150 回、JOIN を使用してクエリを実行します。

インデックス JOIN テーブル

JOIN を使用したクエリがあります。

テーブルは列によって結合されます。

結合されたテーブルで、2 つのテーブルを結合する列にインデックスを追加します。

于 2015-05-01T21:22:38.467 に答える