没有合适的资源?快使用搜索试试~ 我知道了~
Nginx搭建胜过Apache十倍的Web服务器-第6版.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2022-07-06
09:18:57
上传
评论
收藏 191KB DOC 举报
温馨提示
试读
25页
Nginx搭建胜过Apache十倍的Web服务器-第6版
资源推荐
资源详情
资源评论
前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web 服务器的第 6 篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP
安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。本文可能不断更新小版本,请记住原文链接
“http://blog.s135.com/nginx_php_v6/”,获取最新内容。第 6 篇文章主要介绍了 Nginx 0.8.x 新的平滑重启方式,将 PHP 升级到了
5.2.14,修正了 PEAR 问题。另将 MySQL 5.1.x 升级到了 5.5.x 系列,配置文件变更较大。
链接:《2007 年 9 月的第 1 版》、《2007 年 12 月的第 2 版》、《2008 年 6 月的第 3 版》、《2008 年 8 月的第 4 版》、《2009 年
5 月的第 5 版》
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev
为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了。Igor 将源代码以类 BSD 许可证的形式发布。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、
网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com 等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、
金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO 相册、金山爱词霸、迅雷在线等新兴 Web 2.0 网站。
Nginx 的官方中文维基:http://wiki.nginx.org/NginxChs
在高并发连接的情况下,Nginx 是 Apache 服务器不错的替代品。Nginx 同时也可以作为 7 层负载均衡服务器来使用。根据我的测试结
果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受 3 万以上的并发连接数,相当于同等环境下 Apache 的 10 倍。
根据我的经验,4GB 内存的服务器+Apache(prefork 模式)一般只能处理 3000 个并发连接,因为它们将占用 3GB 以上的内存,还
得为系统预留 1GB 的内存。我曾经就有两台 Apache 服务器,因为在配置文件中设置的 MaxClients 为 4000,当 Apache 并发连接数达到
3800 时,导致服务器内存和 Swap 空间用满而崩溃。
而这台 Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器在 3 万并发连接下,开启的 10 个 Nginx 进程消耗 150M 内存
(15M*10=150M),开启的 64 个 php-cgi 进程消耗 1280M 内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到 2GB 内
存。如果服务器内存较小,完全可以只开启 25 个 php-cgi 进程,这样 php-cgi 消耗的总内存数才 500M。
在 3 万并发连接下,访问 Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器的 PHP 程序,仍然速度飞快。下图为 Nginx 的状态监控页面,
显示的活动连接数为 28457(关于 Nginx 的监控页配置,会在本文接下来所给出的 Nginx 配置文件中写明):
我生产环境下的两台 Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯 PHP 动态程序,单台 Nginx + PHP5(FastCGI)服务器
跑 PHP 动态程序的处理能力已经超过“700 次请求/秒”,相当于每天可以承受 6000 万(700*60*60*24=60480000)的访问量(更多信息
见此),而服务器的系统负载也不高:
2009 年 9 月 3 日下午 2:30,金山游戏《剑侠情缘网络版叁》临时维护 1 小时
(http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml),大量玩家上官网,论坛、评论、客服等动态应用 Nginx 服务器集群,
每台服务器的 Nginx 活动连接数达到 2.8 万,这是笔者遇到的 Nginx 生产环境最高并发值。
下面是用 100 个并发连接分别去压生产环境中同一负载均衡器 VIP 下、提供相同服务的两台服务器,一台为 Nginx,另一台为
Apache,Nginx 每秒处理的请求数是 Apache 的两倍多,Nginx 服务器的系统负载、CPU 使用率远低于 Apache:
你可以将连接数开到 10000~30000,去压 Nginx 和 Apache 上的 phpinfo.php,这是用浏览器访问 Nginx 上的 phpinfo.php 一切正常,
而访问 Apache 服务器的 phpinfo.php,则是该页无法显示。4G 内存的服务器,即使再优化,Apache 也很难在“webbench -c 30000 -t 60
http://xxx.xxx.xxx.xxx/phpinfo.php”的压力情况下正常访问,而调整参数优化后的 Nginx 可以。
webbench 下载地址:http://blog.s135.com/post/288/
注意:webbench 做压力测试时,该软件自身也会消耗 CPU 和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。
测试结果:##### Nginx + PHP #####
引用
[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.21/phpinfo.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.21/phpinfo.php
100 clients, running 30 sec.
Speed=102450 pages/min, 16490596 bytes/sec.
Requests: 51225 susceed, 0 failed.
top - 14:06:13 up 27 days, 2:25, 2 users, load average: 14.57, 9.89, 6.51
Tasks: 287 total, 4 running, 283 sleeping, 0 stopped, 0 zombie
Cpu(s): 49.9% us, 6.7% sy, 0.0% ni, 41.4% id, 1.1% wa, 0.1% hi, 0.8% si
Mem: 6230016k total, 2959468k used, 3270548k free, 635992k buffers
Swap: 2031608k total, 3696k used, 2027912k free, 1231444k cached
测试结果:##### Apache + PHP #####
引用
[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.27/phpinfo.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.27/phpinfo.php
100 clients, running 30 sec.
Speed=42184 pages/min, 31512914 bytes/sec.
Requests: 21092 susceed, 0 failed.
top - 14:06:20 up 27 days, 2:13, 2 users, load average: 62.15, 26.36, 13.42
Tasks: 318 total, 7 running, 310 sleeping, 0 stopped, 1 zombie
Cpu(s): 80.4% us, 10.6% sy, 0.0% ni, 7.9% id, 0.1% wa, 0.1% hi, 0.9% si
Mem: 6230016k total, 3075948k used, 3154068k free, 379896k buffers
Swap: 2031608k total, 12592k used, 2019016k free, 1117868k cached
为什么 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 的性能谁的性能更高,同样十分明了。
安装步骤:
(系统要求:Linux 2.6+ 内核,本文中的 Linux 操作系统为 CentOS 5.3,另在 RedHat AS4 上也安装成功)
一、获取相关开源程序:
1、【适用 CentOS 操作系统】利用 CentOS Linux 系统自带的 yum 命令安装、升级所需的程序库(RedHat 等其他 Linux 发行版可从
安装光盘中找到这些程序库的 RPM 包,进行安装):
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib
zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5
krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
2、【适用 RedHat 操作系统】RedHat 等其他 Linux 发行版可从安装光盘中找到这些程序库的 RPM 包(事先可通过类似“rpm -qa | grep
libjpeg”的命令查看所需的 RPM 包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat 可以直接利用 CentOS 的 RPM 包安装,以
下是 RPM 包下载网址:
①、RedHat AS4 & CentOS 4
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/
http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/
②、RedHat AS5 & CentOS 5
http://mirrors.163.com/centos/5/os/i386/CentOS/
http://mirrors.163.com/centos/5/os/x86_64/CentOS/
③、RPM 包搜索网站
http://rpm.pbone.net/
http://www.rpmfind.net/
剩余24页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功