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 / 问题 / 773609
Accepted
Buzut
Buzut
Asked: 2016-04-29 06:38:25 +0800 CST2016-04-29 06:38:25 +0800 CST 2016-04-29 06:38:25 +0800 CST

ulimit 设置如何影响 Linux?

  • 772

最近,我遇到了EAGAIN一些异步代码错误,这让我仔细查看了ulimit设置。虽然我清楚地了解某些限制,例如nofile,但其他人对我来说仍然很困惑。

很容易找到有关如何设置这些设置的资源,但我找不到任何文章准确解释每个设置的含义以及它如何影响系统。

取自的定义/etc/security/limits.conf并不是真正不言自明的:

- core - limits the core file size (KB)
- data - max data size (KB)
- fsize - maximum filesize (KB)
- memlock - max locked-in-memory address space (KB)
- nofile - max number of open files
- rss - max resident set size (KB)
- stack - max stack size (KB)
- cpu - max CPU time (MIN)
- nproc - max number of processes
- as - address space limit (KB)
- maxlogins - max number of logins for this user
- maxsyslogins - max number of logins on the system
- priority - the priority to run user process with
- locks - max number of file locks the user can hold
- sigpending - max number of pending signals
- msgqueue - max memory used by POSIX message queues (bytes)
- nice - max nice priority allowed to raise to values: [-20, 19]
- rtprio - max realtime priority
- chroot - change root to directory (Debian-specific)

因此,如果有人能在那些相当重要的 Linux 设置上启发我,我会很高兴!

我面临的错误实际上是:

{ [Error: spawn mediainfo EAGAIN]
  code: 'EAGAIN',
  errno: 'EAGAIN',
  syscall: 'spawn mediainfo',
  path: 'mediainfo',
  spawnargs: 
   [ '--Output=XML',
     '/home/buzut/testMedia' ],
  cmd: 'mediainfo --Output=XML /home/buzut/testMedia' }

根据gnu.org上的定义:

在选择了非阻塞模式的对象上尝试了会阻塞的操作。再次尝试相同的操作将阻塞,直到某些外部条件可以读取、写入或连接(无论操作如何)。

我了解该EAGAIN错误是指暂时不可用的资源。将所有参数设置为unlimited. 因此,我会理解哪些参数来识别一个阻塞并相应地调整——ulimit设置、我的代码或两者——的含义。

这是我目前的限制:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 127698
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 64000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 127698
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
linux ulimit
  • 2 2 个回答
  • 24822 Views

2 个回答

  • Voted
  1. Best Answer
    Buzut
    2016-04-29T13:42:31+08:002016-04-29T13:42:31+08:00

    我已经做了功课,并且(几乎)找到了每个选项的作用。此外,我注意到其中的选项/etc/security/limits.conf比ulimit -a. 因此,我在这里只记录了后者。当然,请大家丰富这个答案!

    • 核心文件大小 (块,-c)

      创建的核心文件的最大大小。核心转储是系统快照(RAM + 上下文切换 + 处理器寄存器)。

      https://en.wikipedia.org/wiki/Core_dump


    • 数据段大小 (千字节,-d)

      进程数据段的最大大小。数据段是目标文件的一部分或包含已初始化静态变量的程序的相应虚拟地址空间。

      https://en.wikipedia.org/wiki/Data_segment


    • 调度优先级 (-e)

      可以给定进程的最大调度优先级(“nice”)。

      https://en.wikipedia.org/wiki/Scheduling_%28computing%29


    • 文件大小 (块,-f)

      shell 及其子级写入的文件的最大大小。


    • 未决信号 (-i)

      一组等待传递给调用线程的信号。

      https://unix.stackexchange.com/questions/197600/what-are-pending-signals


    • 最大锁定内存 (千字节,-l)

      可以锁定到内存中的最大大小。内存锁定确保内存始终在 RAM 中,并且永远不会移动到交换磁盘。

      https://stackoverflow.com/questions/9818755/why-would-we-need-to-lock-a-processs-address-space-in-ram


    • 最大内存大小 (千字节,-m)

      进程当前在主内存 (RAM) 中拥有多少内存,而不是该进程总共拥有多少虚拟内存。

      https://en.wikipedia.org/wiki/Resident_set_size


    • 打开文件 (-n)

      打开文件描述符的最大数量。文件描述符是用于访问文件或其他输入/输出资源(例如管道或网络套接字)的抽象指示符。

      https://en.wikipedia.org/wiki/File_descriptor

      列出文件描述符:http ://www.cyberciti.biz/tips/linux-procfs-file-descriptors.html


    • 管道大小 (512 字节,-p)

      管道的内部缓冲区大小。请参阅http://man7.org/linux/man-pages/man7/pipe.7.html中的“管道容量”部分


    • POSIX 消息队列 (字节,-q)

      POSIX 消息队列中的最大字节数。POSIX 消息队列允许进程以消息的形式交换数据。

      http://linux.die.net/man/7/mq_overview

      一般的消息队列https://en.wikipedia.org/wiki/Message_queue


    • 实时优先级 (-r)

      最大实时调度优先级。实时优先级线程永远不会被定时器中断抢占,并以比系统中任何其他线程更高的优先级运行。

      https://stackoverflow.com/questions/1663993/what-is-the-realtime-setting-for-for-process-priority


    • 堆栈大小 (千字节,-s)

      最大堆栈大小。堆栈大小是一个保留的内存区域,用于存储函数调用的位置,以允许 return 语句返回到正确的位置。

      https://en.wikipedia.org/wiki/Stack-based_memory_allocation


    • cpu时间 (秒,-t)

      以秒为单位的最大 cpu 时间。

      https://en.wikipedia.org/wiki/CPU_time


    • 最大用户进程 (-u)

      用户可以启动或派生的最大进程数。

      https://en.wikipedia.org/wiki/Process_%28computing%29

      此命令显示每个用户当前正在使用多少进程:

      ps h -Led -o user | sort | uniq -c | sort -n


    • 虚拟内存 (千字节,-v)

      shell 可用的最大虚拟内存量。虚拟内存将程序使用的内存地址(称为虚拟地址)映射到计算机内存中的物理地址。

      https://en.wikipedia.org/wiki/Virtual_memory


    • 文件锁 (-x)

      文件锁定是一种通过在任何特定时间只允许一个用户或进程访问来限制对计算机文件的访问的机制。

      https://en.wikipedia.org/wiki/File_locking

    • 12
  2. Ali Ghasempour
    2016-04-29T06:44:21+08:002016-04-29T06:44:21+08:00

    由于您没有提到 Linux 限制的确切问题是什么,所以很难修复它。您ulimit -a用于检查您在操作系统中的所有限制。您也可以更改您拥有的每个限制(您可以减少它而不增加它,除非 root 可以做任何事情)尝试查看man ulimit以找出您需要更改的选项。

    • 1

相关问题

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

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

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

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

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

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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