Linux问题 open too many files

林子大了就什么鸟都有,最近第一次进行2000多个设备的网络连接,没有经验,很多小问题都被放大了。今天遇到了题目上这个问题,大意就是我打开的文件超过了系统限制,在这里做一些记录
ROS我又在学了,时间比较零星,会再更新那个文集的

1 打开的文件要记得不用了就关上

比如读取ini配置文件,可以参考以下代码

  /********下面是写ini文件*************************/
    //Qt中使用QSettings类读写ini文件
    //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
    QSettings *configIniWrite = new QSettings("HouseManager.ini", QSettings::IniFormat);
    //向ini文件中写入内容,setValue函数的两个参数是键值对
    //向ini文件的第一个节写入内容,ip节下的第一个参数
    configIniWrite->setValue("/ip/value", "127.0.0.1");
    //向ini文件的第一个节写入内容,ip节下的第二个参数
//    configIniWrite->setValue("ip/second", "127.0.0.1");
    //向ini文件的第二个节写入内容,port节下的第一个参数
    configIniWrite->setValue("/port/value", "3306");
    configIniWrite->setValue("/databasename/value", "HouseManager");
    configIniWrite->setValue("/username/value", "root");
    configIniWrite->setValue("/password/value", "123456");
    //写入完成后删除指针
    delete configIniWrite;
    /************下面是读取ini文件*******************/
    QSettings *configIniRead = new QSettings("HouseManager.ini", QSettings::IniFormat);
    //将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
    QString ip = configIniRead->value("/ip/value").toString();
    QString port = configIniRead->value("/port/value").toString();
    QString databasename = configIniRead->value("/databasename/value").toString();
    QString username = configIniRead->value("/username/value").toString();
    QString password = configIniRead->value("/password/value").toString();
    //打印得到的结果
    qDebug() << ip;
    qDebug() << port;
    qDebug() << databasename;
    qDebug() << username;
    qDebug() << password;
    //读入入完成后删除指针
    delete configIniRead;

2 每个用户最大允许打开文件数量查看和配置

2.1 查看

指令:

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) 63679
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 40960
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) 63679
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

open files (-n) 40960
就是对打开文件数量的限制。

2.2 配置

指令:

ulimit -n 2048

你可能感兴趣的:(Linux问题 open too many files)