2016-04-19 4 views
2

昨日、ログに1分以内に接続エラーが多すぎるmysqlエラーが多数あります。私はmax_connectionsのためのデフォルトの設定:151を実行していて、以前これを経験していません。接続されたMysqlスレッドは1-3ですが、接続が多すぎます

現在の状態をチェックすると、スレッド接続は最大で最大1と最大3です。

私はmax_connectionsを増やすべきですか、それとも私は一時的にDDoSに悩まされましたか?

注:それはそれ自体を解決し、その分後すぐに働きました。

更新2:もう一度やり直してください。私はエラーログを数秒以内に複数のエラーを見ることができます。なぜこれが起こるのですか?

+0

その結果、開いている接続の負荷がより高くなる可能性があります。なぜなら、彼らはまだ閉じられていないからです。 – BugFinder

+0

私は最近multi_acceptを有効にしたことをすることができますか?私のnginx設定のために? – Karem

+0

@BugFinder SHOW STATUS WHERE variable_name LIKE "Threads_%" - > Threads_Running(常に1)をチェックするときに接続を見ることができませんか?私はアプリケーション全体で一度接続するmysqliです。 – Karem

答えて

2

max_connect_errorsを100に減らします。これは、ハッカーに対する小さな保護です。

Threads_runningは、SHOWが含まれているため、常に少なくとも1です。

max_connections = 151の場合、Max_used_connections = 152は、151のユーザー接続が入ったことを意味し、1つの「余分な」接続が許可されて使用されました。このため、でなく、root(または他のSUPERユーザ)としてアプリケーションを実行します。

GRANT ... ON your_database.* ...... ON *.* ...)これにより、ハッカーがmysqlデータベースにアクセスすることが大幅に遅くなります。

rootは、localhostからのみ許可してください。これは別の安全対策です。

ウェブサーバーに「アクセス」ログがある場合は、それを見てください。何百もの類似したハッキン​​グ攻撃が連続して表示されることがあります。そして、あなたはそれらの同様のセットを頻繁にするかもしれません。

htmlフォームからのデータは必ずエスケープしてください。 INSERTsを構築するときにこれを行います。これがなければ、あなたは攻撃のために広く開いています。

補遺

SELECT user, host FROM mysql.user WHERE Super_priv = 'Y'; 

SUPERを持っている人を紹介します。最初のカットとして、localhost,127.0.0.1、または::1の値がhostにのみ含まれている必要があります。これらの値はすべて実質的にローカルホストです。これは、ハッカーが最初にクライアントをハッキングすることを防ぎません。クライアントは、ローカルホスト上に存在する可能性もあります。これは別の方法でそれらのリストも

SELECT user, host FROM mysql.user WHERE Grant_priv = 'Y'; 

を戻る質問

への接続数にWebサーバーの(?nginxののの)制限は、MySQLのより小さくなければなりませんmax_connections。これは、とWebサーバーとMySQLの両方を詰まらせるのではなく、ドアのハッカー(およびユーザー)を止めるでしょう。でもうまく動作しているシステム上の

、20は同時に、Webサーバーに許されるべきである何のための合理的な最大です。それ以上あれば、おそらくお互いにつまずいているでしょう。リソースとの戦いのために時間がかかるのではなく、必要なリソースをすべて手に入れることをお勧めします。その一般的な多くのPHP/Perlのタイプの接続の人々が接続を行いますが、一度行って、それを閉じる、または「後で」などが起こるそれを閉じるには、PHP/Perlのにそれを残してはいけないこと - あなたは物事があなたのMySQLへ接続しているかは言及いけない

+0

max_connect_errorsは10です。ルートはlocalhost/local ipからのみ許可されています。私はデータベース*。*に変更しました*。*私のアプリが使用する他のユーザーのために。これらのroot/SUPERは、特定のデータベースに対するGRANT ALL PRIVILEGIESを持っているためですか? – Karem

+0

いいえ、 'SUPER'は' ON db。* 'には含まれていません。 1分で補遺を見てください。 –

+0

追加 - 「質問に戻る」とは、ApacheとMySQLの両方の上限が、穏やかなシステムを突然消滅させた経験に基づいています。電話をかけた人は再起動以外は何もできませんでした。 (美しい写真ではない)あなたの症状のように聞こえる。 –