MySQLデータベースは、異常に高いCPU負荷の問題を記録します

1、起因

スロークエリログの数は約1500を有している午後06時40午後の開始、テンニュース雲は、SMS警報、100%以上の表示、データベースのCPU使用率を受け取りました。

通常の状況下では30%-40%の間でCPU使用率、スロークエリログの数は0です。

 

2、原因を特定

テキストメッセージを受信したとき、ちょうど家に帰る途中で、処理できないため、これだけのホーム再処理。

道路上ながら、彼女はいくつかのテキストメッセージを受信し、再び異常なメッセージを再開する。占いの瞬間、回復する瞬間があります。

自宅に到着した後、コンソールは、我々は確かに145パーセントのCPU使用率、および継続時間が20分であることがわかった、テンセントのクラウドデータベース、クエリの監視を記録します。

18:40-19:00

19:20-19:40

それから私は、テンセントクラウドphpMyAdminのコンソールをログクエリを何が起こっているかを見て試してみたいです。そして、コマンドshow PROCESSLISTを実行し、残念ながら、私はコマンドを実行すると、ピークは過ぎた、私は、任意のクエリが表示されません。

00、問題を見つけたいとのスロークエリログファイル:00-19だから、私は18をダウンロードしました。ダウンロードした後、最初の時間を見つけ、正確に午後06時41分にクエリを遅くし始めました。そして、ファイル全体を表示し、クエリが同じテーブルであり、uidが常に同じで、SQL文で発見されました。

私はビジネスに精通していないですので、私は、開発者に送信されたこれらのSQL文を撃ちました。開発者は、SQL文を見た後、対応するコードの場所を見つけて、SQLクエリの原因は、アドレスの要求であることを私に言った、/アカウント/ ....

00〜19:00の時間帯それから私は、唯一の18をダウンロードし、アクセスログをロードバランシングをダウンロードしました。私は、URIによると、開発者が提供するクエリーログは、真のレコードを見つけました。

それから私は、アクセスアドレスを決定するために、ログをフィルタリングしてみてください。私の最初のフィルタ全体のログ、統計/アカウントの数は/ ...表示されます。数は7900であることが判明します。この7900 18かどうかを知るために:番号:「519」の文字列:「184」00が登場したので、私は、単一のフィルタを使用してログイン:文字列の数と00-19。数2一緒にその7600件見つかりました。説明この7900要求は18から確かである:今回はそれを開始し00:40-19。

そしてそれは、同じIPアドレスからのすべての要求ことは明らかです。明白な理由のために、それは例外要求を開始するのに馬鹿です。

 

3、アプローチ

まず、ファイアウォール上のIPのロードバランシングのアクセスを制限します。その後、開発者は、CSRFを追加しました。

おすすめ

転載: www.cnblogs.com/t-road/p/11258742.html