mysql tự động điều chỉnh giá trị kết nối tối đa


11

Tôi đã thiết lập các kết nối tối đa đến khoảng 2000 trong tệp my.cnf.

max_connections=2048

Tôi đã nâng cấp lên 5.5.20 và bây giờ tôi thấy dòng sau trong nhật ký lỗi.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Tại sao mysql thay đổi giá trị kết nối tối đa thành 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

Các tệp mở mềm và cứng bị hạn chế bởi HĐH là 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

Số lượng kết nối tối đa thực sự được sử dụng:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
Hãy thử đặt các tệp mở ulimit cao hơn, như 4096.ulimit -n 4096

Hành vi đã thay đổi? Tôi đã có phiên bản 5.0.77 và tôi không nhận thấy vấn đề này. Chỉ đến khi tôi nâng cấp lên 5.5.20 tôi mới thay đổi giá trị!
shantanuo

1
Chỉ cần hỏi rõ ràng. Bạn đã xác nhận rằng bản nâng cấp không thay đổi my.cnf của bạn chưa? Ngoài ra, hệ điều hành gì? Điều này đã được cài đặt bởi một người quản lý gói như yum? Nếu vậy, gói nào?
Derek Downey

Câu trả lời:


5

Nó có vẻ ổn với tôi. Bạn không thể có max_connections lớn hơn thế, vì bạn open_files_limit quá thấp. Đối với mỗi kết nối, MySQL sẽ mở một số tệp. Hãy nhìn vào đây .

Vì vậy, bạn sẽ phải tăng giới hạn tệp đang mở trên HĐH và sau đó, bạn có thể đặt giá trị max_connections cao hơn.


5

Đây có vẻ là vấn đề tương tự mà tôi đã trả lời trong stackoverflow ở đây , mặc dù tôi đang sử dụng CentOS 7 & MySQL 5.6.26

Bạn cần tăng giới hạn các tệp đang mở của mình cho cả người dùng mysql (trong giới hạn.conf) và cho dịch vụ mysql (trong tệp mysql.service)

nối hai dòng này vào /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

nối dòng này vào /usr/lib/systemd/system/mysqld.service (trong phần [dịch vụ])

LimitNOFILE=65535

sau đó cuối cùng khởi động lại và kiểm tra xem các thông báo lỗi đó đã biến mất khỏi nhật ký lỗi mysql của bạn.



@Nav - Đúng, bạn không thể sử dụng số lượng kết nối tối đa được định cấu hình nếu HĐH của bạn không cho phép số lượng xử lý tệp thích hợp được sử dụng bởi mysqld
MNB

Ngoài ra, Ubuntu 15.04+ cần một cách tiếp cận khác: stackoverflow.com/questions/23977095/ trên
Nav

0

Điều này dường như là một số lỗi trong mysqld mới. Tôi đã từng gặp vấn đề tương tự. Đặt max_connections thành 700 hoạt động, nhưng nếu tôi đặt nó thành 900, nó được đặt lại thành 214 trong khi khởi động. Nếu đây là một thay đổi có chủ đích, thì nó sẽ hạ xuống 700 hoặc tương tự, giá trị 214 không có ý nghĩa.
Dù sao, tăng giới hạn mô tả với ulimit -n khắc phục vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.