1.一般来说每一个网络连接,都会建立相应的socket句柄,同时每个连接也会有标准输入输出等基本的文件文件句柄,而且每一个socket连接都是进行文件 *** 作的,因此连接数决定于系统资源.
2.Linux上一般可以通过ulimit来进行相应的资源限制,默认能打开的文件描述符自己可以查看.如下图所示:
3.ulimit的命令格式:ulimit [-acdfHlmnpsStvw] [size]
参数说明:
-H 设置硬资源限制.
-S 设置软资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes
-u <程序数目> 用户最多可开启的程序数目
ulimit:
1,查看进程允许打开的最大文件句柄数
ulimit -n
2,设置进程能打开的最大文件句柄数
ulimit -n xxx
-H 指定资源的硬限制
-S 指定资源的软限制
hard 代表当前硬限制
soft 代表当前软件限制
unlimited 代表不限制.
3, 文件限制配置文件
/etc/security/limits.conf
4,文件句柄最大数据配置
配置文件:/proc/sys/fs/file-max
这个参数的默认值和内存大小有关系,可以使用公式:file-max 内存大小/ 10k.
4.1 建议将整个系统的文件句柄值至少设置为 65536
4.2 echo "65536" >/proc/sys/fs/file-max
4.3 sysctl -w fs.file-max=65536
4.4 echo "fs.file-max=65536" >>/etc/sysctl.conf
5,文件句柄使用情况配置文件:/proc/sys/fs/file-nr
这三个值分别指:系统已经分配出去的句柄数、已经分配但是还没有使用的句柄数以及系统最大的句柄数(和file-max一样)。
6,查看进程打开的文件句柄数
lsof:列出当前系统打开文件的工具。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)