AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 48717
Accepted
Kevin
Kevin
Asked: 2009-08-01 14:35:35 +0800 CST2009-08-01 14:35:35 +0800 CST 2009-08-01 14:35:35 +0800 CST

大容量系统的实用最大打开文件描述符 (ulimit -n)

  • 772

我们最近开始对我们的应用程序进行负载测试,并注意到它在大约 24 小时后耗尽了文件描述符。

我们在戴尔 1955 上运行 RHEL 5:

CPU:2 x 双核 2.66GHz 4MB 5150 / 1333FSB RAM:8GB RAM 硬盘:2 x 160GB 2.5" SATA 硬盘

我检查了文件描述符限制,它设置为 1024。考虑到我们的应用程序可能有大约 1000 个传入连接和 1000 个传出连接,这似乎相当低。更不用说任何需要打开的实际文件。

我的第一个想法是将 ulimit -n 参数增加几个数量级,然后重新运行测试,但我想知道将此变量设置得太高的任何潜在后果。

除了弄清楚我们的软件理论上可以打开多少个文件描述符之外,是否有任何最佳实践来设置它?

java linux ulimit max-file-descriptors
  • 5 5 个回答
  • 167514 Views

5 个回答

  • Voted
  1. Best Answer
    sucuri
    2009-08-02T05:08:15+08:002009-08-02T05:08:15+08:00

    这些限制来自多个“普通”用户(不是应用程序)共享服务器的时代,我们需要保护他们免于使用过多资源的方法。

    它们对于高性能服务器来说非常低,我们通常将它们设置为非常高的数字。(24k 左右)如果需要更高的数字,还需要更改 sysctl file-max 选项(一般在 ubuntu 上限制为 40k,在 rhel 上限制为 70k)。

    设置ulimit:

    # ulimit -n 99999
    

    Sysctl 最大文件:

    #sysctl -w fs.file-max=100000
    

    此外,非常重要的是,您可能需要检查您的应用程序是否存在内存/文件描述符泄漏。使用 lsof 查看它打开的所有内容,看看它们是否有效。不要试图改变你的系统来解决应用程序的错误。

    • 78
  2. Ben Lessani
    2013-05-19T04:22:59+08:002013-05-19T04:22:59+08:00

    你总是可以

    cat /proc/sys/fs/file-nr
    

    在“高负载”情况下查看有多少文件描述符正在使用中。

    至于最大 - 它只取决于你在做什么。

    • 17
  3. MarkR
    2009-08-02T04:27:00+08:002009-08-02T04:27:00+08:00

    如果文件描述符是 tcp 套接字等,那么您可能会为套接字缓冲区和其他内核对象占用大量内存;此内存不可交换。

    但除此之外,不,原则上应该没有问题。查阅内核文档以尝试计算它将使用多少内核内存,和/或对其进行测试。

    我们运行的数据库服务器打开了大约 10k 个文件描述符(主要是在真实的磁盘文件上),没有什么大问题,但它们是 64 位的并且有大量的内存。

    ulimit 设置是每个进程的,但也有系统范围的限制(我认为默认情况下为 32k)

    • 8
  4. Grahamux
    2009-08-01T14:53:36+08:002009-08-01T14:53:36+08:00

    我个人不知道任何最佳实践。取决于系统功能,这有点主观。

    请记住,您看到的 1024 是每个用户的限制,而不是系统范围的限制。考虑您在该系统上运行了多少应用程序。这是唯一的吗?运行此应用程序的用户是否在做其他事情?(IE 您是否有人使用此帐户登录和运行可能会逃跑的脚本?)

    鉴于该盒子仅运行这一个应用程序并且运行所述应用程序的帐户仅用于此目的,我认为按照您的建议增加您的限制没有任何害处。如果是内部开发团队,我会征求他们的意见。如果它来自第三方供应商,他们可能有特定的要求或建议。

    • 2
  5. Kyle
    2009-08-01T16:51:04+08:002009-08-01T16:51:04+08:00

    在我看来,这似乎是“在开发环境中测试它”最好回答的问题之一。我记得几年前,当你搞砸这件事时,Sun 很紧张,但没那么紧张。当时的限制也是1024,所以我有点惊讶地发现现在Linux也一样,似乎应该更高。

    当我搜索您的问题的答案时,我发现以下链接具有教育意义:http: //www.netadmintools.com/art295.html

    还有这个: https ://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to-unlimited-possible

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve