Linux kernel 需要";计算;根据我自己的服务器需要优化ulimit和fs.file-max值

Linux kernel 需要";计算;根据我自己的服务器需要优化ulimit和fs.file-max值,linux-kernel,ulimit,sysctl,Linux Kernel,Ulimit,Sysctl,需要根据我自己的服务器需要“计算”最佳ulimit和fs.file-max值。 请不要与“如何在各种Linux发行版中设置这些限制”的问题相冲突 我想问: 有什么好的指南可以详细解释ulimit使用的参数吗?(>2.6系列内核) 有什么好的指南可以显示fs.file-max使用指标吗 事实上,我可以在网上找到一些老参考资料: “对于我们拥有的每4M内存,有256个这样合理的值:即对于具有128MB内存的机器,将其设置为8192-128/4=32*256=8192” 任何最新的参考是感激的 对于f

需要根据我自己的服务器需要“计算”最佳ulimit和fs.file-max值。 请不要与“如何在各种Linux发行版中设置这些限制”的问题相冲突

我想问:

  • 有什么好的指南可以详细解释ulimit使用的参数吗?(>2.6系列内核)
  • 有什么好的指南可以显示fs.file-max使用指标吗
  • 事实上,我可以在网上找到一些老参考资料: “对于我们拥有的每4M内存,有256个这样合理的值:即对于具有128MB内存的机器,将其设置为8192-128/4=32*256=8192”


    任何最新的参考是感激的

    对于
    fs.file max
    ,我认为在几乎所有情况下都可以不使用它。如果您运行的是某种非常繁忙的服务器,并且实际上没有文件句柄,那么您可以增加它——但是您需要将其增加到的值将取决于您正在运行的服务器的类型和负载。通常,您只需要增加它,直到不再耗尽文件句柄,或者直到您意识到需要更多内存或更多系统来处理负载。通过将文件最大值降低到默认值以下来进行“调优”所带来的好处是如此之小,以至于不值得考虑——我的手机在fs最大值为83588时工作正常

    顺便说一下,现代内核已经使用经验法则根据系统中的内存量设置文件最大值;从2.6内核中的
    fs/file_table.c

        /*
         * 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\u stat.max\u files
    fs.file max
    的设置;每1MB内存大约有100个


    ulimit当然是限制用户或进程分配的资源。如果您有多个用户或其他类似的情况,那么您可以决定如何分配系统资源并限制内存使用、进程数量等。有关您可以设置的限制的详细信息的最终指南是(当然还有内核源代码).

    通常,大型系统(如Oracle或SAP)建议设置非常高的限制,以免受到影响。我只能建议使用这种方法。数据结构将动态分配,因此只要您不需要它们,它们就不会占用内存。如果您确实需要它们,那么限制它们将不会有帮助,因为如果达到限制,应用程序通常会崩溃

    fs.file-max=6815744#这大致是70GB RAM系统的默认限制

    用户rlimits(nofile)也是如此,您将使用65535


    请注意,这两个建议仅适用于具有关键应用程序和可信shell用户的专用服务器。多用户交互式shell主机必须具有限制性的最大设置。

    忘记了我需要技术文章。每1 MB 97个文件的比率是从哪里来的?还感谢您的回答:)@greggles我真的不记得了,这是一些linux供应商为oracle或sap提供的《规模指南》。实际公式是“基于1k/filehandle使用10%的内存”,如图所示:确切地说,它应该是65GB Ram,文件max=6815744要获得页面大小值,请使用命令“getconf PAGE_SIZE”,主要是4096。