
为避免因程序任务过多导致文件句柄数不够的问题,在linux系统下部署程序的时候可以调大用户文件句柄数。用root用户修改/etc/security/limits.conf 配置,在文件末尾添加如下内容:
user softnofile 2048
user hardnofile 65536
其中user为报错程序部署目录的用户名,根据部署环境配置。注意"nofile"项有两个可能的限制措施。就是<type>项下的hard和soft。硬限制表明soft限制中所能设定的最大值。soft限制指的是当前系统生效的设置值。hard限制值可以被普通用户降低。但是不能增加。soft限制不能设置的比hard限制更高。只有root用户才能够增加hard限制值。
修改完成后切换到user用户下再执行ulimit -a查看文件句柄数是否修改成功。
改完后,验证,发现用户的文件句柄数已变成2048.应该可以应对大并发数啦。
句柄数。inux最大打开文件句柄数,即打开文件数最大限制,就是规定的单个进程能够打开的最大文件句柄数,Socket连接也算在里面,默认大小1024个。
Linux是一种免费使用和自由传播的类UNIX *** 作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。
1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是无穷大。nofile由内核参数nr_open定义的.
“在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/sys/fs/nr_open来设置。”
2.使用cat /proc/sys/fs/nr_open 查看nr_open值,可通过修改/ect/sysct.conf 修改fs.nr_open值,sysctl -p生效
3.fix_max linux内核定义的最大file handles(文件句柄数).nr_open定义是单进程最大file-handles,file-handles(即文件句柄)
file-max:
The value in file-max denotes the maximum number of file-
handles that the Linux kernel will allocate. When you get lots
of error messages about running out of file handles, you might
want to increase this limit
nr_open:
This denotes the maximum number of file-handles a process can
allocate. Default value is 1024*1024 (1048576) which should be
enough for most machines. Actual limit depends on RLIMIT_NOFILE
resource limit.
4.file-handles与fd
在UNIX/LINUX中我们接触更多是file discriptor(FD,即文件描述符),通过百度搜索,似乎file-handle在windows中是一个类似file discrptor的东东,但是我们讨论的是linux,再google一下,我们可以精确到c语言中这两个概念的区别,据他们的讨论file-handle应该是一个高层的对象,使用fopen,fread等函数来调用,而FD是底层的一个对象,可以通过open,read等函数来调用。
原文链接: https://blog.csdn.net/wh0426/article/details/52311683
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)