2009-02-20 55 views
5

我在Grails中有一個應用程序。 我使用Hibernate來訪問數據庫(按照標準grails規則) 我使用MySql並且該站點工作並且穩定(6個月)。Grails/Hibernate數據庫在加載時崩潰:無法連接(即使彙集)

我在做負載測試,最近發現數據庫在負載下會拒絕連接。

使用MySQL服務器5,我可以看到螺紋連接徘徊在20想我跳之間11 -

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

Grails在無法獲得數據庫連接時報告有什麼錯誤?時間到?拒絕了?

當你運行你的測試時,盒子是如何加載的? %的CPU,內存使用情況等

這是可能的數據庫僅僅是超載,結果Grails是超時越來越連接。如果你想處理負載,你會想要轉到池式數據庫連接。如果沒有合併,Grails將打開並關閉每個請求的數據庫連接。

+0

似乎Pooling和MySql連接限制是答案。 – user57660 2009-08-20 19:26:46

0

檢查你的MySQL配置(/etc/mysql.conf或它的等值當地貨幣),特別是最大連接數和每個用戶設置最大康恩;這聽起來好像它可能來自mysql而不是grails。