-1

数か月前、私はウェブサイトを立ち上げました。同時ユーザーの数が増えたため、サーバーが遅くなり、mysql がサーバーをクラッシュさせることがありました (約 7000 の同時ユーザー)。

私は32GBのRAMと1つのWebサイト専用のxeonクアッドコアCPUを備えた強力なサーバーを持っています。また、プログラミングはきちんとしていて軽量です。DB側には特別なことは何もありません...いくつかの単純なテーブル、トリガー、複雑な関係はありません.

mysqlのパフォーマンスを向上させるため、またはそれを置き換えるためにできることは何か提案できますか? 私はあなたからのいくつかの同じ経験とケーススタディを望んでいます.

パフォーマンスを低下させるテーブルの1つを更新すると、ユーザーIPを収集して比較するため、IPが新しい場合は、このテーブルに新しいレコードを追加してユーザーIPを保存します...間違っていると感じます.. . だから私は建設的な批判にオープンです:-D 私がそれにたくさん挿入することを考慮して、このテーブルにインデックスを追加することは良いことですか?

4

3 に答える 3

2

質問は、発生している一般的な問題であるため、少しあいまいですが、問題の根本的な原因を特定するために実行できる手順がいくつかあります。

ハードウェアをプロファイリングします。

CPU、メモリ、およびディスク IO の統計を確認して、ハードウェアの問題を解消してください。特に高いディスク IO は、深刻なパフォーマンスの問題を引き起こす可能性があります。ハードウェアのプロファイリング方法に関する記事がいくつかあります。あなたのプラットフォームをグーグルで検索してください。

SQL クエリをプロファイリングします。

MySQL サーバーでスロー クエリ ログを有効にします。詳細については、次のリンクを確認してください: http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

実行時間が最も長いクエリを特定し、これらのクエリに対して EXPLAIN ステートメントを実行します。遅いクエリのほとんどが SELECT/読み取りタイプのステートメントであることがわかった場合は、インデックスが不足している可能性があります。UPDATE/INSERT/DELETE (書き込み) が問題の原因であることがわかった場合は、インデックスが多すぎるか、ディスクの IO ボトルネックに直面している可能性があります。

このルールを覚えておいてください:インデックスを追加すると、挿入/削除/更新が遅くなり、選択が速くなります。

肝心なのは、サーバーとデータベースのプロファイルを作成して、パフォーマンスとスケーラビリティを向上させるためにどこを変更する必要があるかを判断する必要があるということです。問題のある領域を特定したら、より具体的なアクションを実行できます。

調査結果に基づいてサーバーを最適化するためのサポートが必要な場合はお知らせください。

于 2012-12-12T10:31:05.413 に答える