V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
mahone3297
V2EX  ›  VPS

阿里云vps的io速度是不是很慢?

  •  
  •   mahone3297 · 2013-12-17 13:34:05 +08:00 · 2742 次点击
    这是一个创建于 4024 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在做一个站点,图片有点多。全放到web目录下(没有采用第三方存储)
    新打开一个站点时,要加载很多图片。。。这时我ssh在服务器上敲命令时,瞬间很卡。。。突然意识到,是磁盘io问题(之前也遇到过,以为可能是网络或者load问题)大家有遇到过我这样的情况吗?
    今天测试了下,阿里云vps测试结果如下:
    1. 写速度
    time dd if=/dev/zero of=test.db bs=1M count=1024 conv=fdatasync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 23.2556 s, 46.2 MB/s

    real 0m23.265s
    user 0m0.000s
    sys 0m1.520s

    2. 读速度
    time dd if=test.db of=/dev/null bs=1M
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 15.0304 s, 71.4 MB/s

    real 0m15.041s
    user 0m0.004s
    sys 0m1.128s

    本地电脑虚拟机测试结果
    1. 写
    time dd if=/dev/zero of=test.db bs=1M count=1024 conv=fdatasync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 12.0661 s, 89.0 MB/s

    real 0m12.247s
    user 0m0.012s
    sys 0m2.288s

    2. 读
    time dd if=test.db of=/dev/null bs=1M
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 0.420771 s, 2.6 GB/s

    real 0m0.425s
    user 0m0.012s
    sys 0m0.404s

    ps:国内用阿里云vps靠谱吗?
    36 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2013-12-17 14:24:59 +08:00
    SSH 卡是因为你的 VPS 的上行带宽满了。阿里云的 VPS 有带宽限制。
    mahone3297
        2
    mahone3297  
    OP
       2013-12-17 14:45:27 +08:00
    @Livid vps上行为什么会满?打开加载vps上的网站,应该算是下行吧,其他我什么事情都没做。敲几个ssh命令,应该上行不会满吧?
    varrily
        3
    varrily  
       2013-12-17 14:59:18 +08:00
    下载图片的时候,你这边是下行,服务器是上行,上行满了,终端卡是很正常的。
    felix021
        4
    felix021  
       2013-12-17 15:10:24 +08:00
    阿里云的磁盘IO的确是比较烂。但是他们有BGP骨干网这个卖点。
    wzxjohn
        5
    wzxjohn  
       2013-12-17 15:13:53 +08:00
    据说阿里云的磁盘是基于NFS的,曾经出现多次nfs连接出错导致全盘只读。。。
    robertlyc
        6
    robertlyc  
       2013-12-17 15:27:48 +08:00
    哪个云现在没有BGP了
    mahone3297
        7
    mahone3297  
    OP
       2013-12-17 16:05:08 +08:00
    @varrily ok,有点理解 “下载图片的时候,你这边是下行,服务器是上行” 再请教下,上行满了,为什么终端就卡了?
    Livid
        8
    Livid  
    MOD
       2013-12-17 16:25:07 +08:00
    @mahone3297 uplink 满了的时候,就会发生丢包。
    046569
        9
    046569  
       2013-12-17 16:36:00 +08:00
    1.阿里云IO是不快,测试结果发到官方被删帖,在这补发一次:
    阿里云高性能磁盘IO测试(2013年12月14日)
    http://bbs.ymate.me/t/596/1/1
    注意最近还是在用旧硬盘,高性能磁盘需要申请.
    2.但你的问题并非是IO问题,L大给你解释过了.
    3.阿里云靠谱吗?我们迁移到阿里云后434天无重启,客户的机器在上面的也有个百十来台,半年以上没重启的很多.即使是独立服务器,硬盘也经常是瓶颈,多用缓存,注意规避就可以了.个人认为还是比较靠谱的.
    sandtears
        10
    sandtears  
       2013-12-17 17:29:30 +08:00
    听说阿里云那边的数据盘是通过网络挂载的 0.0
    akira
        11
    akira  
       2013-12-17 18:53:29 +08:00   ❤️ 1
    阿里云的硬盘IO是不高,但是你这个是带宽的原因。
    放图片多记得弄大点带宽。
    akira
        12
    akira  
       2013-12-17 18:57:55 +08:00
    @046569 附带杭州临时硬盘的测试结果,似乎比你测出来的数据要好一点。

    dd if=/dev/zero of=temp.dd bs=32k count=2k oflag=dsync
    7108864 bytes (67 MB) copied, 3.54786 s, 18.9 MB/s

    dd if=/dev/zero of=temp.dd bs=64k count=2k oflag=dsync
    134217728 bytes (134 MB) copied, 3.64731 s, 36.8 MB/s

    dd if=/dev/zero of=temp.dd bs=32k count=5k
    167772160 bytes (168 MB) copied, 0.255099 s, 658 MB/s

    dd if=/dev/zero of=temp.dd bs=64k count=5k
    335544320 bytes (336 MB) copied, 0.50275 s, 667 MB/s

    dd if=/dev/zero of=temp.dd bs=32k count=50k
    1677721600 bytes (1.7 GB) copied, 9.34802 s, 179 MB/s

    dd if=/dev/zero of=temp.dd bs=64k count=50k
    3355443200 bytes (3.4 GB) copied, 24.944 s, 135 MB/s
    046569
        13
    046569  
       2013-12-17 20:13:53 +08:00
    @akira
    蛋疼的是,你占用不了多久,几分钟后就会被降速,本来就不高...
    现在的办法还是尽量缓存,少惹硬盘.
    VYSE
        14
    VYSE  
       2013-12-17 20:43:32 +08:00
    如果你CLIENT或VPS带宽没问题的话,的确可能遇到IO导致响应迟缓的情况。

    我们有个FILE HTTP SERVER,那里SSH操作总会比其他机器缓慢,理论上带宽不是问题,因为是内网。
    查过可能原因是IO中断导致,2.6.38内核据说能解决这个问题,另外DD算出来的IO速率可能受IO影响,因为IO操作如果内存够是直接读写内存的,我们128G内存DD也是在GB以上,其实都走内存。
    从你阿里云的DD上看,基本走的磁盘,不妨留出更多空闲内存供CACHE。
    princeofwales
        15
    princeofwales  
       2013-12-17 20:46:45 +08:00
    阿里云的磁盘和AWS EC2一样,是通过网络挂载的,不是本地磁盘,I/O确实是瓶颈
    akira
        16
    akira  
       2013-12-17 21:03:27 +08:00
    @046569 少惹硬盘是共识了。
    ps :临时硬盘是有丢失数据的可能的,就算上线了,用途也有限。
    mahone3297
        17
    mahone3297  
    OP
       2013-12-17 22:29:02 +08:00
    @046569
    @Livid
    @sandtears
    @akira
    - 购买服务器的时候,好像只看到说带宽,没看到说上行多少,下行多少,哪里可以看?
    - 如何看uplink是否满了?
    - 我没用阿里云的数据盘,直接用的阿里云系统送的20g
    - 图片有点多的话,一般要多大带宽?这个怎么算?

    @VYSE
    你说的dd写内存,可以看下参数,conv=fdatasync 加上这个就不写内存缓存了

    谢谢各位热心回复!学习了!
    VYSE
        18
    VYSE  
       2013-12-17 23:10:31 +08:00
    @mahone3297 写的测试是准确的,主要是读的,那个2.6GB的,读的时候还是已经有CACHE了
    Benisme
        19
    Benisme  
       2013-12-17 23:11:36 +08:00
    @mahone3297 产品帮助里写的是上行不限,下行你买多少就是多少。
    图片多就不要把图片放在阿里云,用oss或者七牛或者又拍云(我觉得七牛不错)减轻带宽压力。
    drawingsinging
        20
    drawingsinging  
       2013-12-17 23:16:28 +08:00
    如果追求速度的话,图片建议用阿里云oss存储或者七牛或者又拍.数据库可以用阿里云rds.
    mahone3297
        21
    mahone3297  
    OP
       2013-12-17 23:26:49 +08:00
    @Benisme
    @drawingsinging
    嗯,帮别人做的企业站,就不考虑那么多了。只是关于技术方面,对速度慢有点好奇,想和大家研究探讨下。企业老板就想放那么多图片上去。。。回头和他看看商量商量,是否要减少点图片。
    sandtears
        22
    sandtears  
       2013-12-18 02:30:43 +08:00
    @mahone3297 阿里云标明的是上传带宽,下载带宽自己进去测呗,在10M以上 `wget cachefly.cachefly.net/100mb.test`
    sandtears
        23
    sandtears  
       2013-12-18 02:31:07 +08:00
    @mahone3297 图片用七牛之类的做吧
    victor
        24
    victor  
       2013-12-18 07:50:59 +08:00
    @046569 请问“现在的办法还是尽量缓存,少惹硬盘." 怎么解释呢?能讲一下么谢谢。

    最近也遇到这类问题了。缓存到内存中已经被排除了。其他的缓存办法仍然要从硬盘上读取内容。当然图片,css,js文件等已经做了cdn和oss之类的静态文件分发存储。
    046569
        25
    046569  
       2013-12-18 17:25:00 +08:00
    @victor
    顺嘴说习惯了,这说法不严谨.
    我还处在堆机器性能的初级阶段,数据库扛不住就升RDS,反代搞不定就堆CDN,应用服务器顶不住就SLB.除了阿里的坑爹老用户政策,一切看起来挺美好的.
    akira
        26
    akira  
       2013-12-18 19:57:40 +08:00
    @sandtears 按带宽算的服务器,应该是上下行对等的。
    @046569 你漏了一个堆memcache
    @victor 如果你的图片等静态文件,都是丢到oss之类的地方的话,实际上你的主机应是基本上无io压力了。
    mahone3297
        27
    mahone3297  
    OP
       2013-12-18 20:51:31 +08:00
    @046569 看来你也是个有钱的主。就这么堆上去就好了?db直接升级rds就ok了?不用考虑分表?CDN贵不贵的?SLB是什么?
    sandtears
        28
    sandtears  
       2013-12-18 21:41:15 +08:00
    @akira 阿里云不对等,下载速度10Mbps以上。
    akira
        29
    akira  
       2013-12-18 21:51:33 +08:00
    @sandtears 具体数字我没测试过,但是1M的服务器,做update的时候,感觉比5M的服务器要慢。

    刚测试了一下,从百度盘下载同一个文件,
    5M带宽:106,404,624 5.79M/s in 18s
    1M带宽:106,404,624 3.04M/s in 35s
    046569
        30
    046569  
       2013-12-18 22:02:32 +08:00
    @mahone3297
    都是小站,百W的PV就撑死了,数据也没大到需要分表.
    后面的问题你可以咨询阿里云客服.
    victor
        31
    victor  
       2013-12-18 22:11:07 +08:00
    @046569 小公司没钱啊,升级服务器都要精打细算,所以只要有那么一点优化的心得,我都要跪求赐教。
    @akira 图片等静态文件已经放到OSS上了。现在的重点是对于一些内容不经常变化的请求。比如首页,新闻列表,新闻内容。这些大概每天更新一次,目前这些请求的缓存我还是放在了阿里的ECS(云主机)上。因为是多个进程,放在内存的话不能共享。这部分又没有特别强的交互,放在 memcached 也没必要。所以是存成了文件,这部分是不是就是 @046569 说的,还是会有 IO 的问题呢?
    akira
        32
    akira  
       2013-12-18 22:25:08 +08:00
    @victor 如果你的pv比较大的话,还是丢mc比较好。具体还是要看你的数字,才能下结论。

    不过不管如何,内存够的情况下,丢到内存放总是比放在硬盘上面要好的。
    046569
        33
    046569  
       2013-12-18 22:29:09 +08:00
    @victor
    要不要这么傲娇,我还在Ruby-China那拜读大作,说多就是矫情了.
    这个还是可以共享的,存储的时候直接写到/dev/shm去,首页之类的不会太大,消耗不掉多少内存,但提速应该比较明显,阿里那IO跑出30+负载我一点也不奇怪...
    希望能有点启发.
    :)
    leisudeng
        34
    leisudeng  
       2013-12-19 13:09:32 +08:00
    这磁盘速度不能说特别差,一般做站是没啥大问题的
    victor
        35
    victor  
       2013-12-19 17:27:06 +08:00
    @046569
    @akira

    好的,考虑到目前几十万PV,不算很严重,还是生成文件放在硬盘上吧。今天为此写了一个 Gem,如果程序是非 Rails 的 Ruby 应用,可以考虑下
    https://github.com/wjp2013/grape-shaman_cache

    支持内存,文件系统和memcached作为存储介质
    DavidSone
        36
    DavidSone  
       2013-12-24 11:08:05 +08:00   ❤️ 1
    阿里云很快会正式推出CDN了,把静态资源的压力转移到CDN吧,我就这么干的,还不错,至少不用整天再看着监控里面的磁盘项目一路飘红了,至于缓存,并不是万能的,很多场景启用缓存未必能解决多少问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1476 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.