Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

'max_user_connections' được đặt thành 200 - vẫn gặp lỗi

Đối với vấn đề "kết nối tối đa" của bạn, nó có thể là một trong ba điều sau:

1) Máy chủ đã có quá nhiều kết nối đang mở. Máy chủ MySQL chỉ có thể xử lý một số lượng kết nối mở cụ thể trước khi từ chối cho phép thêm nữa và giới hạn này được chia sẻ giữa tất cả người dùng của máy chủ. Nó thường được đặt khá cao, mặc dù ai đó có thể dễ dàng DoS hiệu quả một máy chủ MySQL bằng cách tạo nhiều kết nối (nhưng xem bên dưới)

2) Tài khoản người dùng của bạn có số lượng kết nối giới hạn được phép mỗi giờ - bất kỳ kết nối nào khác trong giờ đó sẽ bị từ chối. Điều này được đặt trên cơ sở mỗi người dùng.

3) Tài khoản người dùng của bạn có một số lượng giới hạn các kết nối mở được phép - bất kỳ kết nối nào khác sẽ bị từ chối. Điều này được đặt trên cơ sở mỗi người dùng.

Điều quan trọng là phải đọc thông báo lỗi mà bạn nhận được khi cố gắng kết nối, vì trong hầu hết các trường hợp, điều này sẽ xác định chính xác lý do thất bại.

Nếu tài khoản của bạn có giới hạn số lượng kết nối tối đa (tình huống số 3), lỗi sẽ là:Mã:

ERROR 1226 (42000): User 'mysqldba' has exceeded the 'max_user_connections' resource (current value: 1) 

Trong đó 'mysqldba' sẽ là tên người dùng của bạn và 'giá trị hiện tại' là số lượng kết nối mở tối đa được phép từ người dùng này.

Nếu tài khoản của bạn có giới hạn số lượng kết nối tối đa mỗi giờ (tình huống số 2), lỗi sẽ là:Mã:

ERROR 1226 (42000): User 'mysqldba' has exceeded the 'max_connections_per_hour' resource (current value: 1) 

Trong đó, một lần nữa, 'mysqldba' sẽ là tên người dùng của bạn và 'giá trị hiện tại' là số lượng kết nối tối đa mỗi giờ được phép cho người dùng này.

Nếu bạn nhận được thông báo lỗi (mã 1040) cho biết rằng toàn bộ máy chủ MySQL đã hết các khe kết nối - đây là tình huống DoS mà tôi đã đề cập ở trên.

Bạn có thể làm gì về nó? Theo những gì bạn đã nói, bạn không có đặc quyền superuser trên máy chủ này, vì vậy không có gì, ngoài việc phàn nàn với SysAdmin chịu trách nhiệm về máy chủ đó. Họ có thể tăng số lượng kết nối tối đa cho phép, điều này có thể giải quyết vấn đề trong thời gian ngắn, nhưng nếu ai đó khác sử dụng máy chủ đang tạo ra một số lượng kết nối cơ sở dữ liệu ngu ngốc, các khe cắm sẽ lại lấp đầy. Những gì họ có thể nên làm là cũng thực thi giới hạn kết nối mở tối đa cho mỗi người dùng - điều này sẽ ngăn những người dùng nặng làm tắc nghẽn máy chủ. Trong tình huống máy chủ dùng chung như của bạn, điều này có ý nghĩa nhất - 'người dùng thành thạo' sẽ / nên có máy chủ riêng của họ, hoặc có thể / nên trả tiền để tăng kết nối mở tối đa của họ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ cập nhật MySQL cột nếu giá trị không trống ở đâu

  2. MySQL InnoDB không giải phóng dung lượng đĩa sau khi xóa các hàng dữ liệu khỏi bảng

  3. Cách tối ưu hóa hiệu suất COUNT (*) trên InnoDB bằng cách sử dụng chỉ mục

  4. Làm thế nào để giải quyết vấn đề mã hóa ký tự MySQL?

  5. Cách sao lưu cơ sở dữ liệu MySQL bằng cron Jobs