• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • uos系统ulimit工具使用

    在第三方适配时,例如对设备性能要求和系统资源占用限制需要调整,ulimit就排上了用场

    ulimit命令使用


    
    Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置linux用户的最大进程数
    
          可以用ulimit - a来显示当前的各种用户进程限制
    
          下面我把某Linux用户的最大进程数设为10000个
    
                       ulimit -u 10240
    
                      对于需要做许多socket连接并使它们处于打开状态的java应用程序而言,
    
                      最好通过使用ulimit -n xx修改每个进程可打开的文件数,缺省值是1024
    
                      ulimit -n 4096将每个进程可以打开的文件数目加大到4096,缺省是1024
    
           其他 建议设置成无限制(unlimited)的一些重要设置是:
    
                    数据段长度:ulimit -d unlimited
    
                    最大内存大小:ulimit -m unlimited
    
                    堆栈大小:ulimit -s unlimited
    
                    cpu时间:ulimit -t unlimited
    
                    虚拟内存:ulimit -v unlimited
    
            还有一些常用的选项如下:
    
                    ulimit -Hs 64:硬限制资源,线程栈大小为64k
    
                    ulimit -Sn 32:软限制资源,32个文件描述符
    
                    ulimit -a:显示当前所有limit信息
    
                    ulimit -c unlimited:对生成的core文件大小不进行限制
    
                    ulimit -f 2048:限制进程可创建的最大文件大小为2048blocks
    
                    ulimt -i 32:限制最大可加锁内存大小为kbytes
    
                    ulimit -p 512:限制管道缓冲区的大小为512kbytes
    
                    ulimit -u 64:限制用户最多可以使用64个进程
    
              注意:这个当中的硬限制是实际的限制,而软限制,是warning限制,只会做出warning;其中ulimit命令本身就有分软硬设置,默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变  
    

    uos系统中配置ulimit限制资源,桌面系统修改limits.conf主配置文件:/etc/security/limits.conf,服务器系统除了配置文件还要在/etc/profile里配置添加才能生效

    应用程序的启动脚本中


    
    编写个简单的启动脚本startmyapp
    
          #/bin/sh
    
          ulimit -n 512
    
          myapp.sh
    
       以这个startmyapp启动myapp.sh时,myapp.sh这个脚本打开的文件句柄数不超过512个
    

    直接控制台输入


    
     [root@web ~]#ulimit -p 512
    
        限制管道缓冲区为256k
    

    ulimit作为对资源使用限制的一种工作,ulimit限制的是当前shell进程以及其派生的子进程

    举例来说,如果用户同时运行了两个shell终端进程,只在其中一个环境中执行了ulimit -s 100,则该shell进程里创建文件的大小收到相应的限制,而同时另一个shell终端包括其上运行的子程序都不会受到其影响