Ai giúp mình sửa lỗi database này với . Mình dùng nginx + php-fpm
Database error in vBulletin :
mysqli_real_connect(): (08004/1040): Too many connections
/home/admin/domains/domain.com/public_html/includes/class_core.php on line 1317
MySQL Error :
Error Number :
Request Date : Wednesday, May 29th 2013 @ 04:13:04 AM
Error Date : Wednesday, May 29th 2013 @ 04:13:04 AM
Script : http://domain.com/external.php?type=feed&forumids=127
Referrer :
IP Address : xxx.28.36.82
Username :
Classname : vB_Database_MySQLi
MySQL Version :
mysqli_real_connect(): (08004/1040): Too many connections
Nghĩa là hiện đang có quá nhiều kết nối đến DB. Nếu bạn cũng không vào được thì chỉ còn cách đợi thôi.
Khi nào login vào DB được thì bạn chạy lệnh sau và gửi kết quả lên:
Code:
mysql> show global variables like '%timeout';
mysql> show global variables like '%connections';
Nhân tiện cũng nên gửi `my.cnf` lên. Server bạn có bao nhiêu RAM, dùng InnoDB hay MyISAM là chủ yếu?
mysql> show global variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+----------------------------+-------+
10 rows in set (0.00 sec)
mysql> show global variables like '%connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| max_connections | 100 |
| max_user_connections | 0 |
+----------------------+-------+
2 rows in set (0.00 sec)
mysqli_real_connect(): (08004/1040): Too many connections
Nghĩa là hiện đang có quá nhiều kết nối đến DB. Nếu bạn cũng không vào được thì chỉ còn cách đợi thôi.
Khi nào login vào DB được thì bạn chạy lệnh sau và gửi kết quả lên:
Code:
mysql> show global variables like '%timeout';
mysql> show global variables like '%connections';
Nhân tiện cũng nên gửi `my.cnf` lên. Server bạn có bao nhiêu RAM, dùng InnoDB hay MyISAM là chủ yếu?
Đây là show global variables like '%timeout';
Code:
mysql> show global variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 60 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 120 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 60 |
+----------------------------+-------+
10 rows in set (0.00 sec)
Code:
mysql> show global variables like '%connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| max_connections | 1024 |
| max_user_connections | 0 |
+----------------------+-------+
2 rows in set (0.00 sec)
PS: không phải cứ tăng max_connections lên vô tội vạ là sẽ giải quyết được vấn đề này đâu.
KQ khi chạy tại thời điểm cao
Code:
[root@server ~]# mysql -e "show full processlist\G" | awk -F ": " '/User/ { print $2 }' | sort | uniq -c | sort -rn
145 admin_db
1 Lan_nana A new account by the name of [URL=http://www.domain.com/member.php?u=196398]Hân_nana[/URL] has been registered. The new account has been moved to the Prevention Usergroup.\r\n\r\nOther recognized logins for this user are
1 da_admin
Cho mình hỏi luôn 1 chút , cứ 1 tiếng mình lại nhận đc 1 mail cảnh báo này .
Code:
A new message or response with subject:
The service 'dovecot' on server server.domain.com is currently down
has arrived for you to view.
Follow this link to view it:
http://domain.com:2222/CMD_TICKET?action=view&number=000014857&type=ticket
======================================================
Automatically generated email produced by DirectAdmin 1.38.3
Mình dùng php-fpm . khi connections lên đến 260 là lỗi 502 bad gateway rồi
Kiểm tra status của php-fpm
Code:
pool: domain
process manager: static
accepted conn: 6139
listen queue len: 0
max listen queue len: -1
idle processes: 1
active processes: 255
total processes: 256
max children reached: 0
- Cho mình xem full processlist luôn nhé.
- Cài mysqltuner, chạy và gửi kết quả lên.
- Kiểm tra lại phía ứng dụng xem có chỗ nào dùng persistent connection không.
- Cho mình xem full processlist luôn nhé.
- Cài mysqltuner, chạy và gửi kết quả lên.
- Kiểm tra lại phía ứng dụng xem có chỗ nào dùng persistent connection không.
Mình cần full processlist lúc gần chạm ngưỡng ấy chứ 10 cái mà lại toàn Sleep thế kia thì có tác dụng gì.
`my.cnf` nhìn tạm ổn ngoài việc nên tăng `innodb_buffer_pool_size` lên nữa. Bạn có 32G RAM, trước mắt cứ tăng lên... gấp đôi con số hiện tại (16G), sau này có thể tăng lên 24G cũng được (nếu server này không chạy dịch vụ gì khác ngoài MySQL).
Mình cần full processlist lúc gần chạm ngưỡng ấy chứ 10 cái mà lại toàn Sleep thế kia thì có tác dụng gì.
`my.cnf` nhìn tạm ổn ngoài việc nên tăng `innodb_buffer_pool_size` lên nữa. Bạn có 32G RAM, trước mắt cứ tăng lên... gấp đôi con số hiện tại (16G), sau này có thể tăng lên 24G cũng được (nếu server này không chạy dịch vụ gì khác ngoài MySQL).
Mình dùng nginx + php-fpm . Do php-fpm chiếm nhiều ram quá (~ 25G) nên mình giảm innodb_buffer_pool_size xuống 8G