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

Ubuntu 12 ulimit 系统最大打开文件个数设置(Nginx中提示Too Many Open Files 错误解决办法)

 
阅读更多

 

Ubuntu 12 ulimit 系统最大打开文件个数设置(Nginx中提示Too Many Open Files 错误解决办法) 

 

 

Too Many Open Files错误提示就是打开的文件太多了,解决办法也很简单我们只要在nginx配置文件中或linux中直接把ulimit 参考设置大一点就可以解决些问题了,当然最主要的还是我们程序上的优化了。

 

基本命令了解:

root@ubuntu:~# 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) 31498
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31498
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

红字部分就是打开文件数1024个,一般这个太小了。也可以用ulimit -n查看

 

如何设置呢,官方是这样的:

 

第一步:配置/etc/security/limits.conf

sudo vim /etc/security/limits.conf
文件尾追加 
* hard nofile 40960
* soft nofile 40960

 

40960可以自己设置,四列参数的设置见英文,简单讲一下:

 

第一列,可以是用户,也可以是组,要用@group这样的语法,也可以是通配符如*%

第二列,两个值:hard,硬限制,soft,软件限制,一般来说soft要比hard小,hard是底线,决对不能超过,超过soft报警,直到hard数

第三列,见列表,打开文件数是nofile

第四列,数量,这个也不能设置太大

 

#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#


#*               soft    core            0
#root            hard    core            100000

 

 

第二步:/etc/pam.d/su(官方)或/etc/pam.d/common-session(网络)

sudo vim /etc/pam.d/su
将 pam_limits.so 这一行注释去掉 
重起系统

 

sudo vim /etc/pam.d/common-session
加上以下一行
session required pam_limits.so

 

打开/etc/pam.d/su,发现是包含/etc/pam.d/common-session这个文件的,所以修改哪个文件都应该是可以的

这个觉得修改su这个文件比较好,取消注释就OK了,不容易出错,vim打开,定位,x一下即可

 

 

官方只到第二步,就重启系统了,没有第三步,好象不行,感觉是不是全是第三步的作用?!

第三步:配置/etc/profile

 

最后一行加上

ulimit -SHn 40960

 

重启,ulimit -n 验证,显示40960就没问题了

 

 

更新:2012/9/29:

CentOS 6.3上,只要修改/etc/security/limits.conf,重新登录就OK了。

Ubuntu Server 12.04.1上,修改/etc/security/limits.conf,重登录重启不管用,改/etc/pam.d/common-session, su,重登录重启不管用,非要改/etc/profile?

 

看来两者是有差异的?还是我测试不到位?

 

nginx.conf文件的修改

 

 user root;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

worker_rlimit_nofile 655350;

events {
    worker_connections  36000;
}

 

 

 

分享到:
评论

相关推荐

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

    当进程打开的文件数量超过这个限制时,就会报 java.net.SocketException: Too many open files 错误。这种错误的出现会导致服务器崩溃,影响应用程序的稳定性和可靠性。 解决方法一:临时解决方案 使用命令 ...

    Too many open files 问题的解决.txt

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

    Too many open files 解决方法

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

    报错:too many open files处理

    在IT行业中,我们经常遇到各种错误,其中之一是“too many open files”。这个错误通常发生在操作系统限制了同一时间可打开的文件数量,而程序试图超出这个限制时。在本篇文章中,我们将深入探讨这个问题,理解其...

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

    * ulimit 命令:用于设置最大进程数和最大文件打开数,是系统优化的必要手段。 * limits.conf 文件:用于设置系统的最大进程数和最大文件打开数的限制。 * pam_limits.so 文件:用于确保 limits.conf 文件配置生效。...

    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 问题。

    java.io.FileNotFoundException: *****(Too many open files)

    在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...

    AIX关于Weblogic的报错_Too_many_open_files_的处理

    在AIX环境中部署Weblogic时,可能会遇到一个常见的错误提示:“Too many open files”。这一错误提示通常出现在系统资源限制不当的情况下,具体表现为操作系统对单一进程能够打开的文件数量进行了限制,而当前应用...

    Python错误提示:[Errno 24] Too many open files的分析与解决

    在Python编程过程中,可能会遇到一个常见的错误提示:“[Errno 24] Too many open files”。这个错误通常意味着你的程序尝试打开的文件句柄超过了操作系统允许的最大限制。下面我们将深入探讨这个问题的原因、如何...

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

    在Unix和Linux操作系统中,系统资源的管理是一个关键任务,其中就包括了限制一个用户或进程可以打开的最大文件数。这个限制通常被称为“最大打开文件数”,它由`ulimit`命令来控制。`ulimit -n`命令用于查看或设置一...

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

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

    39 案例实战:如何解决经典的Too many connections故障?背后原理是什么.pdf

    除了文件句柄限制之外,ulimit命令还可以限制其他资源的使用,例如coreFileSize(进程崩溃转储文件大小)、maxLockedMemory(最大锁定内存大小)、openFiles(最大打开文件句柄数)以及maxUserProcesses(最大用户...

    Nginx提示:500 Internal Server Error错误的解决方法.docx

    Nginx 500 Internal Server Error 错误解决方法 本文总结了 Nginx 中 500 Internal Server Error 错误的原因和解决方法。Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它可以...

    Tengine(Nginx)配置参考

    设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”问题了。 worker_rlimit_nofile 100000; #全局错误日志及PID文件 #error_log logs/...

    Linux 下应用程序最大打开文件数的理解和修改.docx

    在Linux操作系统中,程序可能会遇到“Too many open files”的错误,这通常意味着某个进程尝试打开的文件数量超过了系统允许的最大限制。这个问题在处理高并发文件访问或大量网络连接(如Socket)的Java程序中尤为...

    linux的最大进程句柄数设置

    系统默认值 1024,对于一般的应用来说已经足够使用,但是对于需要处理大量请求的应用,可能会出现“too many files open”的错误提示。 要知道当前进程打开了多少个文件句柄,可以使用以下命令: lsof -n | awk '{...

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

    当系统中的文件句柄数量达到这个值时,系统将不能再打开新的文件句柄,从而导致“Too many open files in system”错误。 file-max 命令的作用域是系统级别的,而不是进程级别的。它控制着 Linux 内核可以分配的...

    Nginx配置文件(nginx.conf)配置详解[定义].pdf

    在这个示例中,打开文件缓存的最大数量为65535个,inactive时间为60秒。 打开文件缓存有效时间 `open_file_cache_valid 80s;`指令指定了打开文件缓存的有效时间。在这个示例中,打开文件缓存的有效时间为80秒。 ...

    38 案例实战:数据库无法连接故障的定位,Too many connections.pdf

    数据库连接数上限的限制通常由数据库的最大连接数决定,这个参数在数据库配置文件中设置。以MySQL数据库为例,这个参数名为max_connections。 在上面的案例中,数据库服务器配置的max_connections被设置为800,意味...

Global site tag (gtag.js) - Google Analytics