PHP、次に MySQL は、ユーザーが 20 人を超えるとアクセスが非常に遅くなります。その理由は誰にもわかりません。有料あります
このようなアプリを作成しましたが、N日間悩んでいます。専門家がいる場合は、お金を払って解決することができます。
詳細については、qq 24508609 までお問い合わせください。専門家でない場合は、時間を無駄にしないでください。
Web サーバーのネットワーク速度は約 1M ですが、ネットワーク速度と関係していますか?
専門家が分析を手伝ってくれるか、私に直接連絡してください。ありがとうございます。
-----解決策---------
速度の低下はさまざまな理由で発生する可能性があります。
私が遭遇した 2 つのことについてお話します。
1. テーブルのレコードが多い場合、対応するインデックスが正しく構築されていない場合、SELECT 速度が非常に遅くなります。遅い。 。
2. 大きなテーブルを選択する場合は、* を使用しないでください。同様に、count() 関数で * を指定しないでください。多くのオーバーヘッド。
------解決策------------------
データベースに接続しないと遅くないですか?
------解決策----------------------
20 人のユーザーには遅すぎますか?
いいえ、それは 1 階で書かれた SQL に問題があるか、プログラムの構造に問題があるかのどちらかです。
------解決策------------------
通常、この状況ではプログラムを分析する必要があります。
まず、SQL ステートメントの実行が遅いかどうかを確認します。ローカル データベースで直接実行すると時間を確認できます。1 秒未満の場合は、この理由によるものではありません。
次に、プログラムの理由は、通常、特定のページが遅いことです。すべてのページが遅くなるわけではありません。その後、遅いページを分析します。
第三に、ネットワークが遅く、静的ページを開くのが遅いかどうかを確認するための具体的な解決策があまりありません。
4 番目、サーバーが遅い、つまり構成が低すぎるか、汚染されています。
5 番目は、まだ考えていません。 。 。
------解決策------------------
上で述べたように、ステップバイステップでテストします。問題の原因が判明すれば、解決は簡単になります。
------解決策----------------------
質問してください。テーブルを作成するにはどうすればよいですか? MySQL はどのようなデータベースを使用していますか? InnoDB や MyISAM
などの種類があります。MyISAM ではない場合、たとえば、InnoDB はトランザクションをサポートします。BEGIN TRANSACTION と COMMIT がない場合、挿入または挿入を行うたびに新しいトランザクションが開始されます。変更すると、トランザクションの開始と終了のオーバーヘッドが遅くなる可能性があります。まずデータ テーブルを MyISAM に戻してみていただけますか?
それでも非常に遅い場合は、操作テーブルの SQL ステートメントを調べて結論を引き出す必要があります。特にテーブル間で操作する場合、クエリ ステートメントの効率が低すぎる可能性があります。 、接続プロセス、または比較 このプロセスが何度も繰り返されたため、クエリ量が幾何級数的に増加しました
例:
SELECT * FROM xxxx WHERE abc NOT IN (SELECT * FROM yyyy WHERE yyyy.cde> xxxx.abc)
お待ちください。これは単なる例です。xxxx テーブルと yyyy テーブルのデータ量が両方ともである場合、上記のクエリを実行する必要がある回数は count(xxxx)*count(yyyy) 回です。同様の構造の場合、数万単位で計算されます。さらに数回反復すると、この数値は天文学的な数字になる可能性があります。
もちろん、この状況は次のような自己反復中にも発生します。 >SELECT * FROM xxxx AS t1 WHERE abc NOT IN (SELECT * FROM xxxx AS t2 WHERE t1.cde>t2.abc)
さらに確認して、うまくいかない場合はコードを投稿してください
------解決策---------トロイの木馬が存在するかどうかを確認する必要があります。
------解決策---------ユーザー数に制限はありますか?
------解決策----------------------サーバーはどのようなシステムですか? Windows の場合は、タスク マネージャーで確認してください。Linux の場合は、top コマンドを使用して、mysql と apache がそれぞれどれくらいの CPU を占有しているかを確認してください。
mysql による CPU 占有率が常に非常に高い場合は、SQL の一部に問題があることを意味します。
Web サイトが突然非常に遅くなった場合、mysql コマンドラインで SHOW VARIABLES コマンドを繰り返し実行して、mysql がどの SQL ステートメントを実行しているかを確認します。 SQL ステートメントを確認した後、SQL ステートメントを最適化できます。
my.cnf (Windows では my.ini) を開き、log-slow-queries = throw.log を追加して、ログ ファイルに記録されているすべての Web サイトの最も遅い SQL ステートメントの実行を確認します。 。一つ一つ最適化していきます。
------解決策----------------------さらに、1m の帯域幅は非常に大きくなければなりません問題は、ネットワーク カードのトラフィックをテストするソフトウェアを見つけて、20 人が Web サイトにアクセスするのに必要なおおよそのトラフィックを測定することです。
------解決策------------------突然問題を思いつき、XP は TCP 接続を作成しました制限、XPになりますか?
http://download.it168.com/02/0222/50167/50167_3.shtml