今日、MySQL がデータベース接続容量に達するという問題が発生しました。
受け取ったエラーは ですError establishing a database connection
。 にアクセスしようとすると/phpma
、代わりに次のエラーが表示されます: phpMyAdmin - Error #1040 - Too many connections
。
接続数を増やすために変更する方法を調べましたmy.cnf
が、これはすでにしばらく前に実行しており、それ以来問題は発生していないと思います。そのため、これらの接続が何らかの脆弱性であるのではないかと少し心配しています。
CentOS を実行しています。これらの接続を確認する簡単な方法はありますか? 何か注意すべき点はありますか? あるいは、アクティブ時間が長すぎる接続を除外する方法があるだけでしょうか (MySQL はこのように動作するのでしょうか?)。
答え1
Linux から、mysql で実行されているスレッドを確認するには、次の手順を実行します。
root@myserver:~> mysqladmin processlist
これに相当する MySQL クエリは次のようになります。
root@myserver:~> mysql
mysql> SHOW FULL PROCESSLIST\G
また、こちらもご覧くださいスレッド情報の調査出力の意味を確認します。特に注目すべき点は次のとおりです。
指示そして州スレッドが何をしているかを示します。
ほとんどの状態は非常に高速な操作に対応します。スレッドが特定の状態に何秒も留まる場合は、調査が必要な問題がある可能性があります。
主なポイントは、mysql プロセス リストを確認し、環境の性質を考慮して、長時間実行されるプロセスやプロセス数が多いなど、疑わしい点がないか確認することです。
答え2
このコマンドを使用して実行中のmysqlアプリを一覧表示します。
ps -aux | grep 'mysql'
次に、必要なmysqlをデフォルトポート「3306」で起動します。