Làm cách nào để tăng giới hạn tệp mở cho tất cả các quy trình?


32

Tôi có thể sử dụng ulimit nhưng tôi nghĩ rằng điều đó chỉ ảnh hưởng đến phiên shell của tôi. Tôi muốn giới hạn tăng cho tất cả các quy trình. Đây là trên Red Hat.


Nhân tiện, phiên bản nào của Red Hat? BẠC5?
mattdm

Câu trả lời:


26

Câu trả lời của Justin cho bạn biết làm thế nào để nâng cao số lượng tập tin mở sẵn tổng cho toàn bộ hệ thống. Nhưng tôi nghĩ bạn đang hỏi làm thế nào để tăng giới hạn cho mỗi người dùng trên toàn cầu. Câu trả lời cho điều đó là thêm các dòng sau vào /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Trong đó * có nghĩa là tất cả người dùng.)

Có một số tài liệu tóm tắt trong tập tin đó và trong man limits.conf. Điều này được thực hiện thông qua pam_limits.somô-đun được gọi cho các dịch vụ khác nhau được cấu hình trong /etc/pam.d/.

Và, tôi phải thừa nhận, tôi không biết 1024 mặc định đó đến từ đâu. Và tin tôi đi, tôi đã nhìn. Tôi thậm chí đã thử mà không có mô-đun pam_limits được cấu hình, và nó vẫn ở đó. Nó phải được mã hóa cứng ở một nơi nào đó, nhưng tôi không chắc chắn chính xác ở đâu.


2
Hmm ... tôi đặt điều này đúng. Thoát khỏi SSH và quay lại và giới hạn mềm của tôi vẫn được đặt thành 1024. Có thiếu điều gì để tôi "kích hoạt" không? Cảm ơn.
Joshua Pinter

@mattdm - Điều đáng nói là trên một số bản phân phối Linux, tệp được đề cập sẽ nằm dưới: /etc/limits.conf
Guy Avraham

13

Theo bài viết Linux Tăng số lượng tối đa của tệp mở / mô tả tệp (FD) , bạn có thể tăng giới hạn tệp mở bằng cách thêm một mục vào /etc/sysctl.conf.

Nối một lệnh cấu hình như sau:

fs.file-max = 100000

Sau đó lưu và đóng tệp. Người dùng cần đăng xuất và đăng nhập lại để các thay đổi có hiệu lực hoặc họ chỉ cần gõ lệnh sau:

# sysctl -p

Bạn cũng có thể xác minh cài đặt của mình bằng lệnh:

# cat /proc/sys/fs/file-max

Tôi nghi ngờ về việc cần phải đăng xuất và đăng nhập lại cho cài đặt cụ thể này, toàn hệ thống. (Điều đó diễn ra khá nhiều thứ trong sysctl ...)
mattdm

13

Tăng số lượng tối đa của tệp mở ulimit trong Linux

1.Bước: mở sysctl.conf và thêm dòng này fs.file-max = 65536

$ vi /etc/sysctl.conf

thêm dòng mới và

fs.file-max = 65536

lưu và thoát.

2.Bước:

$ vi /etc/security/limits.conf

và thêm vào bên dưới đề cập

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

lưu và thoát kiểm tra tập tin mở tối đa ulimit

# ulimit -a

....
open files                      (-n) 65535

6

Nhưng nếu bạn đang cố gắng tăng số lượng tệp mở tối đa của dịch vụ như MariaDB hoặc thứ gì khác (sử dụng systemd ), bạn phải thực hiện trực tiếp trong tệp .service

/lib/systemd/system/<servicename>.service

Sẽ là một cái gì đó như thế này:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

Câu trả lời hoàn toàn nằm ở đây: Tăng nproc cho các quy trình được khởi chạy bởi systemd trên CentOS 7


Điều này cần phải được nâng cao, vì tính phổ biến systemdcùng với những thay đổi đang diễn ra của nó đang gia tăng trên hệ sinh thái Linux. Mặc dù, tôi sẽ đề nghị chỉnh sửa câu trả lời cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/và thực hiện các thay đổi cho tệp đó, thay vì tệp dịch vụ toàn hệ thống do gói cung cấp.
ILMostro_7

3

BỀN VỮNG:

Bạn có thể tìm thấy cấu hình ở nơi khác nhau: /etc/security/limits.d/*.conf

Tôi đã phải sửa đổi nó. Nó đã không làm việc mà không có nó. Định dạng giống như cholimits.conf


Tôi cũng đã phải cập nhật tệp này để cài đặt hoàn toàn trên các máy chủ CentOS của chúng tôi.
John Eisbrener
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.