HTTP – 夏清然的日志 https://www.qingran.net Xia Qingran Geek Blog Sun, 07 Aug 2016 09:50:33 +0000 en-US hourly 1 https://wordpress.org/?v=4.6.1 112893047 Apache2 KeepAlive详解 + subversion优化 https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/ https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/#comments Thu, 08 Jul 2010 17:23:03 +0000 https://www.qingran.net/?p=502 由于现在subversion的数据有10GB之多,并且一次checkout会有10w个文件之多,所以这两天看如何优化一下我们的subversion,其中一个点就是apache2的keep alive参数。

Apache Keep-Alive扩展源自自HTTP/1.0和HTTP/1.1标准的的持久链接特性。提供了相对长效的HTTP链接方式,用以在同一个TCP连接中进行多次HTTP请求。KeepAlive设置出现在Apache 1.2版本以后。

对于HTTP/1.0的客户端来说,仅当客户端指定使用的时候才会使用持久链接连接。此外,仅当能够预先知道传输的内容长度时,才会与HTTP/1.0的客户端建立持久链接连接。而对于HTTP/1.1的客户端来说,如果没有进行特殊指定,持久将是默认的连接方式。如果客户端进行了请求,将使用数据分块以解决在持久链接里发送未知长度内容的问题。

KeepAliveTimeout的设置说明:
Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。
对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

MaxKeepAliveRequests的设置说明:
MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。

通过Apache的设置说明,我们明白在对于一个包含许多图片、css、js的静态内容网页, 客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度且耗费服务器端资源。 此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求, 减少TCP连接建立次数,提高响应速度。我们可以通过access log统计出连续HTTP请求出现的次数、间隔时间、访问量, 以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用;太大了,该断开连接迟迟的在等待,不仅浪费TCP连接数,而且系统中的apache2的进程数目会因此不断增加,使得系统负载升高。

哪么什么决定着我们是不是要开启KeepAlive的因素就很简单了:就是用户一个页面请求中是否会引发向同一个apache2服务器发出多个HTTP的请求。

但是当你的服务器只是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页(一般都是打开页面之后阅读好半天才点下一页),此时打开KeepAlive无异于浪费TCP连接数。所以此时应该把KeepAlive off之。

而对于提供静态文件服务,例如图片或静态文件服务,如果一用户需要同时从这个服务上得到数个甚至数十个文件,那么KeepAlive不仅仅能减少TCP的链接请求,更能节省apache2的进程资源。
而对于subversion,由于是一个HTTP同步一个文件,所以特别需要KeepAlive的支持,以下是我的配置:

KeepAlive on
KeepAliveTimeout 5
MaxKeepAliveRequests 0
MaxRequestsPerChild 1000
]]>
https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/feed/ 2 502
DLNA协议简析 https://www.qingran.net/2010/04/dlna%e5%8d%8f%e8%ae%ae%e7%ae%80%e6%9e%90/ https://www.qingran.net/2010/04/dlna%e5%8d%8f%e8%ae%ae%e7%ae%80%e6%9e%90/#comments Tue, 13 Apr 2010 06:18:00 +0000 https://www.qingran.net/?p=266 刚刚看了一下PS3的规格说明书,看到了其支持dlna协议,不明所以,于是google。

DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE,其宗旨是Enjoy your music, photos and videos, anywhere anytime。DLNA(Digital Living Network Alliance) 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达280多家。DLNA并不是创造技术,而是形成一种解决的方案,一种大家可以遵守的规范。所以,其选择的各种技术和协议都是目前所应用很广泛的技术和协议。

DLNA将其整个应用规定成5个功能组件:

网络互联

  • 有线网络:802.3.i/u
  • 无线网络:802.11/a/b/g

网络协议:

  • 目前支持ipv4
  • 未来支持ipv6

媒体传输:

  • 其规定了所有DLNA设备都必须支持使用HTTP协议进行媒体的传输

设备的发现:

  • 控制和媒体的管理,很多是采用uPnP的UPnP Device Architecture 1.0和UPnP AV 1.0 and UPnP Printer来进行

媒体格式:

  • 图片 JPEG PNG, GIF, TIFF
  • 声音 LPCM AAC, AC-3, ATRAC 3plus, MP3, WMA9
  • 视频 MPEG2 MPEG-1, MPEG-4*, AVC, WMV9

支持dlna的设备:

  • Sony PS3
  • Sony带有Lan接口的Bravia电视

支持dlna的软件:

参考自wikipedia http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance

参考 http://www.rbgrn.net/content/21-how-to-choose-dlna-media-server-windows-mac-os-x-or-linux

]]>
https://www.qingran.net/2010/04/dlna%e5%8d%8f%e8%ae%ae%e7%ae%80%e6%9e%90/feed/ 2 266