因为fs.file-max
,我认为在几乎所有情况下,您都可以不理会它。如果您正在运行某种非常繁忙的服务器并且实际上用完了文件句柄,那么您可以增加它 - 但是您需要增加它的值将取决于您正在运行的服务器类型和负载就可以了。一般来说,您只需要增加它,直到您不再用完文件句柄,或者直到您意识到您需要更多内存或更多系统来处理负载。通过将 file-max 降低到默认值以下来“调整”事物的收益是如此之小,以至于不值得考虑——我的手机在 fs-max 值为 83588 时工作正常。
顺便说一句,现代内核已经使用经验法则根据系统中的内存量设置文件最大值;从fs/file_table.c
2.6 内核开始:
/*
* One file with associated inode and dcache is very roughly 1K.
* Per default don't use more than 10% of our memory for files.
*/
n = (mempages * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);
并且files_stat.max_files
是fs.file-max
; 对于每 1MB 的内存,这最终约为 100。
ulimits 当然是关于限制用户或进程分配的资源。如果您有多个用户或其他类似情况,那么您可以决定如何分配系统资源并限制内存使用、进程数等。关于您可以设置的限制的详细信息的权威指南是setrlimit man页面(当然还有内核源代码)。