2009-02-20 22 views
5

Tôi có một ứng dụng trong Grails. Tôi sử dụng Hibernate để truy cập cơ sở dữ liệu (theo các quy tắc grails tiêu chuẩn) Tôi sử dụng MySql và trang web hoạt động và ổn định (trong 6 tháng).Cơ sở dữ liệu Grails/Hibernate bị treo dưới tải: Không thể kết nối (ngay cả khi gộp chung)

Tôi đang thực hiện thử nghiệm tải và gần đây đã phát hiện ra rằng cơ sở dữ liệu từ chối kết nối khi đang tải.

Sử dụng MySQL Server 5, tôi có thể thấy đề kết nối lơ lửng xung quanh 20. Tư tưởng tôi nhảy từ 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) 

cấu hình cơ sở dữ liệu của tôi là tiêu chuẩn. (Máy chủ MySql được cài đặt cục bộ, không được hiển thị)

dataSource { 
    pooled = false 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "username" 
    password = "secret" 

    maxIdle = 15 
    maxActive = 100   
} 

Tôi có nên điều tra C3P0 không? Hay tôi nên tập hợp maxActive lên 1000 và hy vọng điều tốt nhất?

Trả lời

4

Lỗi nào là Grails báo cáo khi không thể nhận được kết nối cơ sở dữ liệu? Hết giờ? Từ chối?

Khi bạn chạy thử nghiệm, hộp được tải như thế nào? Phần trăm CPU, mức sử dụng bộ nhớ, v.v.

Có thể cơ sở dữ liệu quá tải đến nỗi Grails đang hết thời gian để nhận kết nối. Nếu bạn muốn xử lý tải, bạn sẽ muốn đi đến kết nối DB gộp. Nếu không có pooling, Grails sẽ mở và đóng một kết nối DB với mỗi yêu cầu.

+0

Có vẻ như giới hạn kết nối Pooling và MySql là câu trả lời. – user57660

0

Kiểm tra cấu hình mysql của bạn (/etc/mysql.conf hoặc tương đương cục bộ), đặc biệt là các kết nối tối đa và tối đa conn cho mỗi cài đặt người dùng; điều này nghe như thể nó có thể đến từ mysql chứ không phải grails.

Các vấn đề liên quan