• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux创建进程达到65535的方法

    Linux上创建进程据说消耗很少,这个一直是Linux的特点,于是就专门测试Linux创建进程的极限,测试代码如下:

    //fork.c
    #include <unistd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #define MAXPROCESS 65535
    #define SLEEPTIME 60
    int main(int argc, char **argv) {
      pid_t pid;
      int count = 0;
      int maxprocess = MAXPROCESS;
      if (argc == 2) {
        maxprocess = atoi(argv[1]); 
      }
      for (count = 0; count < maxprocess; count++) {
        pid = fork();
        if (pid < 0) {
          perror("fork error");
          exit(1);
        } else if (pid == 0) {
          printf("child %d start\n", count);
          sleep(SLEEPTIME);
          printf("child %d end\n", count);
          exit(0);
        } 
        printf("parent:create %d child\n", count);
      }
      for (count = 0; count < MAXPROCESS; count++) {
        wait();
      }
      exit(0);
    }

    这段代码是不断创建子进程,默认是创建65535个进程,如果无法创建,就打印出错误。

    测试代码是我新建的一个blue帐户进行运行测试,为了让进程尽可能创建多的进程,首先要设置blue帐户创建进程数的硬限制

    使用root帐户修改/etc/security/limits.conf文件,加入一下行:

    blue             hard    nproc          65535

    然后为blue帐户设置创建进程的软限制,在终端执行如下代码:

    ulimit -u 65535

    到了这里,虽然我们设置blue帐户创建进程数的硬限制和软限制都是65535,但是我们还不能使用blue帐户创建65535个进程,我们在Linux还需要设置内核参数kernel.pid_max,这个参数我默认安装都是32768,所以即使使用root帐户,却不设置这个内核参数,整个系统最多可以创建的进程数就是32768,所以我们需要进行如下设置:

    sysctl -w  kernel.pid_max=65535

    备注:如果是使用root帐户执行程序,是不需要设置资源的硬限制和软限制,但是还是需要设置进程pid最大值的内核参数,才可以创建65535个进程。

    接着在同一终端切换为blue帐户:

    su blue

    编译和执行测试代码:

    gcc fork.c -o fork
    ./fork

    我的虚拟机Linux内存是512M,在创建6千多个进程时,程序运行得很慢,通过vmstat命令观察,发现swap内存的置入置出很频繁,可以判断是由于内存不足,使用虚拟内存,导致频繁的IO操作,让测试代码变得很慢,所以创建过多进程时,系统的内存是重要衡量的一个方面。

    后来我把测试代码放到一台配置比较好的至强服务器测试,内存是8G,在创建接近4W个进程时,程序的运行也到了瓶颈,依然是内存的瓶颈。

    测试代码中,创建的子进程,占用的内存相当小,实际使用中,只可能比测试代码创建的进程使用更多的内存,所以相应的,同样配置的机器,能创建的可用进程应该是更少的。

    总结

    以上所述是小编给大家介绍的Linux创建进程达到65535的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    上一篇:详解linux系统下pid的取值范围
    下一篇:SSH 上传文件及文件夹到linux服务器的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    Linux创建进程达到65535的方法 Linux,创建,进程,达到,65535,