免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4910 | 回复: 3
打印 上一主题 下一主题

[Web] WEB性能优化(一) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-17 22:34 |只看该作者 |倒序浏览
又上chinaunix了,老看帖子太没意思,整理出来一个东西,给大家看看,大家有兴趣多讨论讨论


     
     要说web还是先从TCP/IP协议说起来的好(要丢也丢好的鸡单嘛,不要丢烂的),关于这方面的知识大

家参考《TCP/IP详解卷一》就好了,这里就不在多说了,只发一张图来说明,如下(图1)


图1 OSI模型
    这里要说的是一般OSI模型都按照这个方式来划分,由于数据都是从7层往下一直到1层变成正负的电

压进行传递,然后再逆向转换过来,所以在这7层当任何一层都是非常重要的,都有优化的余地,今天主

要说的就是下4层。
   

    关于1,2层涉及到接入,当然是带宽越快越好了,不过在带宽之外还有一个很重要的因素就是丢包率

,丢包率的大小在很大程度上也会对WEB性能产生非常大的影响,关于这些我们在后面再说。第3层就是IP

了,在互联网上目前也就是IPV4了,基本上没什么可说了,除非你用ipv6,IPV6同样也是可以提高WEB性

能的,但是目前意义不大,后面我们也简单的提到。所以还剩下第4层了,我们这里注重来看看第4层是怎

么影响WEB性能的。第4层说来主要就是TCP协议了,关于TCP协议,大家参看下图(图2)


   
图2 TCP的三次握手
    TCP协议的三次握手,这个在这里不在解释,不明白的参看《TCP/IP详解卷一》(本人推荐安装一个

sniffer自己查看一下数据包)。WEB都是采用的是TCP连接,这点无庸质疑,但是这样也存在一个问题,

就是每次TCP连接必须进行三次握手,实际上HOST A发送请求到和HOST B握手成功一般需要等待两个响应

时间(实际上有的时候web的GET请求可以和最后一个确认的ack包一起发送,但是这样会给 D.O.S攻击留

下隐患,因为我们暂时不讲安全问题,在这里不多说),下图是1K字节的数据通过一个TCP连接在2.4G的

带宽上传输的时候理论上的速度和响应时间的图。

图三 RTT的速度
    在这个图当中,我们可以看到当系统的响应时间越短那么每个TCP单位时间内传输的数据也会越多,

而这个变化是非线性的。

    在实际的TCP协议当中,还有另外两个主要方面的控制:1)单个包的大小。实际上每个数据包的大小

是多少是有服务器和客户机进行协商出来的,由于IPV4头的限制最大的数据包只能是2的16次方即65536字

节,所以最大的IPV4数据报不超过7K,这样可以对照上面的表计算一下在2.4G带宽下一个TCP连接最快的

传输速率是多少。2)TCP的窗口大小。这个同样是有服务器端和客户端进行协商的,窗口是递增的直到会

传输重发机制(是重发,不一定是丢包),而在这里下层的丢包率就对windows窗口会产生非常大的影响

。关于这方面的内容详细部分参考《TCP/IP详解卷一》。把所有的部分综合起来得到下面的图(图4):


图4 TCP与丢包率与网络响应时间的关系

    从图中我们就可以看到丢包率对TCP网络的重要性,因此在优化的时候我们可以先丛这些方面着手:
    1)减少丢包率。选用的好的交换机和ISP看起来会花很多钱,但有的时候却能够让你得到成倍的速度

的提高。
    2)减小响应时间。有的时候带宽的确是很高,但是服务器的负载太高,响应时间很慢,同样也会影

响服务器的吞吐量。尽量把你的服务器响应时间控制到100个ms吧。
    3)使用cache增大吞吐量。磁盘I/O总是会在不知不觉的情况下消耗你几十个MS。
    4)减少互联互通问题。后面再说。
    好了,不写了,写东西真累。

论坛徽章:
0
2 [报告]
发表于 2005-02-19 23:36 |只看该作者

WEB性能优化(一)

嗯,分析得非常不错。

很多时候影响web访问性能的因素是很多的,特别是对并发访问很大的站点,网络延时,丢包率这两点一般容易被忽视,特别是目前各网络互联质量不高的前提下。

我曾经运维一个教育网上的站点,访问量很大,且大多数均为公网浏览用户,访问质量一直不太好解决。并发访问量放大的时候,服务器上有大量的TIMEOUT连接,IO负载很大,开始认为是攻击,仔细分析之后发现很可能是由于公网用户丢包严重和延时过大造成了大量的未完成连接,这样也严重的消耗了webserver的线程资源。

也曾经用squid在前端试过,但是仍然无法承受,道理也是一样的,所以只有通过多个webserver负载,增大web的进程宽度来解决,不过这就需要好多服务器了。。。

呵呵,随手敲了几句,不当之处见谅。楼主请继续分析。。。

论坛徽章:
0
3 [报告]
发表于 2005-02-24 13:17 |只看该作者

WEB性能优化(一)

基本没有写什么东西  全是 TCP/IP详解卷一

也没有什么独到的分析
)减少丢包率。选用的好的交换机和ISP看起来会花很多钱,但有的时候却能够让你得到成倍的速度的提高。  --- 这个等于不说
2)减小响应时间。有的时候带宽的确是很高,但是服务器的负载太高,响应时间很慢,同样也会影 响服务器的吞吐量。尽量把你的服务器响应时间控制到100个ms吧。    这个怎么调整? 然后使用sniffer 进行检查吗?查看什么信息?
3)使用cache增大吞吐量。磁盘I/O总是会在不知不觉的情况下消耗你几十个MS。   这个怎么调整? 不知道! 如何检测? 不知道
4)减少互联互通问题。   白说 理论上的,涉及到整体构架了

论坛徽章:
0
4 [报告]
发表于 2005-03-02 09:58 |只看该作者

WEB性能优化(一)

这个不是针对web的吧,这个针对整体网络的吧,-_-b
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP