Linux的最⼤⽂件限制数ulimit
Linux的最⼤⽂件限制数ulimit
⼀:说明
Linux对于每个⽤户,系统限制其最⼤进程数。为提⾼性能,可以根据设备资源情况,设置各linux ⽤户的最⼤进程数可以⽤ulimit -a 来显⽰当前的各种⽤户进程限制。
ulimit:显⽰(或设置)⽤户可以使⽤的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应⽤程序在运⾏过程中使⽤的系统资源不超过相应的软限制,任何的超越都导致进程的终⽌。
[root@hadoop001 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size          (kbytes, -d) unlimited
scheduling priority            (-e) 0
file size              (blocks, -f) unlimited
pending signals                (-i) 15088
max locked memory      (kbytes, -l) 64
max memory size        (kbytes, -m) unlimited
open files                      (-n) 65535
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) 15088
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
⼆:ulimit参数的描述
limited 不限制⽤户可以使⽤的资源,但本设置对可打开的最⼤⽂件数(max open files)
和可同时运⾏的最⼤进程数(max user processes)⽆效
-a 列出所有当前资源极限
-c 设置core⽂件的最⼤值.单位:blocks
-d 设置⼀个进程的数据段的最⼤值.单位:kbytes
-f Shell 创建⽂件的⽂件⼤⼩的最⼤值,单位:blocks
-h 指定设置某个给定资源的硬极限。如果⽤户拥有 root ⽤户权限,可以增⼤硬极限。任何⽤户均可减少硬极限
-l 可以锁住的物理内存的最⼤值
-m 可以使⽤的常驻内存的最⼤值,单位:kbytes
-n 每个进程可以同时打开的最⼤⽂件数
-p 设置管道的最⼤值,单位为block,1block=512bytes
-s 指定堆栈的最⼤值:单位:kbytes
-S 指定为给定的资源设置软极限。软极限可增⼤到硬极限的值。如果 -H 和 -S 标志均未指定,极限适⽤于以上⼆者
-t 指定每个进程所使⽤的秒数,单位:seconds
-u 可以运⾏的最⼤并发进程数
-v Shell可使⽤的最⼤的虚拟内存,单位:kbytes
输出的每⼀⾏由资源名字、(单位,ulimit命令的参数)、软限制组成。详细解释:
参数描述
core file size core⽂件的最⼤值为100 blocks,
data seg size 进程的数据段可以任意⼤
file size ⽂件可以任意⼤
pending signals 最多有2047个待处理的信号
max locked memory ⼀个任务锁住的物理内存的最⼤值为32kB
max memory size ⼀个任务的常驻物理内存的最⼤值
open files ⼀个任务最多可以同时打开1024的⽂件
pipe size 管道的最⼤空间为4096字节
POSIX message queues POSIX的消息队列的最⼤值为819200字节
stack size 进程的栈的最⼤值为8192字节
cpu time 进程使⽤的CPU时间
max user processes 当前⽤户同时打开的进程(包括线程)的最⼤个数为2047
virtual memory 没有限制进程的最⼤地址空间
file locks 所能锁住的⽂件的最⼤个数没有限制
三:操作
下⾯我把某linux⽤户的最⼤进程数设为10000个:
ulimit -u 10240
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应⽤程序⽽⾔,
最好通过使⽤ ulimit -n xx 修改每个进程可打开的⽂件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的⽂件数⽬加⼤到4096,缺省为1024
其他建议设置成⽆限制(unlimited)的⼀些重要设置是:
数据段长度:ulimit -d unlimited
最⼤内存⼤⼩:ulimit -m unlimited
堆栈⼤⼩:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
暂时地,适⽤于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将⼀个相应的 ulimit 语句添加到由登录 shell 读取的⽂件中,
即特定于 shell 的⽤户资源⽂件,如:
1)、解除 Linux 系统的最⼤进程数和最⼤⽂件打开数限制:
vi /etc/f
# 添加如下的⾏
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有⽤户,noproc 是代表最⼤进程数,nofile 是代表最⼤⽂件打开数
2)、让 SSH 接受 Login 程式的登⼊,⽅便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
3)、修改所有 linux ⽤户的环境变量⽂件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096pending
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
保存后运⾏#source /etc/profile 使其⽣效
四:注意
将ulimit 值添加到/etc/profile⽂件中(适⽤于有root权限登录的系统)
进⾏配置的时候,
为了每次系统重新启动时,都可以获取更⼤的ulimit值,将ulimit 加⼊到/etc/profile ⽂件底部。echo ulimit -n 65535 >>/etc/profile
source /etc/profile #加载修改后的profile
在⽣产中,当你不是root⽤户的时候,你再次登录的时候,你的ulimint的值还是没有改变
解决办法:
修改linux的软硬件限制⽂件/etc/f.
[root@hadoop001 security]# pwd
/etc/security
[root@hadoop001 security]# ll
total 68
....
-rw-r--r--. 1 root root 2508 Oct 15  f
....
在⽂件尾部添加如下代码:
soft noproc 11000
hard noproc 11000
soft nofile 4100
hard nofile 4100

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。