zoukankan      html  css  js  c++  java
  • redhat5 和redhat6 root用户不同的ulimits

    以前一直都是用redhat5,redhat6也处于测试阶段,当然也遇到了很多奇奇怪怪的问题,比如之前写的一篇博客,当时候是用root启动了mysqld_unsafe,在mysql的QPS到1W以上后,会出现ERROR 1135 (HY000): Can’t create a new thread (errno 11); 当时候的解决办法是用mysql用户来启动就解决了问题。但因为在系统重启后,如果用sudo  -u mysql来启动的话,脚本会被卡主。

    这个问题今天得到了一个稍微深入一点的结论。

    首先我们看看这个错误

    ERROR 1135 (HY000): Can’t create a new thread (errno 11);
    
    if you are not out of available memory,
    
    you can consult the manual for a possible OS-dependent bug

    google类似Can’t create a new thread的错误后,得到的结论是文件描述符不够用,检查了vim /etc/security/limits.conf   的设置,是正常的

    vim /etc/security/limits.conf
    
    得到的结果是
    
    root    soft    nofile  65535
    
    root    hard    nofile  65535
    
    admin   soft    nofile  65535
    
    admin   hard    nofile  65535
    
    # End of file
    
    mysql   soft    nproc   65536
    
    mysql   hard    nproc   65536
    
    mysql   soft    nofile  65535
    
    mysql   hard    nofile  65535
    但观察了sudo -u root bash -c " ulimit -a " 后,得到 max user processes   (-u) 1024
    core file size          (blocks, -c) 0
    
    
    
    data seg size           (kbytes, -d) unlimited
    
    
    
    scheduling priority             (-e) 0
    
    
    
    file size               (blocks, -f) unlimited
    
    
    
    pending signals                 (-i) 385957
    
    
    
    max locked memory       (kbytes, -l) 64
    
    
    
    max memory size         (kbytes, -m) unlimited
    
    
    
    open files                      (-n) 65535
    
    
    
    pipe size            (512 bytes, -p) 8
    
    
    
    POSIX message queues     (bytes, -q) 819200
    
    
    
    real-time priority              (-r) 0
    
    
    
    stack size              (kbytes, -s) 10240
    
    
    
    cpu time               (seconds, -t) unlimited
    
    
    
    max user processes              (-u) 1024
    
    
    
    virtual memory          (kbytes, -v) unlimited
    
    
    
    file locks                      (-x) unlimited
    max user processes              (-u) 1024 和 sudo -u root bash -c " ulimit -u "  一样,都是得到1024的结果
    sudo -u root bash -c " ulimit -u "
    
    1024

    而在redhat5里面,只要在/etc/security/limits.conf  设置了root    soft    nofile  65535 和root    hard    nofile  65535,对应的uilmit  -u 就会是65535.

    和@维西v @tb天羽 搞了几个小时,依然没法成功修改root用户的 max user processes到65535 。后来发现了一篇文章 Know your limits (ulimits)  ,提及到redhat6新增了/etc/security/limits.d/90-nproc.conf,里面的内容是

    # Default limit for number of user's processes to prevent
    
    
    
    # accidental fork bombs.
    
    
    
    # See rhbz #432903 for reasoning.
    
    
    
    *          soft    nproc     1024

    redhat6下面,root用户使用ulimit -u没法修改

    * soft nproc 1024的意思是任何用户的最大max user processes为1024个,其他用户可以通过ulimit -u来修改 ,但root用户则修改不成功,我们这里看一个例子

    [yingyuan.ydh@my031226 ~]$ cat /etc/security/limits.d/90-nproc.conf
    
    
    
    # Default limit for number of user's processes to prevent
    
    
    
    # accidental fork bombs.
    
    
    
    # See rhbz #432903 for reasoning.
    
    
    
    
    
    *          soft    nproc     1024
    
    
    
    [yingyuan.ydh@my031226 ~]$ ulimit -u
    
    
    
    1024
    
    
    
    [yingyuan.ydh@my031226 ~]$ ulimit -u 65535
    
    
    
    [yingyuan.ydh@my031226 ~]$ ulimit -u
    
    
    
    65535
    
    
    
    [yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c " ulimit -u 65535"
    
    
    
    [yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c " ulimit -u "
    
    
    
    1024
    

    很明显,在redhat6的/etc/security/limits.d/90-nproc.conf限制下,个人用户可以修改ulimit-u,但root用户没法修改。 解下来,我们把etc/security/limits.d/90-nproc.conf改掉,会看到root的ulimit -u 可以修改成功

    [yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c " ulimit -u 65535"
    
    
    
    [yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c " ulimit -u "
    
    
    
    65535
    
    
    
    [yingyuan.ydh@my031226 ~]$ cat /etc/security/limits.d/90-nproc.conf
    
    
    
    # Default limit for number of user's processes to prevent
    
    
    
    # accidental fork bombs.
    
    
    
    # See rhbz #432903 for reasoning.
    
    
    
    
    
    *          soft    nproc     65535

    结果

    在成功修改了root用户的max user processes后,继续使用root用户启动mysqld_safe脚本,稳定运行了一个下午,一切正常。

    思考

    为什么redhat6要做新增一个文件的限制,而不是继续沿用redhat5的方式来管理? 在微博上面发了一条简单的描述,引起很多人的讨论。

    http://weibo.com/1642466057/y3jM4cz3q

  • 相关阅读:
    树状数组基本操作
    P1802 5倍经验日 题解
    函数学习总结
    康托展开
    中国电信CDMA无线上网卡短信收发
    报错:无法获取实体类XXX对应的表名!
    javajvisualvm远程监控云服务器上的Tomcat8.5
    服务器防火墙开放端口
    报错:列"AGENT_ENTITY_NAME"的值太大(实际值: 60,最大值50) oracle VARCHAR2和NVARCHAR2的区别
    linux中查看端口是否被占用lsof i:port
  • 原文地址:https://www.cnblogs.com/simplelogic/p/2804845.html
Copyright © 2011-2022 走看看