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

所需积分/C币:9 2016-03-24 09:53:38 15.09MB PDF
7
收藏 收藏
举报

实战Nginx取代Apache的高性能Web服务器 pdf 带书签 完整版
1.2Ngnx的发展 域网)上发布信息成了一件很容易的事。它提供IAPI( Intranet Server APl)作为护展web服务器 功能的编程接口;同时,它还提供一个 Internet数据库连接器,可以实现对数据库的查询和更新 IS只能运行在 Microsoft Windows平台、 Linux/mix平台上,因此须要购买商业的 Window on Server操作系统。 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服务器的市场占有率曲线图。 80 Peh是 M玉c护sot Googl 40g 胃落 莒莒是莒是莒县莒桌莒妾莒是莒妄莒妾莒妾莒喜莒妾莒喜 图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月占有率占有率变化 ache 95678052 51.24 96947298 52.26% 1.02% Microsoft IIs 63126940 33.81% 61038371 3291 0.90% Google 10455103 560% 9868819 5.32% 0.28% N nx 3354329 1.80% 462551 1.87% 0.07% Lighttpd 3046333 1.63% 2989416 1.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,,2 xt!xir层,239s:1epin 升Le 0.Ixhi,自.7 配的:82300欣ta1,R乐06好 73茸,5:!6bue Suap: 20. 1608k total 5自$.20i1ee,1755自 cache 图1-2迁移到 Nginx后的系统负载与cPU使用率图 由此可见,处理大量连接的读写, Apache所用的 select网络Jo模型非常低效。 Libevent(一个事件触发的网络库,适用于 Windows、 Linux、bsd等多种平台,内部使用 select、 epol、 kqueue等系统调用管理事件机制)的一张测试结果图,对 select、epol、 kqueue等作了清 实战Wmx:取代Apache的高性能eb锅Topsage.com 3选择 Nginx的理由 晰的对比,结果自然是epol( Linux26内核)和 kqueue( freebsd)胜出,见图1-3 Libevent Benchmark One Active Connection 10000 100 5000 10000 25c00 图1-3epol、 kqueue、 select等网络1O模型性能测试对比图 图14显示了在实际的生产环境中, Nginx支撑高达28000的活动并发连接数。 532::388802 -Nginx Cients Stat 30k 20k 10k 112011:4012:0012:20124013:0013:2013:401400142014:40150 MActive Current: 16.63 k Average: 10.17k Max: 28.04 k Reading Current: 22.97 Average 27.79 Max: 128. 90 E waiting Current: 16.24 k Average: 9.93k Max: 2697k WRiting 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)。 次/秒 760 740 700+ 66 服务器①req/s 晉一服务器②re 图1-5生产环境下的Ng门nx+PHP动态程序处理速度统计图 55days,18:30,1日,1小3d如e其ge:3.93,4.4,4.7 op- 15: 04: 42 1p running, 377 sleeping, 0 stepped, 0 zombie Ta实:380tota1 lem:419156oa1,3630113kue,5190小计ee,426201/ Cpu(s): 34.us.20.58sy,0.Kni:45.5id,0.Bwa,0.Dmhi:0.[r 5p:2096440tota, 3364k used, 2093078k free. 29377003: cached P1S畎F潑LRSS§黟P鱻為巸艹和A 2872w 160853408252637657.60.20:0144php-eg: 9247wu 1601331610m34452.60.328:18.26ngin 界整 1501308410ma44s2.00.226:21.69 nert: 261 15085340828040051.70.20:01.的 ohp-cs2 2684w 1608533682366312s 261要 15085340826863S 0.20:00.94 ppca 2732w 150853448252637231.70.20:00.7php-cgi 2827ungnu I603535282566380S1.70.20:00.56 php-cgi 29246要 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.com 1.3选择 Nginx的理由 9 Web服务器: 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服务器 Nainx Apache Lighttpd 反向代理 非常好 般 Rewrite规则 非常好 好好差 FastCGI 好 非常好 热部署 支持 不支持 不支持 系统压力比较 很小 很大 稳定性 非常好 安全性 般 好好 般般 技术资料 很少 非常多 一般 静态文件处理 非常好 一般 好 虚拟主机 支持 支持 支持 内存消耗 非常小 很大 非常小 通过表1-2可以看出,Nginκ在反向代理、 Rewrite规则、稳定性、静态文件处理、内存消耗 等方面,表现出了很强的优势,选用 nginx取代传统的 Apache服务器,将会获得多方面的性能 提升 实战Nmx:取代 Apache的高性能Web新部. TopSage.co Top 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-devel 2.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 log The latest stable versions are nginx-0.7. x, nginx/Windows-07x, the change log The 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

...展开详情
试读 127P 实战Nginx取代Apache的高性能Web服务器
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
ly445665128 不错,谢谢。
2018-08-28
回复
上传资源赚积分or赚钱
    最新推荐
    实战Nginx取代Apache的高性能Web服务器 9积分/C币 立即下载
    1/127
    实战Nginx取代Apache的高性能Web服务器第1页
    实战Nginx取代Apache的高性能Web服务器第2页
    实战Nginx取代Apache的高性能Web服务器第3页
    实战Nginx取代Apache的高性能Web服务器第4页
    实战Nginx取代Apache的高性能Web服务器第5页
    实战Nginx取代Apache的高性能Web服务器第6页
    实战Nginx取代Apache的高性能Web服务器第7页
    实战Nginx取代Apache的高性能Web服务器第8页
    实战Nginx取代Apache的高性能Web服务器第9页
    实战Nginx取代Apache的高性能Web服务器第10页
    实战Nginx取代Apache的高性能Web服务器第11页
    实战Nginx取代Apache的高性能Web服务器第12页
    实战Nginx取代Apache的高性能Web服务器第13页
    实战Nginx取代Apache的高性能Web服务器第14页
    实战Nginx取代Apache的高性能Web服务器第15页
    实战Nginx取代Apache的高性能Web服务器第16页
    实战Nginx取代Apache的高性能Web服务器第17页
    实战Nginx取代Apache的高性能Web服务器第18页
    实战Nginx取代Apache的高性能Web服务器第19页
    实战Nginx取代Apache的高性能Web服务器第20页

    试读结束, 可继续阅读

    9积分/C币 立即下载 >