为什么用nginx?

        不知道什么时候,nginx忽然火起来了,之前还很小众的感觉,现在虽然事实还是小众(老大还是apache),可是无论是面试还是实际使用中,越来越多的企业开始使用php-nginx-mysql的组合。

        nginx是什么呢?

        Nginx】什么是Nginx?为什么使用Nginx?

        这里写的还是比较清楚的。用了那么久的apache,究竟apache和nginx有什么优缺点呢?

        Apache与Nginx的优缺点比较

        别人既然都说过了,看看就好,没必要复制了。

        总结起来,就是尽管apache性能稳定,bug少,模块多,但是从如今的大环境来说,网站的量级越来越大,动不动就要负载均衡,就要分库分表,就要分布式布局,数据库集群等等的牛逼操作,显然大访问量,大处理量,是当今网站的主流方向,传统的apache处理方式,效率有些欠缺。而这些操作所要面临和解决的一个问题就是“高并发”。

        所谓并发,指的是一秒钟,服务器所要处理的请求,对于小型网站来说,性能瓶颈,可能主要集中在带宽问题上,租用一个服务器或者空间,带宽一般都是10兆以内,平时正常访问,并没有什么问题,因为一天的访问量分配到每一秒钟,能够临到的处理量很有限,甚至可能平均不到一秒处理一个请求。而对于超大型网站,带宽显然已经不是问题。就像你去找村长办事,当他家大门只够两个人同时通过的时候,有100个人要找他办事,可是一下只能进入2个人,这就限制了解决问题的速度,于是加大村长家的大门的宽度,而大门已经宽到可以一百个人同时进入的时候,这时候,限制处理速度的已经不是“大门(带宽)”,而是村长的处理问题的能力(服务器)了。如果我们把apache服务器起个别名叫做:老村长,nginx起个别名,叫做:新村长。老村长处理问题的方式是这样的:村民进入村长家以后,都拥挤在一起,老村长处理完第一个人的问题,再去处理第二个人的问题,第一个人的问题没有处理完的时候,第二个人、第三个人、第四个人、第n个人都要等着,直到第一个人的问题处理完毕,然后开始第二个人,直到所有问题处理结束。而新村长的处理方式是这样的:第一个人把问题交给村长以后,村长叫来秘书1号(线程),去处理A的问题,然后不用等秘书1号解决完这个问题,直接接过第二个人的问题,并且交给秘书2号去处理,不用管秘书2号是否解决完第二个人的问题,直接接过第三个人的问题……

        老村长apache处理问题,稳妥,保证了每一个问题的解决成功率,但是效率低下,在服务器的处理方法中这叫做“同步阻塞式”(主动关心处理结果,并且等待处理结果)。而新村长nginx,并不关心处理结果,等秘书们处理完了问题,过来通知一下就好了。这样并不能保证处理结果的正确性但是速度很快,服务器处理中叫做“异步非阻塞式”(不关心处理结果,不等待处理结果)而apache等待处理结果的阶段,cpu资源被闲置,并且每一个请求都要占用一个进程,,每个进程内单线程,apache最多能创建256个进程,进程又要占用内存。而nginx,多个请求占用一个进程,非阻塞式运行方式,没有等待处理结果的时间,cpu得到充分利用。

        虽然,apache升级以后,可能处理方式不再是一个请求建立一个进程的方式,但是从整体效率来讲,nginx依然是领先很突出。

        在如今,更加追求效率的环境中,nginx更优秀的处理高并发,低消耗的特点。成功吸引力大批企业的眼球。是处理大并发,反向代理,负载均衡需求的优秀选择

猜你喜欢

转载自blog.csdn.net/yuexiage1/article/details/80133220
今日推荐