觉得速度慢的burster看过来

Linux VPS 支持
山塘街2011
帖子: 7
注册时间: 2012-01-29 16:13

觉得速度慢的burster看过来

#1

帖子 山塘街2011 » 2012-01-29 17:19

ubuntuchina老兄说速度20-50很正常,我测试LA的怎么也是200K+,但是不稳定,经常丢包
所以做了点优化,可以参考一下


————————

买了很多家的美国VPS测试,总体来说的感觉是网络有待稳定,本文从自己使用的经验来解析网络慢的原因,并试图进行优化。

鉴于其它几家总体上(网络)稳定性比burst.net高,其实我也是买的别人的VPS,根本不知道它机房在哪,所以也就不研究了。要指出的是,稳定性也是相对的,它们也经常访问速度在10k以下。丢包率也有高的时候。 据说有些VPS商家像linode这样的网络环境很好,不过价格也高,由于本人并没有使用过,加上我写这篇文章的重点在于性价比高的burst.net(有人不同意了,性能低,价格地,性价比还是低),所以不评论其它VPS。

开始想说的是,性价比高的东西(便宜的东西_普遍_性价比高)肯定不是最好的东西,甚至不是次好的东西。其实网络不快也不能怪84, 恰恰相反,用的人多了,也就慢了。

如果有不在乎一个月多个百八十块钱,买个现在公认比较好的VPS,是最好的选择。但是话说回来了,如果差不多的肉,15一斤和20一斤,前者肯定买的人多,从宏观的角度说,性价比和质量两个东西,大多数人关心前者。

好的,先来看一个数据:

一台VPS,或者说一台独立服务器,作为一个服务器,它位于洛杉矶,从中国访问最快需要多久?

北京到洛杉矶的距离大概是1万公里,来回就是2万公里,光速大概是30万公里,所以说,在北京ping一下等结果需要的最短时间是

2/30 = 1/15 秒, 也就是70ms左右,这是谁也改变不了的事实。 事实上数据就基本可以认为是以光速传播的。

考虑到其它因素,比如网络并不一定总是走直线,中间20跳左右的路由器可能有些延迟,北京的空气质量对光速的影响,等等。ping一个来回花150ms-200ms左右算是比较正常的。

OK,这个时间称之为往返时间,所以人们经常拿这个作为VPS的一个最明显的指标了。 但是大多数人,特别是买家,并不知道200ms和350ms到底有什么区别, 如果你能明确它们有什么区别,那就不用再继续把这个文章看完了…

作为一个写程序的人,什么东西都希望能量化,不能量化的东西是不太靠谱的,年龄,工资,国家GDP增长,每个月房贷多少,这些都是可以量化的。

一般人可能会觉得对一个站点的访问慢与快不能量化,只能凭感觉。 这其实也是不对的,感觉也能量化。延时多久人就感觉慢这些都是有数据量化的,只是一般我们不太关注这些数字,我们更注重我们的感觉。但是这些都是被研究过的数据。任何一个延迟时间,大多数人的反应是什么样子都是有数据的。

如果问200块钱和350是块钱的区别,大家很容易就回答,前者能买10斤瘦猪肉,后者能买10斤注水的牛肉。

那么,200ms和350ms到底有什么区别,其实我也真不知道。

所以我们从实际情况来分析200ms和350ms往返时间的区别。为什么不是150和250,其实分析方法是差不多的,只是我没时间去总结其中的关系。

大多数常见服务器都使用TCP协议,包括http,ftp,ssh,smtp等等,所以当然只考虑tcp了,特别是,只考虑http。

一个浏览器访问一个页面,大致可以分为以下几步:

1. 域名解析

2. 建立到服务器的tcp连接

3. 发送请求,比如 GET /这样的

4. 服务器返回内容,浏览器显示

第一步我们忽略,因为这个过程和http服务器的速度没什么关系, 把它提出来只是一个完整性的考虑。

第二步,建立一个连接,需要3次握手

客户端 ———– syn ———> 服务器 (a)

客户端 <——— syn-ack —— 服务器 (b)

客户端 ———— ack ———>服务器 (c)

这和打电话非常类似

主叫 ———– 拨号 ——————>被叫 (A)

主叫 <——— 接电话,你好 ——— 被叫 (B)

主叫 ———— 你好 —————–> 被叫 (C)

第三步发送请求一般就接着(c)之后了,就像给人家打电话,人家说了声你好之后,你也说你好,然后马上就说事情。

如果一切顺利,那么从一开始到发出请求只需要一个来回的时间,当然,服务器收到请求距离一开始需要1.5个来回的时间,再把结果返回来需要0.5个来回,加起来就是2个来回,就是说,打开一个页面一般至少需要2个来回。

如果响应时间是200ms,那么总的就需要0.4秒,如果是350ms,那么就需要0.7秒。 你说有区别吗,有,人也能感觉出来它们的区别,但是比起1秒和3秒的区别,0.4和0.7并不是特别明显。

所以,如果一切顺利的话200ms和350ms的区别就在此了。0.4 VS 0.7。

那么什么是”如果顺利的话”,不知道您在打电话的时候是否遇到过这种情况: 开始说话了,对方还在说你好之类的,是的,信息丢失了,或者对方没听清楚。对应到网络,就是丢包了,或者往返时间突然变长了,等等。 我们在这里不考虑后者,只考虑包丢了的情况,从观察的实际情况来看,包很少被延迟,如果在该到的时间没到,基本是丢了,如果考虑延迟就更复杂了,就像我们打电话一样,如果对方没听到,那么那句话就必须再说一次,否则不会再听到了。

实际上,网络慢有很多原因,有以下几点最重要的:

1. 物理因素, 用光纤跟电话线显然不一样,但是这个不是我们讨论的范围

2. 带宽限制,你用的是4M带宽,最大就那么高速度

3. 中间路由器忙不过来,丢包

其实2和3的结果是类似的,只不过原因不同,结果是什么,就是丢包。我们以后说丢包也包括限速的情况。

所以:

不考虑物理因素,网络慢的原因是丢包。

所以我们也不考虑为什么burst就慢,别的就快,即使都是同一个出口,其实我也不知道具体的限制,但是我们知道本质: 丢包。

大家经常说抽风,如果速度有10k每秒,那称之为慢,慢、慢,慢的不能再慢就称为抽风。

我们先放下丢包率和快慢的关系具体关系,因为这比较复杂。

我们来看往返时间和快慢的关系,我们上面说了0.4 VS 0.7并没有涉及速度。是的,结论就是:

如果不丢包,那么往返时间只对响应时间有影响,和速度没有关系。

当然我们这里只给出结论,如果要展开说,那我也说不清楚,即使有人能说的清楚,也不是一般人能看懂的,但是这个结论是很简单的。这也是大多数人混淆ping一下往返时间和速度的关系。 其实我们明白,0.4和0.7秒大多数时候可以认为没有什么区别,如果你的站点这个区别都难以接受,我可以说,不可能。如果你还坚持难以接受,我也相信,那你不应该看到这篇文章,我只会浪费你的时间。赶紧关掉这个页面。

举个通俗的例子,太阳光从发出待到达地球要8分钟,如果地球上放一个很大的镜子,经过这些镜子反射光再回到太阳又需要8分钟,可以说往返时间很长了,16分钟。 但是这时间和光线总量有关系吗?答案是没有。只跟镜子有关系。当然,如果我们要访问放在太阳上的服务器,没人受的了32分钟的响应时间。

上面这些就是想强调:

要区分对待响应时间和网速,响应时间慢不代表网速慢,相应时间快不代表网速快。



回过头来,我们再问,到底为什么我的速度只有30-50K,别人的有200K。有的burst代购明确就说了,大多数时候只有30-50K。参考

http://item.taobao.com/item.htm?id=6240509546

(声明,这个店不是我的,是我就发大了)

我们想也想的到,这个速度绝对不是物理原因,都什么年代了,对吧,那么原因是什么,显然是丢包。这个我们上面已经说过了,没有丢包,物理速度又快,那没有理由速度不快对吧,就好比光在真空中的速度就是30万公里每秒,不会打折的。

上面提到丢包了两种丢包可能,一种是限速,一种是路由器丢包,其实很明显,一个是主动的,一个是被动的,后者可以说也是物理上的。 后者跟排队很像,如果你在超市付钱人很少,就不需要排队,人多点就排队,人再多呢?再多呢?一个收银员就那么快,不可能无限多,出口带宽就那么大,不可能处理更多。这跟买火车票难是一个道理。

所以我们不分析后者,为什么会丢包,丢多少包,这就是具体的策略,burst线路人那么多,是不是该多丢些,也应该。 但是我们承认事实,丢包。

多ping几个,就能看出丢包率了,再说一次,我们不考虑丢包原因,因为知道原因我们也无法改变。

如果我们ping发现没丢包,或者很少(比如1%),而速度又上不去,只有那么30-50K,那是什么原因? 这就是第一个原因,有人在限速。

OK, 限速、丢包、限速、丢包,乱乱乱、、、、、

burst有限速吗?谁在限速?

我们需要理一下思路,把限速和丢包归为一类,正如开始的时候说的那样,一个是主动,一个是被动,结果是一样,那就是丢包,再说明丢包和网速的关系之前,我们说一下限速和丢包的本质区别(主动被动不是核心区别),以后就不区分了,就认为是丢包:

限速无法解决,丢包可以弥补。

什么意思呢,限速就限制了,丢包可以重传。

限制速度了重传多少丢多少,但是一般的丢包不会这么严格,它的策略一般比较简单,不会专门针对某个连接。

那我们可能会问,那我每个包多发两次怎么样,实际上这是可以的,如果没有限速、带宽也不要钱的话。你丢一个我也不怕。如果丢包率是99%, 每个包发100次,平均就有一个通过。 但是发包是由内核决定的,操作系统都是好公民,当发现丢包之后就自动降低发包速度,直到“基本不丢包”, 管理员或者应用程序仅仅可以对TCP各个参数进行微调。

TCP认为,如果发一个包出去没有得到响应,那么就降低发送速度,当然了,它比这个更智能,因为有时候丢个把包并不一定是速度不允许丢了,可能发生意外,就是说它会稍微考虑这些意外情况,概括地说, TCP最终的目标就是尽可能的利用带宽。逐渐增大发送速度。如果每个包都发100次,那太浪费带宽了,粮食可以随便吃并不代表粮食有无限多。如果吃一口吐一口,虽然是花自己的钱,但是也是浪费。虽然burst给我们1个T的流量,但是太浪费也不是那么回事,特别是作为一个好公民,操作系统绝对不这么乱搞。

如果说没人限速,我们的速度为什么只有30-50K呢,答案就在此,经常性的丢几个包(丢包率不高),导致的结果就是这么多了,如果真没有限速。 当发现一个包丢失了,TCP 1秒之后重传,再丢的话就2秒,、、、 所以最终丢包导致速度维持在某个速度。 换句话说,TCP对丢包有自适应能力。

限速也是基于这个原理,它发现只要速度太高,就丢点,而TCP又这么智能,发先丢了就立即调整,所以通常限速不会导致浪费带宽(过多的重传), 实际上带宽控制也是TCP最重要的一个特征。

说了这么多,我到底要说什么?针对burst丢包率高的问题提出解决方案:

尽可能快地重传丢失的包。

因为有时候浪费点也比网络无法访问好。 而且最重要的是,访问burst时丢包并不是因为你访问的速度太高,你访问多慢它都该丢还是丢,换句话说,它不是有针对的限速。 当它丢包率在20%的时候,你无论怎么传,想传10个包平均就得重传2个,就是说重传快点在这个网络环境下并不是盲目的,并不是浪费的。

我们回过头来,看一个http请求,如果请求本来就很可能丢失,那不是服务器能控制的,我们总不能要求我们的网站必须用我们定制的客户端系统和浏览器访问,如果是,那可以重传快点。但是我们可以修改服务器,当发现丢包了(该回馈的时间还没回馈),我们尽快重传。

举个例子,当丢包率在50-70%时,默认TCP基本就无法访问了,简称抽风了,但是如果重传快点(虽然可能会延迟,因为至少客户端的请求的先到达服务器),那么速度是可以解决的。

通过修改客户端和服务器,我在丢包率是80-90%的时候ssh或者别的访问还正常。

如果不能修改客户端, 那么速度是不变的,只是访问会延迟(因为请求包可能丢失),一旦连上,速度还是一样的。

只要丢包率在20-30%以下,访问基本不受影响,丢包率在 70%, 网络就很明显延迟了,因为请求重传一次(1秒)的可能性有70%,重传2次(1+2=3秒)的可能性是70%*70%=49%,基本上还是能访问的,但是已经不能正常访问了。 而如果不做修改,是不能访问的。

如果对延迟不关心(比如说专做下载的站点),那么即使丢包70%,也没有任何关系!

另外我们说到TCP发送速度是一个逐步增大的过程,那么起始速度就很重要,加速度也很重要,就是这个“逐步增快速度”到底有多快。通过这个修改,针对小文件的文件的访问(大多数页面都不到100K),特别有效果,通常访问美国200ms往返的100K文件需要1-1.8秒,而修改后可以达到0.9秒。这只是在网络良好的情况下,差别不是很大,网络不好呢? 那差距更明显。 明显的不用说了,测试吧!!!

http://184.22.178.187/11m_mp3.tgz

请burster们测试,别的VPSer当然也可以啦,网络好的时候这种修改是锦上添花,网络不好的情况下,那就是雪中送炭了.
上次由 山塘街2011 在 2012-01-29 17:21,总共编辑 1 次。
头像
maplebeats
帖子: 378
注册时间: 2011-02-16 1:17

Re: 发贴测试,刚才丢失

#2

帖子 maplebeats » 2012-01-29 17:21

啊? :em20
My blog : OOXX
头像
qy117121
论坛版主
帖子: 50552
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 觉得速度慢的burster看过来

#3

帖子 qy117121 » 2012-01-29 17:23

mhttp://item.taobao.com/item.htm?id=6240509546

(声明,这个店不是我的,是我就发大了)
这是我们一叶老大的店 :em04
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: 觉得速度慢的burster看过来

#4

帖子 jarlyyn » 2012-01-29 17:54

全看完了

不知道楼主在说什么……
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 觉得速度慢的burster看过来

#5

帖子 JiangHui » 2012-01-29 18:05

说了一堆,等于什么都没说
山塘街2011
帖子: 7
注册时间: 2012-01-29 16:13

Re: 觉得速度慢的burster看过来

#6

帖子 山塘街2011 » 2012-01-29 18:16

http://184.22.178.187/11m_mp3.tgz



大家竟然看不出来我说什么,你们对比一下(大家别排斥先,谢谢)用数据说话
山塘街2011
帖子: 7
注册时间: 2012-01-29 16:13

Re: 觉得速度慢的burster看过来

#7

帖子 山塘街2011 » 2012-01-29 18:17

希望能和一叶老大合作(高攀了)

burst如果网络解决了是不是非常爽? 现在就是网络总有那么点问题,不能说很大,但是是不可忽视的,
山塘街2011
帖子: 7
注册时间: 2012-01-29 16:13

Re: 觉得速度慢的burster看过来

#8

帖子 山塘街2011 » 2012-01-29 18:22

怎么还要审核...作为一个开源论坛...
哎,没看懂是我的问题,确实说不清,但是速度对比大家总会吧,表排斥新人嘛

http://184.22.178.187/11m_mp3.tgz

特别是、、当你的burst抽的时候,,
头像
maplebeats
帖子: 378
注册时间: 2011-02-16 1:17

Re: 觉得速度慢的burster看过来

#9

帖子 maplebeats » 2012-01-29 18:24

山塘街2011 写了:希望能和一叶老大合作(高攀了)

burst如果网络解决了是不是非常爽? 现在就是网络总有那么点问题,不能说很大,但是是不可忽视的,
合作?搞神马玩意~ :em04
My blog : OOXX
头像
maplebeats
帖子: 378
注册时间: 2011-02-16 1:17

Re: 觉得速度慢的burster看过来

#10

帖子 maplebeats » 2012-01-29 18:25

山塘街2011 写了:怎么还要审核...作为一个开源论坛...
哎,没看懂是我的问题,确实说不清,但是速度对比大家总会吧,表排斥新人嘛

http://184.22.178.187/11m_mp3.tgz

特别是、、当你的burst抽的时候,,
审核是因为...BOT太多...开源论坛里做得最干净的算这里了吧..10贴之后不用的
My blog : OOXX
山塘街2011
帖子: 7
注册时间: 2012-01-29 16:13

Re: 觉得速度慢的burster看过来

#11

帖子 山塘街2011 » 2012-01-29 18:26

maplebeats 写了:
山塘街2011 写了:希望能和一叶老大合作(高攀了)

burst如果网络解决了是不是非常爽? 现在就是网络总有那么点问题,不能说很大,但是是不可忽视的,
合作?搞神马玩意~ :em04
咱们能不能客观点,要PK也不能这么说吧,呵呵,重点是优化速度,不是合作 :em03

审核OK,我理解,但是是不是有更好的方式? 审核不常见,这个不否认吧
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 觉得速度慢的burster看过来

#12

帖子 delectate » 2012-01-29 18:26

320k,dta,峰值。

我的vps,http,220k。https,260k。
头像
Don't kiss me!
帖子: 717
注册时间: 2010-02-28 23:13

Re: 觉得速度慢的burster看过来

#13

帖子 Don't kiss me! » 2012-01-29 18:27

山塘街2011 写了:怎么还要审核...作为一个开源论坛...
哎,没看懂是我的问题,确实说不清,但是速度对比大家总会吧,表排斥新人嘛

http://184.22.178.187/11m_mp3.tgz

特别是、、当你的burst抽的时候,,
刚注册的嘛,有链接是会要审核的,过了10帖就好了应该
速度200K左右,
啊哈哈哈哈
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 觉得速度慢的burster看过来

#14

帖子 delectate » 2012-01-29 18:27

请楼主说说怎么修改吧,谢谢
头像
Don't kiss me!
帖子: 717
注册时间: 2010-02-28 23:13

Re: 觉得速度慢的burster看过来

#15

帖子 Don't kiss me! » 2012-01-29 18:27

发个帖子被档了三次 :em20
啊哈哈哈哈
回复