CPU|NGINX为何能后来居上

CPU|NGINX为何能后来居上

【CPU|NGINX为何能后来居上】之前我介绍过NGINX的三个使用场景 , 这篇我为大家分析下NGINX出现的原因和它的历史背景 。
我个人认为NGINX出现的原因主要是互联网上的数据快速增长 , 这主要是全球化和物联网的快速发展 , 导致接入互联网中的人与设备的数量都在快速上升 , 数据的快速爆炸对我们的硬件、性能提出了很高的要求 。
而提到硬件 , 可能大家都知道摩尔定律 , 那么之前我的服务跑在1GHz的CPU上 , 当一年半以后 , 我更新到2GHz的CPU时 , 我可以预测到我的服务会有两倍的性能提升 , 但是到了本世纪初 , 摩尔定律在单颗CPU的频率上已经失效了 , CPU开始向多核方向发展 。
这个时候 , 当你的服务器现在还跑在8核CPU上时 , 一年半以后你换到了16核CPU , 你的服务的性能通常是不会有一倍的提升的 , 那么这些性能究竟损耗在哪里呢?
那么在我看来 , 主要是操作系统和大量的软件没有做好服务于多架构的准备 。 比如说像Apache , 我认为Apache是低效的 , 因为它的架构模型里 , 一个进程同一个时间只会处理一个连接一个请求 , 只有在这个请求处理完以后才会去处理下一个请求 , 这有什么潜台词呢?
它实际上在使用操作系统的一个进程间切换的一个特性 , 因为操作系统微观上只有有限的CPU , 但是 , 操作系统被设计为同时服务于数百甚至上千的进程 , 而Apache呢 , 一个进程只能服务于一个连接的模式 , 会导致当APACHE需要面对几十万、几百万连接的时候 , 它没有办法去开几百万的进程 。
而进程间的切换代价成本又太高了 , 当我们并发的连接数越多 , 这种无谓的进程间切换引发的消耗就也就越大 , 而NGINX是专门为了这种应用场景而生的 。

NGINX可以处理数百万甚至上千万的并发连接 , 我们可以看一下右边这张图 , 这是在2017年12月份发布的WEB服务器市场份额图 , 可以看到NGINX这条绿色的曲线有一个快速的上升 , 虽然到现在它只是WEB市场份额排名第二 , 但是大家需要考虑到在存量的市场中通常我们不会去更换已经在稳定运行的WEB服务器 。
所以实际上虽然APACHE还远远领先于NGINX , 但是一般新增的WEB服务器都是在使用NGINX来处理 。
以上仅代表我个人观点 , 还请多多指教 。

    相关经验推荐