Thay đổi giới hạn tệp mở trong mysql 5.5


9

Tôi gặp sự cố với mysql 5.5 chạy trên Ubuntu 12.04 với tham số giới hạn tệp mở.

Gần đây tôi nhận thấy một số vấn đề do giới hạn 1024 và thực tế giới hạn hệ thống chính được đặt thành 1024, vì vậy tôi đã sửa đổi /etc/security/limits.conf bằng cách sau:

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

Sau đó tôi kiểm tra giá trị ulimit cho root và thậm chí cho người dùng mysql, cả hai đều trả về giá trị mới: 32000, vì vậy tôi cho rằng thay đổi đã được thực hiện.

Tôi cũng đã thay đổi giá trị tại tệp my.cnf, đặt giới hạn tệp mở thành 24000, như sau:

open-files-limit    = 24000

Bây giờ đến phần lẻ, khi tôi khởi động lại dịch vụ mysql và kiểm tra biến open_files_limit, nó trả về rằng nó vẫn được đặt thành 1024, vì vậy tôi gặp vấn đề tương tự mà trước đây (rõ ràng), tôi đã thử sử dụng giới hạn tệp mở thay vì open_files_limit trong tệp cấu hình my.cnf, kết quả tương tự, NHƯNG nếu tôi ghi đè lệnh dịch vụ để khởi động dịch vụ và chỉ bắt đầu sử dụng mysqld (không có tham số bổ sung), dịch vụ sẽ khởi động và khi tôi kiểm tra tham số thì nó trả về 32000 ... Tôi không biết nó lấy giá trị đó từ đâu, vì nó không được đặt tại my.cnf và ít nhất nó không được cung cấp thông qua dòng lệnh, ít nhất là cho bản thân tôi.

Bất kỳ ý tưởng nào về lý do tại sao nó không hoạt động thay đổi và làm thế nào để giải quyết nó theo cách thông thường (khởi chạy nó thông qua dịch vụ ...)?

Câu trả lời:


9

Cuối cùng tôi đã tìm thấy vấn đề, có vẻ như mới bắt đầu không sử dụng các tham số được xác định tại /etc/security/limits.conf, vì vậy khi tôi khởi chạy mysql thông qua lệnh dịch vụ (và do đó, dưới sự khởi đầu), nó sẽ ghi đè các giới hạn và cách sử dụng đã xác định 1024 mặc định.

Giải pháp là sửa đổi tệp mysql.conf xác định dịch vụ khởi động, nó được đặt tại /etc/init/mysql.conf và thêm các dòng sau trước khối bắt đầu trước:

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

Giá trị đầu tiên xác định giới hạn mềm, giới hạn khác, giới hạn cứng, sau khi thêm các dòng đó, dịch vụ sẽ hoạt động như mong đợi khi áp dụng các giá trị được xác định tại tệp my.conf.

Giới hạn này nên áp dụng cho mọi dịch vụ mới bắt đầu được xác định tại / etc / init, vì vậy nếu bất kỳ dịch vụ nào có cùng vấn đề với giới hạn tệp đang mở, giải pháp này cũng sẽ hoạt động.


1
Làm việc tốt đấy!
pkhamre

Điều này đã lừa ... người đàn ông đó là một nỗi đau
Chad Scira
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.