Khi chạy ứng dụng của tôi đôi khi tôi gặp một lỗi về too many files open
.
Chạy ulimit -a
các báo cáo rằng giới hạn là 1024. Làm cách nào để tăng giới hạn trên 1024?
Chỉnh sửa
ulimit -n 2048
kết quả trong một lỗi cho phép.
Khi chạy ứng dụng của tôi đôi khi tôi gặp một lỗi về too many files open
.
Chạy ulimit -a
các báo cáo rằng giới hạn là 1024. Làm cách nào để tăng giới hạn trên 1024?
Chỉnh sửa
ulimit -n 2048
kết quả trong một lỗi cho phép.
Câu trả lời:
Bạn luôn có thể thử làm một ulimit -n 2048
. Điều này sẽ chỉ đặt lại giới hạn cho trình bao hiện tại của bạn và số bạn chỉ định không được vượt quá giới hạn cứng
Mỗi hệ điều hành có một thiết lập giới hạn cứng khác nhau trong một tệp cấu hình. Chẳng hạn, giới hạn tệp mở cứng trên Solaris có thể được đặt khi khởi động từ / etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
Trên OS X, dữ liệu tương tự này phải được đặt trong /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Trong Linux, các cài đặt này thường ở /etc/security/limits.conf.
Có hai loại giới hạn:
Giới hạn mềm có thể được đặt bởi bất kỳ người dùng nào trong khi giới hạn cứng chỉ có thể thay đổi bằng root. Giới hạn là một tài sản của một quá trình. Chúng được kế thừa khi một tiến trình con được tạo để các giới hạn toàn hệ thống phải được đặt trong quá trình khởi tạo hệ thống trong các tập lệnh init và giới hạn người dùng nên được đặt trong quá trình đăng nhập của người dùng, ví dụ như bằng cách sử dụng pam_limits.
Thường có các giá trị mặc định được đặt khi máy khởi động. Vì vậy, mặc dù bạn có thể đặt lại ulimit của mình trong một vỏ riêng lẻ, bạn có thể thấy rằng nó đặt lại về giá trị trước đó khi khởi động lại. Bạn có thể muốn grep script khởi động của mình cho các lệnh ulimit tồn tại nếu bạn muốn thay đổi mặc định.
ulimit
. Bạn phải chỉ định những gì bạn đang sử dụng (ví dụ WSL, Cygwin).
Nếu bạn đang sử dụng Linux và bạn gặp phải lỗi cấp phép, bạn sẽ cần tăng giới hạn cho phép trong /etc/limits.conf
hoặc /etc/security/limits.conf
tệp (nơi tệp được đặt tùy thuộc vào bản phân phối Linux cụ thể của bạn).
Ví dụ: để cho phép bất kỳ ai trên máy tăng số lượng tệp đang mở lên tới 10000, hãy thêm dòng vào limits.conf
tệp.
* hard nofile 10000
Sau đó đăng xuất và đăng nhập lại vào hệ thống của bạn và bạn sẽ có thể làm:
ulimit -n 10000
không có lỗi cho phép.
root
người dùng. Bạn phải xác định root hard nofile 10000
nếu bạn muốn điều chỉnh root
giới hạn.
ulimit
và cuối cùng phát hiện ra tôi đã đăng nhập bằng root. Đó là lý do tại sao tôi tiếp tục nhìn thấy 1024 in ulimit -a
. Tôi đã thay đổi wildcare, và thêm một *
bên trong limits.conf
. Bây giờ tất cả đều tốt, (tôi đang sử dụng các phím ssh đừng lo lắng: P) - Cảm ơn bạn !!!
/etc/security/limits.d/
.
1) Thêm dòng sau vào /etc/security/limits.conf
webuser hard nofile 64000
sau đó đăng nhập với tư cách là người dùng web
su - webuser
2) Chỉnh sửa hai tệp sau cho trình duyệt web
chắp thêm tập tin .bashrc và .bash_profile bằng cách chạy
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Đăng xuất, sau đó đăng nhập lại và xác minh rằng các thay đổi đã được thực hiện chính xác:
$ ulimit -a | grep open
open files (-n) 64000
Đó là nó và họ bùng nổ, bùng nổ bùng nổ.
Nếu một số dịch vụ của bạn gặp khó khăn, đôi khi việc đưa các lệnh thích hợp vào tập lệnh init của dịch vụ sẽ dễ dàng hơn. Ví dụ: khi Apache đang báo cáo
[alert] (11) Tài nguyên tạm thời không khả dụng: apr_thread_create: không thể tạo luồng công nhân
Cố gắng đưa ulimit -s unlimited
vào /etc/init.d/httpd
. Điều này không yêu cầu khởi động lại máy chủ.