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へ接続しているかは言及いけない
その結果、開いている接続の負荷がより高くなる可能性があります。なぜなら、彼らはまだ閉じられていないからです。 – BugFinder
私は最近multi_acceptを有効にしたことをすることができますか?私のnginx設定のために? – Karem
@BugFinder SHOW STATUS WHERE variable_name LIKE "Threads_%" - > Threads_Running(常に1)をチェックするときに接続を見ることができませんか?私はアプリケーション全体で一度接続するmysqliです。 – Karem