`
haohappy2
  • 浏览: 327479 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Varnish and Nginx

 
阅读更多

我在设计系统架构时,进行了大胆的尝试,只用6台Web服务器,达到了可承受4000万PV(页面访问量)的性能:

抛弃了 Apache,因为它能承受的并发连接相对较低;
抛弃了 Squid,因为它在内存利用、访问速度、并发连接、清除缓存等方面不如 Varnish;
抛弃了 PHP4,因为 PHP5 处理面向对象代码的速度要比 PHP4 快,另外,PHP4 已经不再继续开发;
抛弃了 F5 BIG-IP 负载均衡交换机,F5 虽然是个好东西,但由于价格不菲,多个部门多个产品都运行在其之上,流量大、负载高,从而导致性能大打折扣;

  利用 Varnish cache 减少了90%的数据库查询,解决了MySQL数据库瓶颈;
利用 Varnish cache 的内存缓存命中加快了网页的访问速度;
利用 Nginx + PHP5(FastCGI) 的胜过Apache 10倍的高并发性能,以最少的服务器数量解决了PHP动态程序访问问题;
利用 Memcached 处理实时数据读写;
利用 HAProxy 做接口服务器健康检查;

  经过压力测试,每台Web服务器能够处理3万并发连接数,承受4千万PV完全没问题。

  保证4千万PV的并发连接数:(40000000PV / 86400秒 * 10个派生连接数 * 5秒内响应 * 5倍峰值) / 6台Web服务器 = 19290连接数

实验证明:

举 个简单的例子,服务器192.168.0.2上运行Nginx+PHP,192.168.0.3上运行Apache+PHP,你在 192.168.0.4上安装压力测试工具webbench,以30万并发连接分别请求Nginx和Apache服务器上的一个PHP文件60秒钟。在这 期间,你用你的浏览器访问Apache服务器上的PHP文件,会发现要么是“该页无法显示”、要么是等待好几秒钟才能打开,而Nginx服务器的PHP文 件,依然没有丝毫影响,访问速度仍然飞快。

webbench -c 300000 -t 60 http://192.168.0.2/index.php

webbench -c 300000 -t 60 http://192.168.0.3/index.php

以下为 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程和250个php-cgi进程时的系统负载情况:

-------------------------------------------------------------------------

安装步骤:
(系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为AS4.3)

  一、获取相关开源程序:
1、下载程序源码包到当前目录:
本文中提到的所有开源软件为截止到2007年9月21日的最新稳定版。我将它们打了两个压缩包。

  第一个压缩包:nginx_php_mysql_1.0_1of2.zip:
下载地址:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2289607

  第二个压缩包:nginx_php_mysql_1.0_2of2.zip:
下载地址:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2289595

  2、解压缩:

unzip nginx_php_mysql_1.0_1of2.zip
unzip nginx_php_mysql_1.0_2of2.zip


-------------------------------------------------------------------------
一、) 安装Nginx
1.) 安装
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。欢迎访问 Nginx 的中文维基,http://wiki.codemongers.com/NginxChs.

2.)安装Nginx所需的pcre库:

[root@localhost]#tar zxvf pcre-7.2.tar.gz
[root@localhost]#cd pcre-7.2/
[root@localhost]#./configure
[root@localhost]#make && make install
[root@localhost]#cd ../


3.)Nginx的编译参数如下:
[root@localhost]#./configure --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --with-pcre=/usr/local/lib --with-http_stub_status_module --without-http_memcached_module --without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module --without-http_geo_module --without-http_autoindex_module

在这里,需要说明一下,由于Nginx的配置文件中我想用到正则,所以 需要 pcre 模块的支持。上面安装步骤里我已经安装了 pcre 及 pcre-devel 的rpm包,但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件,因此我稍微变通了一下:

[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/libpcre.a
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/libpcre.la
然后,修改 objs/Makefile 大概在908行的位置上,注释掉以下内容:

./configure --disable-shared

接下来,就可以正常执行 make 及 make install 了。

 

Reference:

http://www.s135.com/post/313/

分享到:
评论
2 楼 haohappy2 2013-07-12  
We can call it dynamic content cache.

And There are three kind of cache as below, please refer it
1. Page Cache
  Varnish/redis/Nginx provide page caching. A static copy of the  rendered page is held and updated from time to time either by the content expiring or being purged from the cache.

2.Query Cache
   MySQL includes a query cache that can help on repetitive queries.

3. Wrap Queries with functions and cache
   We can take our queries and write our own caching using a key/value store, avoiding us having to hit the database backend.
1 楼 spidersea 2013-07-10  
文中提到“利用 Varnish cache 减少了90%的数据库查询,解决了MySQL数据库瓶颈;”

varnish怎么做到让数据库减少了90%的请求呢?
意思是做的动态内容缓存?

相关推荐

    nginx和php和varnish配置

    nginx和php和varnish配置

    squid、varnish、ngx_cache的性能测试对比报告

    首先,从测试环境来看,本次测试所使用的Squid、Ngx_cache(也就是Varnish)、Nginx_cache均运行在具有单硬盘资源的服务器上,并为缓存分配了180G的存储空间。这意味着测试结果更侧重于考察三者在单盘存储条件下的...

    构架Nginx+PHP(Fastcgi)+MySQL+Memcache高性能web服务器

    # nginx – this script starts and stops the nginx daemon # # chkconfig: –85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # # processname: nginx #...

    Nginx和Varnish优化补充

    Nginx和Varnish是当前流行的高性能Web服务器和反向代理服务器,经常用于缓存和负载均衡。针对这两个技术的优化补充知识点,主要围绕提升服务器性能、处理静态内容的能力以及如何正确配置以应对后端服务变更。 首先...

    如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN.

    如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN.

    Varnish权威指南(中文版).pdf

    Varnish的性能尤其在处理大量静态内容缓存方面比Nginx和Apache更胜一筹。 5. 如何安装和配置Varnish 安装Varnish通常比较直接,可以通过包管理器如apt或yum安装。安装之后,需要配置VCL文件,通过这个配置文件定义...

    在varnish、squid、apache、nginx中选出一个更好的缓存服务器

    在varnish、squid、apache和nginx这四个选项中,每种都有其独特的特性和适用场景。 首先,Varnish和Squid是专门设计为缓存服务器的。Varnish以其高效的“Visual Page Cache”技术著称,它优化了内存管理,避免了...

    Varnish 应用技术指南 V3.0 中文版

    7. Varnish和后端服务器交互:Varnish可以与各种后端服务器(如Apache、Nginx)协同工作,通过智能缓存减轻后端压力,同时处理大量并发请求。 8. Varnish的缓存更新和失效策略:了解如何设置缓存过期时间、如何根据...

    varnish测试报告

    高并发请求下,负载会增加,但通过引入Varnish缓存,可以有效减轻nginx的压力。 - **单网卡流量**:网卡流量显示了服务器网卡的数据传输量。当并发数增加时,流量也会相应增加。 - **CPU使用率**:CPU使用率的高低...

    Getting Started with Varnish Cache: Accelerate Your Web Applications

    Getting Started with Varnish Cache: Accelerate Your Web Applications by Thijs Feryn English | 13 Mar. 2017 | ASIN: B06XP3D6Z2 | 253 ...Use logging and debugging tools to examine the behavior of Varnish

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维02

     本书的最后一部分是关于Nginx使用缓存技术的方法,共列举了Nginx使用的五大缓存,特别是广泛使用的代理缓存、Memcached和Varnish,另外对于Memcached服务器的使用贯穿了整套书。在本书中着重讲述了它的协议、原理...

    linux-varnish配置

    Linux Varnish 配置详解 Varnish 是一款高性能的开源HTTP缓存和代理服务器,主要用于提升网站的响应速度和处理能力。它通过缓存静态内容和动态内容的副本,减少对后端服务器的请求,从而提高了整体的Web性能。在...

    Nginx 应用技术指南 pdf版

    同时,Nginx还可以配合其他工具如Varnish,实现更高效的缓存策略。 对于HTTPS安全连接,Nginx支持SSL/TLS协议,可以配置证书和密钥进行加密通信,保障数据传输的安全性。此外,Nginx还提供了一系列的HTTP安全头设置...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维第三部分(保证能用)

    第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 第4章 服务器名字 第5章 协助用户操作Nginx的工具 第6章 5XX错误处理 ...第57章 缓存技术――Varnish

    varnish+lighttpd配置

    Varnish和Lighttpd是两个非常重要的开源Web服务器软件,它们在Web性能优化和负载均衡方面发挥着关键作用。Varnish作为一个高性能的HTTP缓存代理,常用于减轻后端服务器的压力,提高网站响应速度;而Lighttpd则是一款...

    varnish-6.2.0.tgz

    5. 兼容性和稳定性:与各种后端服务器(如Apache、Nginx等)有更好的兼容性,确保在各种环境中都能稳定运行。 在实际部署中,Varnish 6.2.0通常被用作CDN(内容分发网络)的一部分,或者直接在数据中心作为前端缓存...

    Nginx防攻击的调研

    5. **动静分离**:通过缓存(如Nginx的cache,或varnish、squid)将动态请求转化为静态资源,减轻服务器压力。 6. **购买DDoS防火墙**或使用CDN服务,分散攻击流量。 **问题四:设置禁止访问项** 1. **禁止访问特定...

    Nginx教程从入门到精通--文字版.pdf

    14. CDN调度器HAProxy、Nginx、Varnish:介绍如何利用Nginx作为内容分发网络(CDN)的一部分,以及如何与HAProxy和Varnish协作。 15. lnmp架构下php安全配置分享:分享在lnmp(Linux+Nginx+MySQL+PHP)环境下如何...

Global site tag (gtag.js) - Google Analytics