首页 > Web开发 > 详细

Nginx+Apache优化小例子

时间:2017-02-19 16:56:06      阅读:270      评论:0      收藏:0      [点我收藏+]

HTTP服务器使用Nginx+Apache的搭配,前者负责静态文件的读取,后者负责动态页面的处理。

首先是Apache参数KeepAlive

2.x版本的Apache配置该参数需要先启动一下外联配置文件

在httpd.conf中找到

#Various default settings

Include conf/extra/httpd-default.conf

把第二行前边的”#”去掉。

然后KeepAlive的参数就在以上路径的配置文件中。

下边是关于该参数的说明:

KeepAlive 是否允许持续连接

MaxKeepAliveRequests 允许的持续连接的最大数

KeepAliveTimeout 持续连接在没有请求多少秒后切段

前三个KeepAlive相关的指令用来设置持续连接。通常都是每个HTTP请求对应一个TCP连接,但对于包含许多图片的网页来说,客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度,此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求,减少TCP建立次数,提高响应速度。

这种情况下,应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问了,以确定MaxKeepAliveRequests和KeepAliveTimeout的值。KeepAliveTimeout太小发挥不了持续连接的作用;太大了,持续连接迟迟不断,浪费TCP连接不说,更糟糕的是系统中的httpd进程数目会因此不断增加,使得系统负载升高,甚至会导致服务器失去响应。

但是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页(一般都是打开页面之后过段时间才会点击),此时,打开KeepAlive无异于浪费TCP连接数。

 

结论就是,放动态网页的就KeepAlive Off以提高吞吐量,放静态内容如图片、js代码等就KeepAlive On以减少TCP连接建立次数。

 

但一个Apache只能有一种KeepAlive设置,怎么办?很简单,现在有Nginx,由它负责所有静态文件的处理,后端的Apache只需要专心动态应用就行。

 

查看KeepAlive是否有效,可以通过curl-I(命令行)获取HTTP爆头查看

如下变两个不同的结果:

  

HTTP/1.1 200 OK
Date: Thu, 09 Jul 2009 06:58:13 GMT
Server: Apache/2.2.11 (Unix) PHP/5.2.6
Last-Modified: Fri, 03 Jul 2009 10:40:03 GMT
ETag: "163e8b2-d87-46dcac765c6c0"
Accept-Ranges: bytes
Content-Length: 3463
Connection: close     连接断开, KeepAlive 为 off
Content-Type: text/html

#################################

HTTP/1.1 200 OK
Server: nginx/0.6.35
Date: Thu, 09 Jul 2009 06:59:49 GMT
Content-Type: text/html
Content-Length: 1034
Last-Modified: Thu, 28 Aug 2008 17:07:40 GMT
Connection: keep-alive    持续连接, KeepAlive 为 on
Accept-Ranges: bytes
内容学习自开源中国:http://www.oschina.net/question/17_1542

 

Nginx+Apache优化小例子

原文:http://www.cnblogs.com/lgqtecng/p/6416025.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!