Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

Linux too many open file与Resource temporarily unavailable解决方法

$
0
0

Linux  too many open file与Resource temporarily unavailable解决方法


Linux普通用户对打开文件最大数与最大用户进程数,有限制。

[ct@hbyjsdb ~]$ 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) 30439
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 2048
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


可以看出max user processes ,最大用户进程数,才1024,比较小。

open files ,最大打开文件数,才2048,也比较小。


下面说下具体情况,

如果是max user processes 参数太小,就会出现登陆账号出现,Resource temporarily unavailable错误提示。

 nproc就是"max user processes",完整描述是: nproc - max number of processes

 参数含义:

 单个用户可以启动的线程数,因为进程也会启动一个线程,所以也间接对进程数有限制。

 注意:

 该参数只对普通用户有用,root用户不在此限制。 所以用root用户可以启动几万个线程,无法重现这个问题.


如果是open files ,最大打开文件数设置的参数过小,就会出现too many open file报错。

出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值。


查看某一进程的打开文件数量

lsof -p pid | wc -l


查看oracle用户下的打开文件数量:

lsof -u oracle |wc -l


这里参照oracle的配置信息,以下参数基本就是最大参数了。

# vi /etc/sysctl.conf

添加:

fs.file-max= 6815744

# sysctl –p  执行命令生效。


编辑/etc/security/limits.conf

由于普通用户有打开进程最大个数与打开文件最大数限制,所以需要修改。

# vi /etc/security/limits.conf
加入以下四行
oracle  soft        nproc  500000

oracle  hard        nproc  500000

oracle  soft        nofile 1048000

oracle  hard        nofile 1048000

或是将用户名换成 * 号,这样所有普通用户都会生效。


编辑/etc/pam.d/login,使用参数限制生效。

# vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so


(注意64位linux是/lib64 ,32位的是lib)



编辑系统环境配置文件/etc/profile,添加此参数的好处在于,用户很次登陆后都会生效。

需要在最后添加以下内容,

注意这里的参数不能大于limits.conf文件里面的参数。

if [ $USER = "oracle" ]; then

   if [ $SHELL = "/bin/ksh" ]; then

       ulimit -p 500000

     ulimit -n 1048000

   else

     ulimit -u 500000 -n 1048000

   fi

fi


修改完成后最好重启下系统。


参  数:
-a  显示目前资源限制的设定。
-c <core文件上限>  设定core文件的最大值,单位为区块。
-d <数据节区大小>  程序数据节区的最大值,单位为KB。
-f <文件大小>  shell所能建立的最大文件,单位为区块。
-H  设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小>  指定可使用内存的上限,单位为KB。
-n <文件数目>  指定同一时间最多可开启的文件数。
-p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。
-s <堆叠大小>  指定堆叠的上限,单位为KB。
-S  设定资源的弹性限制。
-t <CPU时间>  指定CPU使用时间的上限,单位为秒。
-u <程序数目>  用户最多可开启的程序数目。
-v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。

 

 

ulimit -a 用来显示当前的各种用户进程限制。
    Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
    设置各linux用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
     ulimit-u 10000
     对于需要做许多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的stack size 参数调整为unlimited 无限,使用ulimit -sunlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。

PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作

为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。

在limits.conf加上
       soft    noproc  10240
       hard    noproc  10240
       soft    nofile  10240
       hard    nofile  10240
就是限制了任意用户的最大线程数和文件数为10240。




Viewing all articles
Browse latest Browse all 780

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes