/proc/sys/kernel/threads-max 系统最大线程数量
/proc/sys/vm/max_map_count 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
/proc/sys/kernel/pid_max 系统最大进程数量

  

默认情况下,执行ulimit -a,可以看到 
open files                      (-n) 1024 
我们如何来验证这个1024的真实性呢? 
写了个简单的测试程序分享如下: 
1、先创建文件数量100000个,用shell

mkdir ./filedir
i=0
while [ $i -lt 100000 ] ;
do
touch ./filedir/f_$i
o_file=./filedir/f_$i
echo "$o_file"
echo "file$i" > ./filedir/f_$i
i=$(($i+1))
#echo $i
done

该程序创建filedir目录下名为f_i的文件,i为文件编号,执行该程序,可以在filedir下生成f_0—f_100000的文件 
下面我们写个c程序来测试到底我们在默认情况下可否同时打开这100000个文件,代码如下:   

~]$ cat test_openfiles.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> #define MAX_FILES 100000
int main()
{
int i = 0;
int fd;
char a[8];
int count = 0; for (i = 0; i < MAX_FILES; i++) {
char buf[24] = "./filedir/f_";
sprintf(a, "%d", i);
strcat(buf, a);
printf("file_name:%s\n", buf);
fd = open(buf, O_RDWR);
if (fd != -1) {
count++;
printf("==fd:%d==\n", fd);
printf("Opened %d files\n", count);
} else {
printf("Error, can only open %d files\n", count);
return 0;
}
}
return 0;
}

编译这个c文件

gcc test_openfiles.c

会生成一个a.out的文件

执行./a.out

输出结果如下:
==fd:1020==
Opened 1018 files
file_name:./filedir/f_1018
==fd:1021==
Opened 1019 files
file_name:./filedir/f_1019
==fd:1022==
Opened 1020 files
file_name:./filedir/f_1020
==fd:1023==
Opened 1021 files
file_name:./filedir/f_1021
Error, can only open 1021 files

测试发现最大只能打开1021个文件

调整最大打开文件数

修改/etc/security/limits.conf ,在最后面添加如下:

* - nofile  1048576

重新登录终端生效

[tuser@localhost ~]$ exit
logout
[root@localhost ~]# su - tuser
Last login: Tue Oct 16 09:18:01 CST 2018 on pts/2
[tuser@localhost ~]$ ulimit -n
1048576

再次执行./a.out文件

file_name:./filedir/f_99995
==fd:99998==
Opened 99996 files
file_name:./filedir/f_99996
==fd:99999==
Opened 99997 files
file_name:./filedir/f_99997
==fd:100000==
Opened 99998 files
file_name:./filedir/f_99998
==fd:100001==
Opened 99999 files
file_name:./filedir/f_99999
==fd:100002==
Opened 100000 files

linux打开文件数测试的更多相关文章

  1. linux 打开文件数 too many open files 解决方法

    linux 打开文件数 too many open files 解决方法 too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户 ...

  2. Linux 打开文件数

    linux设置最大打开文件数 - daiyudong2020的博客 - CSDN博客 https://blog.csdn.net/daiyudong2020/article/details/77828 ...

  3. ulimit open files linux打开文件数设置验证

    #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h ...

  4. linux 打开文件数too many open files解决方法

    出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值.查看每个用户最大允许打开的文件数量ulimit -a 其中 open files (-n) 1024 表示每个用户最大允许打开的 ...

  5. (转)linux 打开文件数 too many open files 解决方法

    too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户最大允许打开文件数量 ulimit -a fdipzone@ubuntu: ...

  6. linux系统工程师修改打开文件数限制代码教程。服务器运维技术

    提示linux文件打开错误,修改linux打开文件数参数. /etc/pam.d/login 添加 session required /lib/security/pam_limits.so 注意看这个 ...

  7. 放开Linux内核对用户进程可打开文件数和TCP连接的限制

    一. 检查linux内核uname -alsb_release -a 二. 用户进程可打开文件数限制1) vim /etc/security/limits.conf*       -      nof ...

  8. 在Linux最大打开文件数限制下 MySQL 对参数的调整

    http://www.actionsky.com/docs/archives/78  2016年4月7日  周文雅 目录 1 起因 2 说明 3 MySQL调整参数的方式 3.1 计算 request ...

  9. 调整Linux最大打开文件数

    #!/bin/bash ## 文件数限制 ulimit -n ulimit -Sn ulimit -Hn ## fs.nr_open,进程级别 ## fs.file-max,系统级别 ## 最大文件描 ...

随机推荐

  1. Citrix 虚拟化 最小化后无法最大化

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWI\创建DWORD类型键值:SeamlessFlags    ...

  2. asp.net Page.Controls对象(找到所有服务器控件)

    前台 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...

  3. 洛谷P1065 作业调度方案

    P1065 作业调度方案 题目描述 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作 ...

  4. [Xcode 实际操作]五、使用表格-(3)设置UITableView单元格图标

    目录:[Swift]Xcode实际操作 本文将演示如何给表格行设置图标. 打开资源文件夹[Assets.xcassets], 在资源文件夹中导入两张图片:一张彩色,一张灰色,作为单元格的图标. [+] ...

  5. Mac 安装flutter 踩坑记

    完整版请看链接: http://b36d5043.wiz03.com/share/s/2Prl132RpQ3x2XpA4I2oTa2204K0FF0vB4J42tWIEQ04UrAg 首先下载flut ...

  6. scrapy框架爬取蜂鸟网的人像图片

    今天有点无聊,本来打算去蜂鸟网爬点图片存起来显得自己有点内涵,但是当我点开人像的时候就被里面的小姐姐所吸引了,下面就是整个爬图片的思路和过程了 第一步:先创建一个爬虫项目 scrapy startpr ...

  7. thinkphp5.1 使用第三方扩展类库

    此案例介绍的不是通过composer加载的,是手工下载放入extend目录下的扩展类库,仍然以phpspider为例 将owner888目录放入extend目录下,也可以直接将phpspider目录放 ...

  8. POJ1024 Tester Program

    题目来源:http://poj.org/problem?id=1024 题目大意: 有一个迷宫,迷宫的起点在(0,0)处.给定一条路径,和该迷宫墙的设置,要求验证该路径是否为唯一的最短路径,该种墙的设 ...

  9. CCF201809(Java)

    第一题: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自 ...

  10. poj 2348 Euclid's Game

    题目: 给两个整数a和b,两个人先后用较大的数减去较小数的整数倍,并且保证相减后为非负数.先把一个数变为0的人获胜. 分析: 很显然,当大数是小数的整数倍时为必胜态. 从这道题学会一个叫做自由度的东西 ...