Linux创建进程达到65535的方法
作者:ggjucheng 发布时间:2023-10-10 09:34:11
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的方法,希望对大家有所帮助
来源:https://www.cnblogs.com/ggjucheng/archive/2012/02/10/2344961.html


猜你喜欢
- 1.Nginx的简单说明a. Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,期初
- 自从唐骏先生出任金和软件董事之后,媒体记者问得我最多的问题是:金和软件接下来还要做什么?我要说的是,金和有很多事情会引起大家关注,有的事情还
- 作为网站的业务管理者,在欣赏自己为客户提供的丰富业务和趣味性体验时,你是否曾经想过网站会成为攻击者攻击第三方的媒介,从而导致公信度大为受损?
- 10月10日消息,据南方都市报报道,新闻出版总署有关负责人昨日表示,10月份新闻出版总署将集中力量联合组织一次对网络游戏审批和运营服务的全面
- ldd 查看程序依赖库ldd作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。示例:查看test程序运
- 高效管理服务器一直离不开有效的服务器管理技巧,笔者总结工作经验,提炼出3个小技巧,与读者共享。拒绝服务器重新启动一般情况下,在Windows
- samba服务器类似于windows上的文件共享,通过//ip地址访问文件配置ip地址 (教程:https://www.jb51.net/a
- 默认情况下windows2003是没有安装的,我们必须手工添加。POP3服务组件在“添加/删除windows组件—电子邮件服务”下,它共包括
- 问题描述调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词。代码如下# 传参脚本 test
- LoveBlogEarn 同学在博客留言,说到域名转发是不是能提高PR?因为sinoblog.net这个域名就是转发到sinoblog.or
- 大家慢慢的都开始知道软文在网络营销里的重要性,但是大部分的同学还停留在知其然而不知其所以然的阶段。写一篇与众不同又可以受到关注的软文是需要一
- 实践证明,基于Windows NT 的Exchange Server并不是企业级电子邮件系统的最佳选择。由于对稳定性等性能要求非常高,因此大
- WIN2003 IIS --> 右键 --> 所有任务 --> 备份/还原配置 备份后文件会保存在 %WINDIR%\sy
- SQL注入式攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql命令以及进行其他方式的攻击 。动态生成Sql命令时没有对用户输入的数据进
- web应用服务器集群系统,是由一群同时运行同一个web应用的服务器组成的集群系统,在外界看来,就像是一个服务器一样。为了均衡集群服务器的负载
- 如果臧家宜不是在故弄玄虚,扰乱视听,那郭台铭的风光日子可能即将到头。在台湾,鸿海的股价已经因自家掌门人 * 被查的消息而受挫,即便爆料者已经因
- Godaddy主机建立、升级、降级共享主机帐户所需时间分Linux及Windows而论的。Linux • 你的Linux共享托管帐户的初始设
- 您在生成广告代码的过程中,会有一个步骤是选择广告单元的格式,这一步骤非常关键。不同的广告格式效果差异非常大,选择好的广告格式可以显著提高您的
- 在生产中可能会由于误操作而删除了某一用户的家目录,这时就需要把用户的家目录安装创建新用户时的模板文件,再恢复并且要跟之前的权限相同。1. 创
- 核心提示:用 Analytics 分析用户在站内的搜索行为,很简单但数据的参考作用较大。这次在石互动2008上海SEO大会上讲到通过“分析用