V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
keepRun
V2EX  ›  程序员

买了个阿里云香港突发性能实例 t6 ecs,硬盘 io 导致总是卡

  •  
  •   keepRun · 364 天前 · 2870 次点击
    这是一个创建于 364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我从最初的高效云盘升级到 ESSD PL0 ,我发现 ECS 的 IO 是真的坑爹,完全不能挂载为虚拟内存用,一旦系统使用硬盘作为虚拟内存,直接系统卡死好几分钟,只能强行关机重启。 用 hdparm 测试硬盘速度:

    hdparm -Tt --direct /dev/vda3
    
    /dev/vda3:
     Timing O_DIRECT cached reads:   326 MB in  2.02 seconds = 161.44 MB/sec
     Timing O_DIRECT disk reads: 430 MB in  3.01 seconds = 142.82 MB/sec
    

    速度是这样,我感觉这也太坑爹了吧,这不是机械硬盘的速度吗? IOPS 给的是 2k 。

    我用 docker 安装个 flask 、docker 启动 mysql 、docker compose 关闭 mysql 时不时就整个系统卡死,只能强行停止系统,然后重启,已经好几次了。每次系统卡死看云盘监控都是 IO 达到极限。

    我觉得很奇怪,我的机器是 2 核 1G 内存,我就 docker 启动个 mysql 都能给我整除整个系统卡死的问题,这 IO 也太差劲了吧。一开始我以为是内存问题,从 512m 加到 1G ,还是会出现卡死是系统 IO 打满情况;对比我在搬瓦工卖的 512m 1 核的小机器,我直接分了 1G 作为 swap 空间,跑同样的 docker compose 服务完全没问题,从未出现整个系统卡死情况,这阿里云的 ecs 咋就这么不争气?

    dockerfile 环境:mysql:8.0.35,python 安装的依赖:

    Flask==3.0.0
    pillow-avif-plugin==1.4.1
    pillow-heif==0.13.1
    Pillow~=10.1.0
    

    我查了好几次到底是啥问题,头都大了,发现最大可能就是这羸弱的 IO 导致,一开始我还用 swap ,后来开都不敢开,但是系统好像自动在内存不足时会用硬盘当 swap 空间,我已经打开了 ecs 的无性能约束模式。

    原本我想用这台阿里云 ecs 跑 java spring 项目+python flask+openresty+mysql ,结果光一个 mysql 就偶现让 ecs 卡死,我想问下各位我这种情况正常吗?阿里云硬盘 IO 这正常吗?我如果想自己搭建个 mysql 应该配个怎样的服务器

    35 条回复    2024-08-12 11:40:40 +08:00
    keepRun
        1
    keepRun  
    OP
       364 天前   ❤️ 1
    感觉阿里云 ecs 适合计算不适合有稍微高的 io ,存储应该走 oss 、云数据库,这样本地基本没啥 io ,当然要是肯加钱,可以去开更好的 essd
    lgh
        2
    lgh  
       364 天前 via iPhone
    我原来以为只有腾讯的轻量云服务器会这样,直到前两天买了 99 元/年的阿里云 2 核 2G 丐中丐……

    昨天用 docker 跑着 mysql 、redis 、rabbitmq (全都还是空的),用 pdm 安装到 numpy 和 pandas 的时候也卡死了几次,现象和楼主一样。
    从监控上看就是 iops 突然打满到 2k ,等重启恢复后用 free 看其实并没有开 swap 。

    最后把 docker 容器全部停了才能顺利安装。
    keepRun
        3
    keepRun  
    OP
       364 天前
    原来你也是,同是天涯沦落人了。

    我找了好久的问题,我甚至怀疑 docker 版本、mysql 版本是否引入什么 bug ,怀疑 cpu 是否性能不够了,怀疑内存大小 512m 是否不够用,试了很多,我觉得问题最有可能就是 IO ,绝对不能有任何虚拟内存在硬盘上交互,否则系统卡死,因为 IOPS 太低了
    9of6
        4
    9of6  
       364 天前
    我也遇到过,执行 dnf update 时卡住,控制台看 iops 和磁盘读带宽都拉满了。关闭"免费安全加固"后就没遇到这个问题了。
    keepRun
        5
    keepRun  
    OP
       364 天前
    免费安全加固 这么坑爹?
    ripperdev
        6
    ripperdev  
       364 天前
    @9of6 只能在系统里把 AliYunDun 进程 kill 掉么?阿里云的控制台能关吗?
    flyqie
        7
    flyqie  
       364 天前 via Android
    @keepRun #5

    建议善用 @功能,不然对方看不到你的回复。
    yinmin
        8
    yinmin  
       364 天前 via iPhone
    你是选哪个操作系统的? 换一个操作系统试试
    yinmin
        9
    yinmin  
       364 天前 via iPhone
    另外,你这个情况大概率是突发性能的余量不足导致的。安装软件会用掉过多的突发性能的点数,你可以登录阿里云平台查一下突发性能的剩余情况。

    安装后等一天,让突发点数回血,之后就会稳定的。
    BH1SMB
        10
    BH1SMB  
       364 天前
    BWH UAE SRV1/dev/sda2:
    Timing cached reads: 12898 MB in 2.00 seconds = 6457.97 MB/sec
    Timing buffered disk reads: 5808 MB in 3.00 seconds = 1935.55 MB/sec
    BH1SMB
        11
    BH1SMB  
       364 天前
    QCLOUD_GZ_SRV1 /dev/vda1:
    Timing cached reads: 18536 MB in 1.99 seconds = 9298.70 MB/sec
    Timing buffered disk reads: 588 MB in 3.01 seconds = 195.37 MB/sec
    yinmin
        12
    yinmin  
       364 天前 via iPhone
    跑 mysql 推荐“计算型”的虚拟服务器
    keepRun
        13
    keepRun  
    OP
       364 天前
    @9of6 免费安全加固 这么坑爹?
    keepRun
        14
    keepRun  
    OP
       364 天前
    @yinmin 我看监控: 超额 CPU 积分 一直是 0 ,累积 CPU 积分有 174 ,应该不是被限制了,况且我打开了无限制性能
    keepRun
        15
    keepRun  
    OP
       364 天前
    @BH1SMB 搬瓦工给的 IO 是真的好,多年前买的便宜传家宝比我现在用的这个 ecs 好多了,128 一年吊打阿里云 ecs
    veike
        16
    veike  
       364 天前
    发工单
    zapper
        17
    zapper  
       364 天前
    我发过工单也找过客服。他说是我程序问题,直接退款了。
    9of6
        18
    9of6  
       364 天前
    @keepRun 我是“更换操作系统”时没有勾选“免费安全加固”,好像控制台也能关云盾。

    之前开了两台同配置的 Centos Stream 9 ,一台勾了“免费安全加固”,一台没勾,然后我发现开了的就经常死机。
    9of6
        19
    9of6  
       364 天前
    @ripperdev 应当是在控制台里关,直接 kill 后它好像还会自己拉起来
    leaflxh
        20
    leaflxh  
       364 天前
    经常有阿里云用户因石头盘导致的性能问题而发帖
    xmumiffy
        21
    xmumiffy  
       364 天前
    高效云盘 IOPS : min{1,800+8*容量, 5,000}
    PL0 IOPS : min{ 1,800+12*容量, 10,000 }
    你的盘没几百 GB,那 IOPS 在 2k 左右是符合性能规范的
    xmumiffy
        22
    xmumiffy  
       364 天前
    吞吐性能是 高效云盘 min{100+0.15*容量, 140} PL0 min{100+0.25*容量, 180},你测出来也在范围内.最高也就 180MB/s,要突破 STAT 速度得 PL3.PL2 的速度刚好是 STAT 6Gps
    minipeach
        23
    minipeach  
       364 天前
    IO 问题几个月前我也有遇到了,跑个 node 工程的编译直接卡死了,然后只能强制重启
    keepRun
        24
    keepRun  
    OP
       364 天前
    石头盘真是难用,仿佛十年前的电脑
    lesismal
        25
    lesismal  
       364 天前
    云厂本来就是单物理实例虚拟化,节点配置越低、单物理实例能支撑的虚拟化容器数量越多、可卖给用户的云节点数量越多,用户多、大家都用相同的硬盘并发 IO 、就容易遇到 IO 瓶颈。
    keepRun
        26
    keepRun  
    OP
       364 天前
    云厂商这么卖真是赚呐
    @lesismal
    laminux29
        27
    laminux29  
       364 天前
    虚拟化与集中存储的架构,本质就是这样的,没办法。

    服务器资源本来就是很贵的,为了降低成本,才搞了各种虚拟化、各种资源集中架构。优点是把服务器使用成本降低了,资源利用率提高了,但缺点就是牺牲了性能。

    既然你享受了便宜,就不要对性能有太大的奢求。真正追求性能的应用,一般是托管物理服务器。
    zoharSoul
        28
    zoharSoul  
       364 天前
    把 swap 关了试试
    keepRun
        29
    keepRun  
    OP
       364 天前 via Android
    @zoharSoul 已经关了,完全不敢用 swap 了
    ShuWei
        30
    ShuWei  
       364 天前
    阿里云所有存储类型,都有给详细的性能指标,建议根据自己的需要进行选择,合理搭配就好
    keepRun
        31
    keepRun  
    OP
       364 天前 via Android
    @ShuWei 研究了下,确实性能按照它说的一样,就是之前疏忽了,以为跟买搬瓦工的 vps 一样,没想到普通机器 io 这么差
    julyclyde
        32
    julyclyde  
       363 天前
    啥叫突发性能实例啊?
    ShallowAi
        33
    ShallowAi  
       363 天前 via Android   ❤️ 1
    国内云服务商所谓的云盾建议卸载,如果需要设置 SWAP ,建议使用 Zram (内存压缩),压缩部分的低速内存也比硬盘快,且不占用磁盘 I/O ,能够缓解内存不足的问题。
    keepRun
        34
    keepRun  
    OP
       363 天前
    @ShallowAi 刚刚装了个 zram-tools ,搜了下,这东西确实不错
    lerry
        35
    lerry  
       89 天前
    @minipeach 确实。。太垃圾了,我构建一个 nextjs 程序,之前用其他的顶多是慢一点,阿里云的直接卡死,只能重启
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1547 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.