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を追加しました。