美文网首页ROS
Linux问题 open too many files

Linux问题 open too many files

作者: Savior2016 | 来源:发表于2017-09-24 18:37 被阅读12次

    林子大了就什么鸟都有,最近第一次进行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

        本文链接:https://www.haomeiwen.com/subject/vnxlextx.html