`
tcxiang
  • 浏览: 89503 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

linux修改最大文件链接数open files/ulimit -n(转)

 
阅读更多
使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

 

新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。

使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)

有如下三种修改方式:

1.在/etc/rc.local 中增加一行 ulimit -SHn 65535
2.在/etc/profile 中增加一行 ulimit -SHn 65535
3.在/etc/security/limits.conf最后增加如下两行记录
* soft nofile 65535
* hard nofile 65535

具体使用哪种,试试哪种有效吧,我在 CentOS中使用第1种方式无效果,使用第3种方式有效果,而在Debian中使用第2种有效果

其实CentOS ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软默认显示的是软限制,如果运行CentOS ulimit命令修改的时候没有加上的话,就是两个参数一起改变.生效
修改完重新登录就可以见到.(我的系统是CentOS5.1.修改了,重新登录后就立刻生效.可以用CentOS ulimit -a 查看确认.)

 

[root@dev ~]# 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) 17513
max locked memory       (kbytes, -l) 32
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) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 17513
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

Linux文件描述符可参见笔者之前的文章:http://kumu1988.blog.51cto.com/4075018/1086210

关于RHEL6中ulimit的nproc限制,RHEL6和RHEL5还是有一些细节上的区别的:

当前shell下更改用户可打开进程数 

作为临时限制,ulimit可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他shell 会话。

修改limits.conf配置文件生效

[root@kumu ~]# ulimit -a         //查看当前配置文件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) 1829

max locked memory       (kbytes, -l) 64

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) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

[root@kumu ~]# vim /etc/security/limits.conf

[root@kumu ~]# grep '^*' /etc/security/limits.conf

*       soft    nproc       10240

*       hard    nproc       10240

*       soft    nofile      10240

*       hard    nofile      10240

[root@kumu ~]#

 
退出当前用户,重新登录即可让之前修改的limits生效

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]# ulimit -u         //发现nproc并没有像nofile一样而改变

1024

[root@kumu ~]#

 
经google搜索获知,RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf

(参见了@杨德华Devin 文章redhat5 redhat6 root用户不同的ulimits

[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

*          soft    nproc     1024

[root@kumu ~]#

 
我们修改这个文件尝试是否因为该文件影响,修改如下

[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf

[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

#*          soft    nproc     1024

*          soft    nproc    65535

[root@kumu ~]#

 
退出当前用户,重新登录即可让之前修改的limits生效,执行如下命令发现修改成功

[root@kumu ~]# ulimit -u

10240

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]#

 

由此可知,如果要修改配置文件limits.conf中的nproc限制上限是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,但是shell终端下是不受制约的

 
另外笔者猜想,如果使用*号让全局用户生效是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件nproc值大小的影响
 

[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf   //恢复系统默认设置

[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

*          soft    nproc     1024

#*          soft    nproc    65535

[root@kumu ~]# vim /etc/security/limits.conf       //只针对某个用户测试(这里使用root)

[root@kumu ~]# grep '^root' /etc/security/limits.conf

root        soft    nproc       10240

root        hard    nproc       10240

[root@kumu ~]#

 
退出当前用户,重新登录即可让之前修改的limits生效,执行如下命令发现修改成功

[root@kumu ~]# ulimit -u

10240

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]#

 

笔者之前猜想正确,即只有当使用*号让全局用户生效的时候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件nproc值大小的影响。

分享到:
评论

相关推荐

    linux_ulimit的使用

    2. **修改最大文件句柄数**: ``` ulimit -n 4096 ``` 将最大文件句柄数设置为 4096。这对于需要打开大量文件的应用程序非常有用,比如 Web 服务器或数据库服务器。 3. **设置最大核心文件大小**: ``` ...

    修改linux进程可打开的文件数的限制open files

    修改linux进程可打开的文件数的限制open files linux中一切都是文件 默认linux一个进程可打开1024个文件 大并发需要达到5万个文件描述符FD,你必须修改该参数值才行

    linux的最大进程句柄数设置

    在 Linux 系统中,进程句柄数设置是一个重要的参数,它决定了单个进程能够打开的最大文件句柄数量,包括 socket 连接。系统默认值为 1024,这对于一般的应用来说已经足够使用。但是,对于需要处理大量请求的应用,如...

    Linux报too many open files的解决方案

    Linux系统在运行时经常会出现"too many open files"(文件打开过多)的错误,这是一个非常常见的问题,通常发生在当系统运行的应用程序尝试打开的文件数量超过了系统限制时。为了解决这个问题,我们可以从两个方面...

    linux too many open files解决方案.docx

    Linux too many open files 解决方案 Linux 系统中的打开文件数量限制问题是系统对程序打开文件数量的限制问题。...通过修改打开文件数量限制和核心文件大小限制,可以解决 Linux 系统中的 Too many open files 问题。

    增加系统的最大打开文件数

    `ulimit -n`命令用于查看或设置一个用户在单个会话中能打开的最大文件句柄数。值得注意的是,`ulimit`命令对root用户无效,因为root用户不受这些限制的约束,只会影响到普通用户。 为了提升这个限制,需要进行两步...

    SonarQube的安装和配置以及与Jenkins和gitlab的集成

    2. **增加最大文件句柄数**: ```bash sysctl -w fs.file-max=65536 ulimit -n 65536 ulimit -u 2048 ``` 3. **永久性地修改系统参数**: - 修改`/etc/sysctl.conf`或创建新的配置文件`/etc/sysctl.d/99-...

    Too many open files 问题的解决.txt

    当一个应用(如Apache、MySQL、Java应用服务器等)试图打开超过其最大文件句柄数限制的文件时,就会遇到“Too many open files”的错误。这不仅会阻止进一步的文件操作,还可能引起应用崩溃或服务不可用的情况。 ##...

    Too many open files 解决方法

    为了解决“Too many open files”的问题,需要调整Linux系统中进程可以打开的最大文件数。这可以通过两种方式来实现:临时修改和永久修改。 ##### 临时修改 可以使用`ulimit -n`命令临时增加每个进程可以打开的...

    访问应用很慢,访问Nginx时,报错:accept() failed (24 Too many open files).docx

    本文讨论了 Nginx 访问慢和 accept() failed 错误的解决方案,包括临时修改 ulimit 值、永久修改 ulimit 值、修改 nginx.conf 文件、影响 MySQL 并发连接数等方法。通过这些方法,可以解决 Nginx 连接过多的问题,...

    linux打开文件数

    运行上述命令可以查看当前用户的资源限制,其中`open files (-n)`列出了最大文件描述符数。如果需要临时修改这个值,可以使用`ulimit`命令: ```bash ulimit -n 4096 ``` 这会将最大文件描述符数临时设置为4096,...

    并发时-修改Linux系统下的大文件描述符限制

    通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下:  $ulimit -n  1024  当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...

    AIX关于Weblogic的报错_Too_many_open_files_的处理

    - 添加或修改`maxfiles`变量的值,确保Weblogic进程的文件句柄数足够。 ```bash maxfiles=`ulimit -Hn` if [ "$?" = "0" -a `expr ${maxfiles} : '[0-9][0-9]*$'` -eq 0 ]; then ulimit -n 32768 fi ``` 5. ...

    nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)

    3. **检查系统资源限制**:确保系统允许足够的文件描述符打开,必要时增加`ulimit -n`的值,并永久修改系统配置(如`/etc/security/limits.conf`)。 4. **优化请求处理**:考虑使用缓存、负载均衡或其他优化策略...

    /etc/php-fpm.d/www.conf 配置注意事项

    通过命令`ulimit -n`可以查看当前系统允许的最大文件描述符数。在例子中,该值被设置为65535。确保`/etc/php-fpm.d/www.conf`中的`rlimit_files`值与系统设置相同,如果不一致,可以使用`ulimit -HSn 65535`来永久...

    Hadoop集群(第12期副刊)_Hbase性能优化

    Linux系统最大可打开文件数一般默认的参数值是1024,如果你不进行修改并发量上来的时候会出现“Too Many Open Files”的错误,导致整个HBase不可运行,你可以用ulimit -n 命令进行修改,或者修改/etc/security/...

    文件最大数修改

    ### 文件最大数修改详解 #### 一、问题背景与现象 在运维Linux服务器的过程中,可能会遇到Apache服务重启失败的情况。这种故障通常会在Apache的错误日志(error_log)中留下线索,例如:“Unable to open logs”。这...

    linux系统级别的能够打开的文件句柄的数file-max命令.docx

    linux 系统级别的能够打开的文件句柄的数file-max命令 Linux 系统中,file-max 命令用于设置系统级别的能够打开的文件句柄的数量,这个值决定了 Linux 内核可以分配的文件句柄的最大数量。当系统中的文件句柄数量...

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法

    使用命令 ulimit -n 4096 可以临时将打开文件数的上限设为 4096。这样可以暂时解决 Too many open files 错误。但是,这种方法只能临时解决问题,当重新登录后,打开文件数的上限又会恢复到默认的 1024。 解决方法...

    marmot-cn#readingNotes#设置linux打开文件句柄:proc:sys:fs:file-max和ulimit

    设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是

Global site tag (gtag.js) - Google Analytics