linux ulimit 优化系统

㈠、何为ulimitphp

ulimit为shell内建指令,可用来控制shell执行程序的资源linux

㈡、ulimitl默认值是多少nginx

[root@mttx ~]# 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) 8064
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8064
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 shell

㈢、为什么要修改ulimit服务器

   对于须要作许多 socket 链接并使它们处于打开状态的 Java 应用程序而言,
最好经过使用 ulimit -n xx 修改每一个进程可打开的文件数,缺省值是 1024,有时候会赶上Socket/File: Can’t open so many files或too many open files的问题.session

㈣怎么修改ulimitsocket

1在/etc/rc.local中增长
ulimit -SHn 65535ide

2在/etc/profile中增长
ulimit -SHn 65535优化

而后source /etc/profile让参数即时生效ui

3在/etc/security/limits.conf 中增长

 

*     soft   nproc           65535
*     hard   nproc           65535
*     soft   nofile          65535
*     hard   nofile          65535

说明:* 表明针对全部用户,nproc是表明最大进程数,nofile 是表明最大文件打开数.修改了limits.conf文件以后,要让它当即生效,只需关闭当前session,从新链接便可

 

㈤、扩展阅读:

在Linux下面部署应用的时候,,其实Linux是有文件句柄限制的,并且默认不是很高,通常都是1024,做为一台生产服务器,其实很容易就达到这个数量,所以咱们需 要把这个值改大一些。

 

  这里,有不少ulimit的文章都说的很含糊,究竟这个1024 是系统的限制,仍是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。

一、这个限制是针对单个程序的限制
二、这个限制不会改变以前已经运行了 的程序的限制
三、对这个值的修改,退出了当前的 shell就会消失

   好比说,我先运行了一个程序A,而后 经过ulimit修改了限制为 2048,而后运行B,而后退出了shell再登陆,而后运行C。那就只有B能够打开2048个句柄。

其中一个方法,是想ulimit修改命令放入/etc/profile 里面,可是这个作法并很差

正确的作法,应该是修改/etc /security/limits.conf

那系统总限制呢

实际上是在这里,/proc/sys /fs/file-max
能够经过cat查看目前的 值,echo来马上修改

另外还有一个,/proc/sys /fs/file-nr
只读,能够看到整个系统目前使用的文 件句柄数量

查找文件句柄问题的时候,还有一个很 实用的程序lsof
能够很方便看到某个进程开了那些句柄
也能够看到某个文件/目录被什么进程 占用了

若是你使用squid的话,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384

注:上面这种方式只是改变了用户登录系统后的文件打开数,对于/etc/init.d/nginxphp这种的启动脚本并不起做用,像这种启动脚本,须要在脚本内加一行:

ulimit -HSn 65535才行。


修改ulimit优化服务器

 

默认linux系统的文件描述符是1024,在大负载的状况下这点文件描述符是远远不够的,如下两种方法:

 

一,经过ulimit命令修改  

#显示当前文件描述符

ulimit -n

 

#修改当前用户环境下的文件描述符为65536

ulimit -HSn 65536

只能修改当前登陆用户环境下的文件描述符,若是此用户来另外打开一个链接,此连接环境的文件描述符依然是没改前的。若是系统重启,之前修改都再也不生效

 

二,经过修改limits.conf文件

1.打开/etc/security/limits.conf,里面有很详细的注释,找到以下设置(若是没有就插入)

* soft nofile 65536

* hard nofile 65536

 

2.编辑/etc/pam.d/common-session,加入一行

session required pam_limits.so

3.编辑/etc/profile,加入

ulimit -SHn 65536

相关文章
相关标签/搜索