Linux-ulimit-系统资源限制
error: too many open files
使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files)
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。
使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)
修改linux的软硬件限制文件/etc/security/limits.conf.
* soft nofile 65535
* hard nofile 65535
error File size limit exceeded
首先SSH登录服务器,执行ulimit -a查看当前限制
第一处修改 /etc/security/limits.conf 在文件尾部增加
* soft fsize 6553500
* hard fsize 6553500
执行 ulimit -f 6553500或者在 /etc/profile增加ulimit -f 6553500 (永久有效)
保存修改后,重启Linux服务器。重启完毕后,SSH登入服务器,执行ulimit -a查看系统限制
参 数:
-a 显示目前资源限制的设定。
-c
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
其他参考:
文件系统及程序的限制关系: ulimit
ulimit 限制用户的某些系统资源
包括可以开启的档案数量
可以使用的 CPU 时间
可以使用的内存总量等。
[root@www ~]# ulimit [-acdfHlmnpsStvw] [size]
选项与参数:
-H : hard limit ,严格的设定,必定不能超过这个设定的数值
-S : soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息
-a : 后面不接任何选项与参数,可列出所有的限制额度
-c : 当某些程序发生错误时,系统可能会将该程序在内存中的信息写成档案,这种档案就被称为核心档案(core file)。
-f : 此 shell 可以建立的最大档案容量(一般可能设定为 2GB)单位为 Kbytes
-d : 程序可使用的最大断裂内存(segment)容量
-l : 可用于锁定 (lock) 的内存量
-m : 设置可以使用的常驻内存的最大值.单位:kbytes
-n : 设置内核可以同时打开的文件描述符的最大值.单位:n
-p : 设置管道缓冲区的最大值.单位:kbytes
-s : 设置堆栈的最大值.单位:kbytes
-v : 设置虚拟内存的最大值.单位:kbytes
-t : 可使用的最大 CPU 时间 (单位为秒)
-u : 单一用户可以使用的最大程序(process)数量
一般简单设置:ulimit -SHn 65535
让其永久生效:
[root@www ~]# vi /etc/security/limits.conf
* soft noproc 65535
* hard noproc 65535
* soft nofile 409600
* hard nofile 409600
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
生产环境的案例:
[root@www ~]# vi /etc/security/limits.conf
# End of file
* soft core unlimit
* hard core unlimit
* soft fsize unlimited
* hard fsize unlimited
* soft data unlimited
* hard data unlimited
* soft nproc 65535
* hard nproc 63535
* soft stack unlimited
* hard stack unlimited
* soft nofile 409600
* hard nofile 409600