1. 首页
  2. 编程语言
  3. Web开发
  4. 实战Nginx取代Apache的高性能Web服务器

实战Nginx取代Apache的高性能Web服务器

上传者: 2019-05-20 02:37:18上传 PDF文件 15.09MB 热度 21次
实战Nginx取代Apache的高性能Web服务器 pdf 带书签 完整版1.2Ngnx的发展域网)上发布信息成了一件很容易的事。它提供IAPI( Intranet Server APl)作为护展web服务器功能的编程接口;同时,它还提供一个 Internet数据库连接器,可以实现对数据库的查询和更新IS只能运行在 Microsoft Windows平台、 Linux/mix平台上,因此须要购买商业的 Window onServer操作系统。12 Nginx的发展nginx(“ engine x”)是俄罗斯人 Igor Sysoev(伊戈尔·塞索耶夫)编写的一款高性能的HTTP和反向代理服务器。nginx能够选择高效的epol(Linux2.6内核)、kqueue(FreeBSD)eventport( Solaris 1o)作为网络IO模型,在高连接并发的情况下, Nginx是 Apache服务器不错的替代品,它能够支持高达50000个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Nginx已经在俄罗斯最大的门户网站—Ramblermedia(www.rambler.ru)上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用 Nginx作为反向代理服务器。在国内,已经有新浪博客、新浪播客、网易新闻、六间房、56.c0m、 Discuz!官方论坛、水木社区、豆瓣、 YUPOO相册、海内SNS、迅雷在线等多家网站使用 Nginx作为Web服务器或反向代理服务器。图1-是 Netcraft公司统计的从1995年8月至200年1月各Web服务器的市场占有率曲线图。80Peh是M玉c护sotGoogl40g胃落莒莒是莒是莒县莒桌莒妾莒是莒妄莒妾莒妾莒喜莒妾莒喜图1-1Web服务器的市场占有率曲线图Www. TopSage,emx,4pahe的高性艘Meb服务器6第1章 Nginx简介2009年1月,对185497213个网站进行了抽样调查,发现除去 Google自己开发的仅供自己使用的GWS、GFE服务器外,排在前两位的分别是 Apache、 Microsoft iis,而 Nginx已经超过Lighttpd,位居第三,详见表1-l。表1-1 Nginx的市场占有率排名Web服务器200年12月占有率「2090年1月占有率占有率变化ache9567805251.249694729852.26%1.02%Microsoft IIs6312694033.81%6103837132910.90%Google10455103560%98688195.32%0.28%Nnx33543291.80%4625511.87%0.07%Lighttpd30463331.63%29894161.61%0.02%1.3选择Ngnx的理由选择 Nginx有如下一些理由。1.3.1它可以高并发连接官方测试 nginx能够支撑5万并发连接,在实际生产环境中可支撑2~4万并发连接数。这得益于 nginx使用了最新的 epoll( Linux2.6内核)和 kqueue( freebsd)网络Ⅳo模型,而 Apache使用的则是传统的 select模型,其比较稳定的 Prefork模式为多进程模式,需要经常派生子进程,所消耗的CPU等服务器资源要比 nginx高得多笔者曾完成6台 Web server从 Apache到 nginx服务器的迁移(这6台 Web server搭建的是个日均2500万PV的分类信息网站,迁移前每台服务器的平均系统负载为50~60、CPU使用率为70%~90%,迁移后平均系统负载为1~4,CPU使用率为20%~40%,见图1-2。tp-17:59:33 up 10 days,8:10,3te:13daea分:2,,2xt!xir层,239s:1epin升Le0.Ixhi,自.7配的:82300欣ta1,R乐06好73茸,5:!6bueSuap: 20. 1608k total5自$.20i1ee,1755自 cache图1-2迁移到 Nginx后的系统负载与cPU使用率图由此可见,处理大量连接的读写, Apache所用的 select网络Jo模型非常低效。Libevent(一个事件触发的网络库,适用于 Windows、 Linux、bsd等多种平台,内部使用 select、epol、 kqueue等系统调用管理事件机制)的一张测试结果图,对 select、epol、 kqueue等作了清实战Wmx:取代Apache的高性能eb锅Topsage.com3选择 Nginx的理由晰的对比,结果自然是epol( Linux26内核)和 kqueue( freebsd)胜出,见图1-3Libevent BenchmarkOne Active Connection1000010050001000025c00图1-3epol、 kqueue、 select等网络1O模型性能测试对比图图14显示了在实际的生产环境中, Nginx支撑高达28000的活动并发连接数。532::388802 -Nginx Cients Stat30k20k10k112011:4012:0012:20124013:0013:2013:401400142014:40150MActive Current: 16.63 k Average: 10.17k Max: 28.04 kReading Current: 22.97 Average 27.79 Max: 128. 90E waiting Current: 16.24 k Average: 9.93k Max: 2697kWRiting Current 367.33 Average: 217. 39 Max: 4.12 k图1-4生产环境下的 Nginx活动并发连接数据统计图1.32内存消耗少Nginx+PHP( FastcGI)服务器在3万并发连接下,开启的10个 nginx进程消耗150MB内存(15MB×10=150MB),开启的64个 php-cgi进程消耗1280MB内存(20MB×64=1280MB),加上系统自身消耗的内存,总共消耗不到2GB的内存。如果服务器内存较小,完全可以只开启25个php-cg进程,这样 php-cgi消耗的总内存数才500MB。用 Webbench做压力测试,在3万WWW.TopSage.e№mx,取代A3he的高性能Meb服务器8第1章 Nginx简介并发连接下,访问 Nginx+PHP( FastcGI)服务器的PHP程序,运行速度仍然飞帙。在实际的生产环境下,两台 Nginx+PHP5( FastCGI)服务器运行多个复杂性一般的纯PHP动态程序,从 nginx的日志可以统计出,单台 Nginx+PHPs( FastcGI)服务器处理PHP动态程序的能力已经超过“700次请求/秒”(见图1-5),相当于每天可以承受6000万(700×60×60×24=60480000)的访问量,而服务器的系统负载也不算高(见图1-6)。次/秒760740700+66服务器①req/s晉一服务器②re图1-5生产环境下的Ng门nx+PHP动态程序处理速度统计图55days,18:30,1日,1小3d如e其ge:3.93,4.4,4.7op- 15: 04: 42 1p running, 377 sleeping, 0 stepped, 0 zombieTa实:380tota1lem:419156oa1,3630113kue,5190小计ee,426201/Cpu(s):34.us.20.58sy,0.Kni:45.5id,0.Bwa,0.Dmhi:0.[r5p:2096440tota,3364k used, 2093078k free. 29377003: cachedP1S畎F潑LRSS§黟P鱻為巸艹和A2872w160853408252637657.60.20:0144php-eg:9247wu1601331610m34452.60.328:18.26ngin界整1501308410ma44s2.00.226:21.69 nert:26115085340828040051.70.20:01.的 ohp-cs22684w1608533682366312s261要15085340826863S0.20:00.94 ppca2732w150853448252637231.70.20:00.7php-cgi2827ungnuI603535282566380S1.70.20:00.56 php-cgi29246要E80133410244,1.30.223:37.50n:i图16生产环境下的Ngnx+PHP系统负载与CPU使用率图以下是这两台服务器的配置清单及运行的程序说明:服务器①: DELL PowerEdge I950(两个Ine(R)Xeon(R)双核CPU5120@1.86GHz,4GB内存)。服务器②: DELL Power Edge1950(一个Ine(R)Xeon(R)双核CPU5140@233GHz,4GB内存)。实战Nmx:取代0的高性能Mb取Topsage.com1.3选择 Nginx的理由9Web服务器: Centos linux44+ Nginx0.535+PHP526RC2(300 FastcGi Procees,unix-domain socket with XCache)PHP程序内容:大量 Memcached读写操作,少量 MySQL读操作,大量文件队列写操作。请求数统计方式:从 nginx访间日志中,统计每分钟的第15秒共有多少条日志记录。同等硬件环境下, nginx的处理能力相当于 Apache的5~10倍1.33成本低廉购买F5BiGP、 Net scaler等硬件负载均衡交换机需要十多万甚至几十万人民币。而 nginx为开源软件,采用的是2 clause bsD-like协议,可以免费使用,并且可用于商业用途。BSD开源协议是一个给使用者很大自由的协议。协议指出可以自由使用、修改源代码,也可以将修改后的代码作为开源或专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发时,须满足三个条件:(1)如果再发布的产品中包含源代码,则源代码中必须带有原来代码中的BSD协议。(2)如果再发布的是二进制类库/软件,则需要在类库软件的文档和版权声明中包含原来代码中的BSD协议。(3)不可以用开源代码的作者机构名字和原来产品的名字做市场推广。BSD代码鼓励代码共享,但须尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件,并迸行发布和销售,因此它是对商业集成很友好的协议。很多的公司、企业在选用开源产品的时候都会首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或二次开发。Nginx所采用的2- -clause bsd-like license衍生自BSD协议,也就是删掉了BSD协议的第3个条件—“不可以用开源代码的作者机构名字和原来产品的名字做市场推广1.34其他理由配置文件非常简单网络跟程序一样通俗易懂,即使非专业系统管理员也能看懂。支持 Rewrite重写规则能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。Www. Top Sage.e销№mx:代4pCh的高性能Wb猴务器10第1章 Nginx简介内置的健康检查功能如果 Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问。节省带宽支持GZP压缩,可以添加浏览器本地缓存的 Header头。稳定性高用于反向代理,宕机的概率微乎其微支持热部署Nginx支持热部署。它的启动特别容易,并且几乎可以7天×24小时不间断地运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级14Nginx与Apache、Lighttpd的综合对比表1-2是nginx与Apache、Lighttpd的综合对比情况。表1-2Nginx与Apache、Lighttpd的综合对比Web服务器NainxApacheLighttpd反向代理非常好般Rewrite规则非常好好好差FastCGI好非常好热部署支持不支持不支持系统压力比较很小很大稳定性非常好安全性般好好般般技术资料很少非常多一般静态文件处理非常好一般好虚拟主机支持支持支持内存消耗非常小很大非常小通过表1-2可以看出,Nginκ在反向代理、 Rewrite规则、稳定性、静态文件处理、内存消耗等方面,表现出了很强的优势,选用 nginx取代传统的 Apache服务器,将会获得多方面的性能提升实战Nmx:取代 Apache的高性能Web新部. TopSage.coTop Sage. com第2章nginx服务器的安装与配置21安装 Nginx服务器所需要的系统资源Nginx是开源软件,您可以从其官方网站(h/m. nginx. net//)下载最新版本。 Nginx目前有3个版本:旧的稳定版(0.6X)、最新的稳定版(0.7x)和开发版(0.8x)。0.8.x开发版分支刚发布不久,Bug会比较多,因此不建议用于生产环境。开发版一旦更新稳定下来,就会被加入稳定版分支。然而,新功能不一定会被加到旧的稳定版中去,所以,目前最合适使用的版本是07x。从0.7.52版本开始, nginx官方网站开始提供 Windows版本下载, Windows版本的 nginx使用比较简单,只须下载完成后,将其解压缩到一个不包含空格的路径中,执行 nginx.exe即可。但是, Windows版本的 Nginx性能要比 Linux/unix版本的 nginx差很多。本书重点介绍 Linux环境下的 Nginx编译安装。一些 Linux发行版和BSD的各个变种版本的安装包仓库中包含了编译后的二进制 nginx软件,很多预先编译好的安装包都比较陈旧,所以大多数情况下还是推荐直接从源码编译安装。安装 nginx服务器之前,首先要安装一个 Linux/Umx操作系统发行版,例如 Redhat、 Centos、Debian、 Fedora Core、 Gentoo、SUSE、 Ubuntu、 FreeBSD等。本书将以新浪、搜狐、网易、金山游戏官网等国内互联网公司最常用的 Linux发行版Centos为例,介绍 Nginx的安装与使用。 Centos是基于 RedHat Enterprise Linux源代码重新编译、去除 Redhat商标的产物,各种操作、使用和 Redhat没有区别。 Centos完全免费,修正了Redhat I的很多BUG,但 Centos不向用户提供技术支持,也不负任何商业责任。Www. TopSage将 nginx,取代 Apache的高性能Web服务器12第2章Ngnx服务器的安装与配置编译 Nginx的要求如下磁盘空间:需要保证有10MB以上的剩余磁盘空间。 Nginx安装完毕后会占据4MB左右的磁盘空间,实际的磁盘空间需求会因编译设置和是否安装第三方模块而有所不同GCC编译器及相关工具:GCC全称为 GNU Compiler Collection,是GNU社区推出的功能强大、性能优越的用于编程开发的自由编译器,是GNU的代表作品之一,目前可以编译的语言包括:C、C++、 Objective-C、 Fortran、Java等。您必须确保您的操作系统安装有GCC编译器。另外,您还必须安装 Autoconf和 Automake工具,它们用于自动创建功能完善的 Makefile,当前大多数软件包都是用这一工具生成 Makefile的, nginx也不例外。在 Centos系统下,您可以使用yum命令安装GCC编译器及相关工具:yum -y install gcc gcc-C++ autoconf automake模块依赖性:Nginκ的一些模块需要其他第三方库的支持,例如gip模块需要zlib库rewrite模块需要pcre库,s功能需要ρ penal库等。同样,如果是在 Centos系统下,我们可以使用yum命令安装或下载源码包编译安装这些模块依赖的库:yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel2.2 Nginx的下载您可以访问ht: ww nginx. net,网站,该网站中的以下三行内容分别提供了 Nginx0.6x、0.7X、0.8x三个版本分支的源码包或 Windows二进制文件下载The development stable versions are nginx-0.8.x, nginx/Windows-08x, the change logThe latest stable versions are nginx-0.7. x, nginx/Windows-07x, the change logThe latest legacy stable version is nginx-0.6.x, the change log如果您希望在 Windows上运行 nginx,你可以点击链接“ nginx/Windows-0.8x”或“ nginx/ Windows-07x”下载 Windows下的二进制版ZP压缩包。如果您希望在 Linux/unix环境下运行 nginx,您可以点击链接“ nginx-0.8x”、“ nginx-0.7.x”、“ nginx0.6.x”下载以 tar. gz格式压缩源码包23 Nginx的安装Nginx从0752版本开始有了官方的 Window版本,所以这里分别介绍 nginx在 windows下和Inux下的安装步骤。实Mx:取代A3e的高性能Me的解餐视Topsage.com
下载地址
用户评论
码姐姐匿名网友 2019-05-20 02:37:18

不错,谢谢。