Grailsの/負荷の下でHibernateのデータベースクラッシュ:接続できません(場合でも、プーリング)
-
05-09-2019 - |
質問
私は、Grailsのでアプリケーションを持っています。 私は(標準Grailsのルールあたり)データベースにアクセスするためにHibernateを使用 私は、MySQLを使用して、サイトが動作し、(6ヶ月)安定してます。
私は負荷テストをやって、そして最近では負荷時のデータベースは接続を拒否することを発見しています。
MySQLサーバ5を使用して、私は私が間をジャンプスレッドが周りのホバリング接続20思想を見ることができる11 - 30
mysql> show status like '%con%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| Aborted_connects | 72 |
| Connections | 65539 |
| Max_used_connections | 101 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 1 |
+--------------------------+-------+
7 rows in set (0.00 sec)
私のデータベース構成が標準です。 (MySQLサーバがローカルにインストールされ、図示しない)
dataSource {
pooled = false
driverClassName = "com.mysql.jdbc.Driver"
username = "username"
password = "secret"
maxIdle = 15
maxActive = 100
}
私は、C3P0を調査するべきですか?それとも私が1000年に私のMAXACTIVEをアップratched、最高のを期待すべきか?
解決
それがデータベース接続を取得できない場合、
どのようなエラーGrailsは報告していますか?タイムアウト?拒否した?
テストを実行すると、、ボックスがどのようにロードされたのですか?パーセントCPU、メモリ使用量、など。
これは、データベースがちょうどそうGrailsの取得の接続がタイムアウトしていることを過負荷であることが可能です。あなたが負荷を処理したい場合は、プールされたDB接続に行くことになるでしょう。プーリングなしで、Grailsは各リクエストとDBの接続を開閉します。
他のヒント
あなたのMySQLの設定(/etc/mysql.confまたはそれがローカル同等です)、ユーザー設定ごとに、特に最大接続数と最大CONNを確認してください。それはMySQLとGrailsのではないから来るかもしれませんが、この音が鳴ります。
所属していません StackOverflow