linux php 进程初探(三)进程越多越好?

往期历史

1.linux php 进程初探(一)
2.linux php 进程初探(二) 并行与并发概念

进程越多越好?

  1. 前面提到多进程的并行可以提高并发度,那么进程是越多越好?一般遇到这种问题都回答不是,事实上,很多大型项目都不会同时开太多进程。下面以支持100K并发量的Nginx服务器为例。

  2. 举个例子: Nginx

  1. Nginx是一个高性能、高并发的web服务器,也就是说它可以同时处理超过10万个HTTP请求,而它建议的启动的进程数不要超过CPU个数,为什么呢?
  2. 我们首先要知道Nginx是Master-worker模型, Master 进程只负责管理Worker进程,而Worker进程是负责处理真实的请求。每个Worker进程能够处理的请求数跟内存有关,因为在Linux上Nginx使用了epoll这种多路复用的10接口,所以不需要多线程做并行也能实现并发。而多进程有一个坏处就是带来了CPU上下文切换时间,所以一味提高进程个数反而使系统性能下降。当然如,果当前进程小于CPU个数,就没有充分利用多核的资源,所以Nginx建议Worker数应该等于CPU个数。

特殊情况

我们想想进程数应该等于CPU数,但是如果进程有阻塞呢?

  1. 这时是应该提高进程数增加并行数的。
  2. 在Nginx的例子中,如果Nginx主要负责静态内容的下载,而服务器内存比较小,大部分文件访问都需要读磁盘,这时候进程很容易阻塞,所以建议提高下Worker数目。

绑定CPU

一般情况下除了确保进程数等于CPU数,我们还可以绑定进程与CPU,这就保证了最少的CPU上下文切换。在Nginx中可以这样配置。worker_processes 4; worker_cpu_affinity 1000 0100 0010 0001;这是通过系统调用sched_setaffinity()实现了,感兴趣大家可以自行学习这方面的知识。通过这个例子大家对进程的并发与并行应该有更深入理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值