5

我在 Grails 中有一个应用程序。我使用 Hibernate 访问数据库(根据标准 grails 规则)我使用 MySql 并且该站点工作并且稳定(6 个月)。

我正在做负载测试,最近发现数据库在负载下拒绝连接。

使用 MySQL Server 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 吗?或者我应该将我的 maxActive 提高到 1000 并希望获得最好的结果?

4

2 回答 2

4

当 Grails 无法获得数据库连接时,它会报告什么错误?超时?拒绝?

当你运行你的测试时,盒子的负载是多少?CPU 百分比、内存使用率等。

有可能是数据库过载了,以至于 Grails 正在超时获取连接。如果要处理负载,则需要使用池化数据库连接。如果没有池化,Grails 将在每个请求中打开和关闭一个数据库连接。

于 2009-02-21T14:10:49.113 回答
0

检查您的 mysql 配置(/etc/mysql.conf 或其本地等效项),特别是每个用户设置的最大连接数和最大连接数;这听起来好像它可能来自mysql而不是grails。

于 2009-02-28T18:16:27.093 回答