问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nginx比apache处理静态文件速度快,但是nginx处理大量并发的php请求时...

发布网友 发布时间:2022-04-25 17:51

我来回答

4个回答

懂视网 时间:2022-04-06 09:51

PS:前段时间配置php-fpm的时候,无意中发现原来它还有两种进程管理方式。与Apache类似,它的进程数也是可以根据设置分为动态和静态的。

php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本。在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php.ini一样的配置风格。
在5.2.x版本中,php-fpm.conf中对于进程管理号称是有两种风格,一种是静态(static)的,一种是类似于apache风格(apache-like)的。

相关学习推荐:php编程(视频)

代码如下:

Process manager settings
<value name=”pm”>
Sets style of controling worker process count.
Valid values are 'static' and ‘apache-like'
<value name=”style”>static</value>

按照文档的说明,如果pm的style采用apache-like,启动的进程数应该是和StartServers指定的一样。不过经过数次的尝试,会发现,实际上在这里将pm的style配置成apache-like没有起任何作用。也就是说,这里的apache-like并没有被实现。
不过,在最新的5.3.x的配套php-fpm中,apache风格的进程管理已经被实现了。

代码如下:

; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives:
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; Note: This value is mandatory.
;pm = dynamic
pm = static

由上面一段文字可知,对于进程的管理存在两种风格——static和dynamic。和之前的版本的进程管理其实还是一样的,只是将apache-like改成了dynamic,这样更容易理解。

如果设置成static,php-fpm进程数自始至终都是pm.max_children指定的数量,不再增加或减少。
如果设置成dynamic,则php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加,保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于pm.max_spare_servers。

这两种不同的进程管理方式,可以根据服务器的实际需求来进行调整。

这里先说一下涉及到这个的几个参数,他们分别是pmpm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers
pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。

下面4个参数的意思分别为:

代码如下:

pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。

那么,对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。
对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。

数量也可以根据 内存/30M 得到,比如8GB内存可以设置为100,那么php-fpm耗费的内存就能控制在 2G-3G的样子。如果内存稍微小点,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。

对于小内存的服务器来说,比如256M内存的VPS,即使按照一个20M的内存量来算,10个php-cgi进程就将耗掉200M内存,那系统的崩溃就应该很正常了。因此应该尽量地控制php-fpm进程的数量,大体明确其他应用占用的内存后,给它指定一个静态的小数量,会让系统更加平稳一些。

或者使用动态方式,因为动态方式会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。

热心网友 时间:2022-04-06 06:59

为什么Nginx的性能要比Apache高得多?

    这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
  处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
  假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。

为什么会出现502错误呢?

nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。优化php-fpm,优化代码,加大内存才是解决502的根源。

10000并发的话,nginx的表现怎么样?

2009年9月3日下午2:30,金山游戏《剑侠情缘网络版叁》临时维护1小时,大量玩家上官网,论坛、评论、客服等动态应用Nginx服务器集群,每台服务器的Nginx活动连接数达到2.8万。

热心网友 时间:2022-04-06 08:17

首先要明确一点的是502是怎么出现的,为什么会出现502呢?

一般而言,出现502的错误是因为php-cgi连接数不够导致的。
举个例子:
php-cgi开10个进程,前端发20个请求,每个请求的脚本都sleep100s,那么必然有至多10个请求会出现502错误。因此,出现502是因为php进程不够用了,和nginx没有多大关系。

如果非要是找出这种502错误的比例,需要综合考虑:
1后端php-cgi的进程数,
2php-cgi对请求的处理时间,
3nginx的并发量,
要解决502也很容易,加大php-cgi的进程数。这里又三种方式:
1增加nginx的upstream,其中upstream中为php-cgi的地址;
2利用nginx作为反向代理,分支法解决并发量;
3增加php-cgi的进程数,(这里会受到机器资源的*,因此,也并不能无限增加)

热心网友 时间:2022-04-06 09:52

这个也挺难说的 用ab测试几十万并发也没问题,但是老是存在php-fpm处理延迟。
最好还是多点静态的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
冬季开什么花的名字 石竹梅多久浇一次水 石竹梅插花能开多久 鲜花插石竹梅能开多久? 孤弘是什么意思什么生肖? 春弘是什么意思什么生肖? 电脑桌面右下角图标不见了怎么办? 超声刀美容后有什么注意事项? 做完超声刀可以化妆吗 超声刀美容后该怎么护理皮肤? 女生为什么说我很凡尔赛? 一个nginx节点能支撑多少访问请求 在linux使用nginx中的NginxHttpLimitZoneModule*IP的连接数,结果没有效果,求助? nginx做反向代理,当并发数大一点时网站会报502 Bad Gateway,是什么原因导致的? 黑苹果Nvidia免驱显卡黑屏怎么解决 黑苹 如何nginx服务器最大请求次数 苹果5s跳出设置升级 我点了 升到一半我强制关机 就开不了机了 开机白屏黑苹 windows下跑nginx如何有效扩大最大连接数问题 本人苹果手机黑屏,ID号和密码也忘了。有大师能修吗 nginx能扛得住5万并发,那更大呢,怎么办 如何实现百万级的后台服务器并发压力测试 我的iPhone5s开不了机开机蓝屏然后再来 过后震动又来就是开不了一直黑苹 最防摔的苹果6s5.5寸黑色苹手机壳 苹果iPhone6 Plus黑名单怎么设置 苹黑6背夹电池怎么不给手机充电 iphone6经常自己黑屏然后出现一个白色苹果logo过一会又自动黑屏,然后继续出现黑色屏幕白色苹 苹果6摔了一下、屏幕遂了,过了几天,自然开不了机,只显示一个黑苹 苹果6总是出现开机画面然后黑屏 然后不断重复 充电也没用 屏幕是... 跪求adobe acrobat pro dc 破解版 Adobe Acrobat DC破解版 adobe acrobat dc破解版能登陆吗 nginx怎么实现单应用的并发连接数*啊??是面向应用的~~~求高手指点~~!! 我的vivoV3手机在刷机的时候为什么还要密码,我密码是真的忘了啊,怎么办? vivov3手机刷机以后密码不记得怎么办 vivov3maxa刷机成功后黑屏 自己用手机怎么开通快捷支付 条件缺乏的情况下如何把手机支起来? 如何用手机完成支付? 现在很多人都用手机付款 要怎么做 荣耀60怎么设置bongo铃声 火药消焰剂是什么 炮口为什么要装消焰器? &#39;华为手机声音什么都设置,怎么还会出现锁车铃声? 坦克炮口比较大的那个你们说是制退器,那我听有人说是消焰器。到底是什么啊!?难两者一样? 为什么华为手机长按电源键时,没有出现声音bongo 消焰器的区别 荣耀手机上出现的猫叫声是怎么 消焰器的产生原理 怎么下载手机自带的铃声?我另一个手机要那个铃声!怎么才能下载?是华为g730-u00的铃声bong 器,消焰器,和消音器哪个好 vivo手机不是系统声音该有那个bongo吗?