限制类型

  1. 硬限制:硬限制(/etc/system 参数 rlim_fd_max 或者资源控制的特权级别 process.max-file-descriptor )是系统管理员设置的每个进程最大打开文件数的限制。
    它意味着是系统上(使用 rlim_fd_max 时)或者项目中(使用资源控制时)运行的所有进程的上限。
    任何用户都可以降低硬限制但不能增加它。

  2. 软限制:任何用户都可以设置软限制(/etc/system 参数 rlim_fd_cur 或者资源控制的基本级别 process.max-file-descriptor ),直到硬限制。

注意:每个 Solaris 系统的打开文件数没有限制。
可在 Solaris 10 及更高版本上打开的文件数仅受可用内存量的限制。

Solaris:如何设置每个进程打开文件的最大数量限制

每个进程打开文件的最大限制可以通过设置硬限制和/或者软限制来限制。
硬限制可以由系统管理员设置,任何用户都可以减少,而软限制可以由任何用户设置,直到硬限制。
本文档描述了 Solaris 10 和 Solaris 11 中可用的各种方法,用于设置每个进程的最大打开文件数限制。

验证限制

以下命令可用于检查正在运行的进程的最大打开文件数限制的值(同样,在所有示例中,13179 用于进程 ID):

prctl 命令:

# prctl -n process.max-file-descriptor 13179 
process: 13179: sleep 1200
NAME    PRIVILEGE       VALUE    FLAG   ACTION               RECIPIENT
process.max-file-descriptor
        basic             256       -   deny                     13179
        privileged      65.5K       -   deny                         
        system          2.15G     max   deny

plimit 命令:

# plimit 13179
13179: sleep 1200
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         10240           unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  256             65536
  vmemory(kbytes)       unlimited       unlimited

pfiles 命令:

# pfiles 13179 
13179: sleep 1200
Current rlimit: 256 file descriptors
0: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001
1: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001
2: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001
之路教程 https://onitr oad .com

设置限制

1.方法1(已弃用):/etc/system中的参数rlim_fd_cur
参数 rlim_fd_cur 可以设置为 rlim_fd_max 的值(默认为 65536 ,也可以在 /etc/system 中设置为不同的值)。
在 Solaris 10 和 Solaris 11 中不再推荐这种设置文件描述符限制的方法。
通常,建议使用资源控制来支持可用的 /etc/system 参数。

2.方法二:资源控制process.max-file-descriptor
通过使用资源控制 process.max-file-descriptor 而不是 /etc/system 参数 rlim_fd_max,系统管理员可以在系统保持运行时更改每个进程的最大打开文件数的值,而无需重新启动服务器。
另一个优点是不影响其他项目的进程。

要将项目 PRJ 的硬限制从默认的 65536 更改为 4096,请使用以下命令:

# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" PRJ

要将项目 PRJ 的软限制从默认的 256 更改为 1024,请使用以下命令:

# projmod -s -K "process.max-file-descriptor=(basic,1024,deny) PRJ

3.方法3:limit/ulimit命令
还可以使用 limit 或者 ulimit 命令设置每个进程的最大打开文件数限制,最高可达 /etc/system 中设置的硬限制或者 process.max-file-descriptor 的 priv 级别。
该限制是为 shell 和在该 shell 中执行的所有命令设置的,即使为该用户定义了具有资源控制 process.max-file-descriptor 的项目。

a)
设置软限制
要将 csh 中的软限制从默认的 128 增加到 512,请使用以下命令:

# limit descriptors 512

要将 ksh 或者 sh 中的软限制从默认的 128 增加到 512,请使用以下命令:

# ulimit -Sn 512

湾设置硬限制
要将 csh 中的硬限制从默认的 65536 减少到 4096,请使用以下命令:

# limit -h descriptors 4096

要将 ksh 或者 sh 中的硬限制从默认的 65536 减少到 4096,请使用以下命令:

# ulimit -Hn 4096

4.方法四:plimit命令
plimit 命令可用于设置已运行进程的最大打开文件数的限制。
例如,以下命令会将进程 13179 的软限制设置为 2048,将硬限制设置为 4096:

# plimit -n 2048,4096 13179
日期:2020-09-17 00:15:13 来源:oir作者:oir