没有合适的资源?快使用搜索试试~ 我知道了~
Nginx0.7.x+PHP5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 105 浏览量
2022-07-06
09:18:28
上传
评论
收藏 138KB DOC 举报
温馨提示
试读
27页
Nginx0.7.x+PHP5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器
资源推荐
资源详情
资源评论
前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web 服务器的第 5 篇文章。本系列
文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在
国内的发展产生了积极的作用。这是一篇关于 Nginx 0.7.x 系列版本的文章,安装、配置方式
与第 4 篇文章相差不大,但增加了 MySQL 安装配置的信息、PHP 5.2.10 的 php-fpm 补丁。
Nginx 0.7.x 系列版本虽然为开发版,但在很多大型网站的生产环境中已经使用。
链接:《2007 年 9 月的第 1 版》、《2007 年 12 月的第 2 版》、《2008 年 6 月的第 3 版》、
《2008 年 8 月的第 4 版》
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP
代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它
已经在该站点运行超过两年半了。Igor 将源代码以类 BSD 许可证的形式发布。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站
也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com
等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO 相册、海内 SNS、
迅雷在线等新兴 Web 2.0 网站。
Nginx 的官方中文维基:http://wiki.nginx.org/NginxChs
在高并发连接的情况下,Nginx 是 Apache 服务器不错的替代品。Nginx 同时也可以作为
7 层负载均衡服务器来使用。根据我的测试结果,Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 可以承
受 3 万以上的并发连接数,相当于同等环境下 Apache 的 10 倍。
根据我的经验,4GB 内存的服务器+Apache(prefork 模式)一般只能处理 3000 个并发
连接,因为它们将占用 3GB 以上的内存,还得为系统预留 1GB 的内存。我曾经就有两台
Apache 服务器,因为在配置文件中设置的 MaxClients 为 4000,当 Apache 并发连接数达到
3800 时,导致服务器内存和 Swap 空间用满而崩溃。
而这台 Nginx 0.7.61 + PHP 5.2.10 (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.7.61 + PHP 5.2.10 (FastCGI) 服务器的 PHP 程序,仍然
速度飞快。下图为 Nginx 的状态监控页面,显示的活动连接数为 28457(关于 Nginx 的监控
页配置,会在本文接下来所给出的 Nginx 配置文件中写明):
2
我生产环境下的两台 Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯 PHP 动态程
序,单台 Nginx + PHP5(FastCGI)服务器跑 PHP 动态程序的处理能力已经超过“700 次请求/
秒”,相当于每天可以承受 6000 万(700*60*60*24=60480000)的访问量(更多信息见此),
而服务器的系统负载也不高:
下面是用 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 安装在别的服务器上。
3
测试结果:##### 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 模型非常低效。下面用一个比
4
喻来解析 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/
④、RedHat AS4 系统环境,通常情况下缺少的支持包安装:
5
Ⅰ、i386 系统
wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm
rpm -ivh libjpeg-devel-6b-33.i386.rpm
wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm
rpm -ivh freetype-devel-2.1.9-1.i386.rpm
wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm
rpm -ivh libpng-devel-1.2.7-1.i386.rpm
Ⅱ、x86_64 系统
wget http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm
rpm -ivh libjpeg-devel-6b-33.x86_64.rpm
wget
http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm
rpm -ivh freetype-devel-2.1.9-1.x86_64.rpm
wget http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm
rpm -ivh libpng-devel-1.2.7-1.x86_64.rpm
3、【适用 CentOS、RedHat 及其它 Linux 操作系统】下载程序源码包:
本文中提到的所有开源软件为截止到 2009 年 06 月 26 日的最新稳定版。
①、从软件的官方网站下载:
mkdir -p /data0/software
cd /data0/software
wget http://sysoev.ru/nginx/nginx-0.7.61.tar.gz
wget http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz
wget
http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.35.tar.gz/from/http://mysql.he.net
/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
wget
"http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_
mirror=0"
wget
"http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mir
ror=0"
wget http://pecl.php.net/get/memcache-2.2.5.tgz
wget
"http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mi
rror=0"
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
剩余26页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功