OpenBSD có giới hạn số lượng bộ mô tả tệp không?


7

Số lượng mô tả tệp tối đa mà một quá trình có thể nhận được trên OpenBSD là gì?

Ví dụ: có một openfilesgiới hạn trong login.conf (5) trong OpenBSD. Nếu tôi muốn có càng nhiều mô tả tệp càng tốt, nhưng vẫn không để quá trình chạy trốn làm hỏng hệ thống, thì giá trị hợp lý sẽ được đặt là gì?

Ví dụ, nếu tôi chỉ định, liệu, 20000hạt nhân có khả năng cung cấp cho ứng dụng của tôi tất cả 20000 FD này không? Điều gì xảy ra nếu tôi đang chạy nhiều phiên bản của một ứng dụng nhất định (ví dụ: nhiều quy trình worker)?

Câu trả lời:


5

Hãy xem mã nguồn, để có được giá trị mặc định của các tệp mở tối đa:

Mã tài liệu tốt

extern int maxfiles;                 /* kernel limit on number of open files */

maxfiles, trên param.c định nghĩa công thức cho maxfiles

int maxfiles = 5 * (NPROCESS + MAXUSERS) + 80;

OK, chúng tôi đã tìm thấy nó.

NPROCESS =

#define NPROCESS (30 + 16 * MAXUSERS)

MAXUSERS = - Hãy lấy kiến ​​trúc amd64 làm ví dụ:

machine         amd64
include         "../../../conf/GENERIC"
maxusers        80                      # estimated number of users

Cho phép tổng hợp tất cả mọi thứ:

maxfiles = 5 * ((30 + 16 * 80) + 80) + 80
maxfiles = 5 * ((30 + 1280) + 80) + 80
maxfiles = 5 * (1390) + 80
maxfiles = 6950 + 80
maxfiles = 7030

Để tăng tổng số tệp mở tối đa, trước hết bạn sẽ cần tăng giới hạn nhân tệp tối đa mở sysctl kern.maxfiles=20000và tăng số lượng tệp mà một quá trình / người dùng có thể mở, chỉnh sửa login.conf. Đây cài đặt daemon Tor có cả hai ví dụ cho bạn.


4

Có nhiều khả năng các giá trị mặc định đã được đặt thành giá trị hợp lý sẽ hỗ trợ hầu hết nếu không phải tất cả các trường hợp sử dụng, chúng sẽ dựa trên các giá trị cần thiết cho các hệ thống đang chạy được sử dụng bởi các nhà phát triển OpenBSD và quản trị viên trong nhiều năm phát triển và sử dụng. Tôi tin rằng bất kỳ giới hạn nào cũng sẽ được thực thi theo chương trình và chỉ thực sự bị giới hạn bởi các nguồn lực sẵn có.

Trên FreeBSD, chúng tôi có các giá trị sysctl cho kern.maxfileskern.maxfilesperproc- Tôi hy vọng OpenBSD có cùng giá trị. Các giới hạn mặc định hiện tại cao hơn nhiều so với chỉ vài năm trước đây vì hầu hết các hệ thống hiện có đủ tài nguyên mà chúng tôi không có nhu cầu giới hạn chúng.

Trên máy tính để bàn của tôi, tôi có maxfilesperproc ở mức mặc định 18000 - Tôi đang chạy xfce4 với chrome, liferea, máy xay sinh tố, gimp, trình soạn thảo văn bản và thiết bị đầu cuối đang chạy - ps hiển thị 215 quy trình và kern.openfiles đang ở 2683

Nếu bạn gặp lỗi từ quá nhiều tệp đang mở thì hãy tăng chúng nhưng tôi nghi ngờ bạn sẽ cần và tôi nghi ngờ bạn sẽ làm quá tải hệ thống của mình bằng cách tăng chúng quá cao.


Thật không may trong openbsd openfiles-maxdưới daemon:được đặt thành 1024, không đủ từ xa cho rơle tor. Điều này cần phải được tăng lên một cái gì đó cao hơn, chẳng hạn như 13500, như được chỉ định bởi hướng dẫn thiết lập rơle tor.
hygri
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.