日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[转]

發布時間:2023/12/29 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建勝過Apache十倍的Web服務器(第6版)[原創]

?大?|?中?|?小? [?2010-3-4 20:10 | by?張宴?] [文章作者:張宴 本文版本:v6.3 最后修改:2010.07.26?轉載請注明原文鏈接:http://blog.s135.com/nginx_php_v6/]

  前言:本文是我撰寫的關于搭建“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 60http://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/

  ④、RedHat AS4 系統環境,通常情況下缺少的支持包安裝:
  Ⅰ、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操作系統】下載程序源碼包:
  本文中提到的所有開源軟件為截止到2010年07月26日的最新穩定版。
  ①、從軟件的官方網站下載:
mkdir -p /data0/software
cd /data0/software
wget?http://sysoev.ru/nginx/nginx-0.8.46.tar.gz
wget?http://www.php.net/get/php-5.2.14.tar.gz/from/this/mirror
wget?http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz
wget?http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.3-m3.tar.gz/from/http://mysql.he.net/
wget?http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.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_mirror=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_mirror=0"
wget?ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz
wget?http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.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
wget?http://pecl.php.net/get/imagick-2.3.0.tgz
  ②、從blog.s135.com下載(比較穩定,只允許在本站,或者在Linux/Unix下通過Wget、Curl等命令下載以下軟件):
mkdir -p /data0/software
cd /data0/software
wget?http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz
wget?http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget?http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
wget?http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget?http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget?http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz 省略。。。 出處:http://blog.s135.com/nginx_php_v6/

?

總結

以上是生活随笔為你收集整理的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。