Mysql Grails/Hibernate数据库在负载下崩溃:无法连接(即使在池中)
我在Grails中有一个应用程序。 我使用Hibernate访问数据库(根据标准grails规则) 我使用MySql,网站运行良好,稳定(6个月) 我正在进行负载测试,最近发现数据库在负载下拒绝连接 使用MySQL服务器5,我可以看到连接的线程徘徊在20个左右。我想我在11-30之间跳Mysql Grails/Hibernate数据库在负载下崩溃:无法连接(即使在池中),mysql,performance,hibernate,grails,scale,Mysql,Performance,Hibernate,Grails,Scale,我在Grails中有一个应用程序。 我使用Hibernate访问数据库(根据标准grails规则) 我使用MySql,网站运行良好,稳定(6个月) 我正在进行负载测试,最近发现数据库在负载下拒绝连接 使用MySQL服务器5,我可以看到连接的线程徘徊在20个左右。我想我在11-30之间跳 mysql> show status like '%con%'; +--------------------------+-------+ | Variable_name | Valu
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服务器安装在本地,未显示)
我应该调查C3P0吗?或者我应该将maxActive提升到1000并希望达到最佳状态吗?当Grails无法获得数据库连接时,它会报告什么错误?暂停?拒绝 当您运行测试时,盒子的加载程度如何?CPU、内存使用率等百分比
有可能是数据库过载,导致Grails在获取连接时超时。如果您想要处理负载,您将需要转到池数据库连接。在没有池的情况下,Grails将在每个请求中打开和关闭一个DB连接。检查您的mysql配置(/etc/mysql.conf或其本地等效配置),特别是最大连接数和每个用户的最大连接数设置;这听起来好像是来自mysql,而不是grails。看来池和mysql连接限制才是答案。
dataSource {
pooled = false
driverClassName = "com.mysql.jdbc.Driver"
username = "username"
password = "secret"
maxIdle = 15
maxActive = 100
}