今天看到apache 接受请求后 进程分配问题 记录一下
apache 在启动时 会根据配置文件创建 空闲进程 并不是来一个请求 创建一个进程 而是 每次创建固定的进程;
假如为5 那么当apache启动时就会创建5个空闲的进程 当有一个请求时让让一个进程处理 这时候就只有4个空闲进程,
当同时有6个请求 时 apache 因为5个空闲进程全部在处理任务 就会再次创建5个进程 以此类推
其中 apache 根据配置文件可以 设置 最大空闲进程 和最小空闲进程 及 最大进程数
每一个进程 处理完4000个请求 就会被释放 防止内存泄漏
假如 一个请求让进程1处理 处理完成 后 又一个请求 那么还是进程1处理 以此类推 进程1一直处理 不释放的话 就会有可能造成内存一直占有问题 ;
详细 文章 讲解 转载别人的
作者:酒窝
链接:https://www.zhihu.com/question/23786410/answer/153455460
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
prefork工作模式是linux下apache安装时候的默认工作模式,是使用最普遍的工作模式。为了能够简单的明白他的工作原理,下面是一个假设:有一台正在运行的apache服务器,用户A访问该apache的时候apache建立一个新的进程1处理用户A的请求。这时又有一个用户B访问该apache,apache又建立一个新的进程2处理用户B的请求。后来又有用户C,D,E访问该apache,apache又建立三个进程3,4,5处理他们的请求。如果每当一个新用户访问该apache,apache再建立一个新的进程处理用户的请求,是不是太慢了呢?所以apache的prefork模式在apache第一次启动的时候就建立5个进程,等待用户的连接请求,有一个用户访问,就有一个进程处理他的请求。那么如果有5个用户同时访问apache,apache第一次建立的5个进程全部用光了,所以apache就再从新在建立5个进程,等待下一批用户的请求。prefork模式会根据服务器的硬件情况,设定apache最多只能同时建立256个进程。再多的请求就只能等待前面的进程处理完毕在进行处理。假设完毕!上面的假设就是prefork模式的工作原理。但是上面假设中具体的数字不是定死的,而是通过prefork模式的配置来设置的。下面是http.conf中的配置信息。
*带井号的为注释部分prefork模式的几个重要的参数