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

[k3s] 硬盘 read >= 100M/s, 该怎么办?

  •  
  •   wcyl · 2022-08-04 12:34:11 +08:00 · 2741 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述

    我在腾讯轻量云(CPU:4 核, 内存:4GB, 80GB SSD 云硬盘)上部署了 k3s 和一些服务, 但外部服务常常无法被访问 或访问很慢, ssh 也是.

    通过腾讯后台监控, 发现硬盘常常大量读取硬盘, 平均>=30M/s. 当>=90M/s 时就无法提供访问. 得等到硬盘读取速度下来, 或者重启服务器

    详细截图

    云服务器配置 veMtiT.png

    硬盘使用及监控 veMUWF.png

    iotop 查看的程序读写硬盘的截图

    iotop -oP
    

    veMNJU.png

    已部署的服务截图

    52Z2Pk4.png

    提问

    1. 不知道你们的 k3s 也是这样的吗?
    2. 我的问题的原因是机器配置太低了吗? 是机器太少了吗? (目前是一台) 是服务太多了吗?
    3. 我该怎么优化呢?

    不知道大家有没有遇到这种问题吗? 能改善改善吗?

    16 条回复    2022-08-26 17:43:17 +08:00
    hefish
        1
    hefish  
       2022-08-04 13:15:47 +08:00
    不知道是不是内存不够。
    wcyl
        2
    wcyl  
    OP
       2022-08-04 14:14:09 +08:00
    @hefish #1 内存确实剩余不多 但是 1.我没开 Swap 2.还剩一点 并且一直很稳定 没有变化

    top
    [![vedCAe.png]( https://s1.ax1x.com/2022/08/04/vedCAe.png)]( https://imgtu.com/i/vedCAe)

    云服务器监控
    [![vedp7D.png]( https://s1.ax1x.com/2022/08/04/vedp7D.png)]( https://imgtu.com/i/vedp7D)
    wcyl
        3
    wcyl  
    OP
       2022-08-04 14:15:26 +08:00
    @wcyl #2 Java 应该是 Jenkins
    missz
        4
    missz  
       2022-08-04 14:35:54 +08:00
    不涉及生产的话可以一个一个停服务试试看谁的锅
    hefish
        5
    hefish  
       2022-08-04 15:03:57 +08:00
    这个 free 也太少了点吧。。。
    wcyl
        6
    wcyl  
    OP
       2022-08-04 15:57:48 +08:00
    @missz #4 @hefish #5 马上关了 Jenkins 试试
    bankroft
        7
    bankroft  
       2022-08-04 16:13:02 +08:00
    之前遇到过这个问题,开 swap
    wcyl
        8
    wcyl  
    OP
       2022-08-04 16:32:04 +08:00
    @bankroft #7 我看到很多文章都说 swap 应该关闭 而且开始后

    k3s check-config 会提示 swap 应该关闭

    ```
    - swap: should be disabled
    ```
    wcyl
        9
    wcyl  
    OP
       2022-08-04 16:37:43 +08:00
    @missz #4 @hefish #5

    很神奇, Jenkins 关了之后, 内存剩余 1 个多 G, 磁盘读写也好了

    通过配置, 限制 Jenkins 的内存后, 都好了. 磁盘 read 非常低,

    自从 k3s 部署成功过后, 服务器从未如此流程 tab 一点也不卡顿了 😂
    mxuan
        10
    mxuan  
       2022-08-04 16:54:50 +08:00
    @wcyl jenkins 一般需要 4G 内存,不然内存不够用 swap 后磁盘疯狂写。
    mxuan
        11
    mxuan  
       2022-08-04 16:55:40 +08:00
    @mxuan 跑了 k3s 再跑 jenkins 内存估计会不够。
    wcyl
        12
    wcyl  
    OP
       2022-08-04 17:25:20 +08:00
    @mxuan #11 Jenkins 有配置可以限制内存大小的

    没办法 就 2 台服务器 ci-cd 不用 gitlab 的(git 仓库放自己服务器不安全 怕突然服务器访问不上去)

    只能用 Jenkins 了 反正是自己的实验的地方 尽量想办法 能克服就克服
    mxuan
        13
    mxuan  
       2022-08-04 17:30:27 +08:00
    @wcyl 倒是可以调,默认的确实比较大。。
    Ehco1996
        14
    Ehco1996  
       2022-08-05 08:11:57 +08:00
    我之前也被这个问题困扰好久,本质上是机器的资源不足了, 内存不够,
    比如有个 pod 在频繁重启,containerd 会频繁调度,导致磁盘读异常
    建议加一个 worker node ,把负载挪上去就没问题了
    wcyl
        15
    wcyl  
    OP
       2022-08-05 16:33:55 +08:00
    @Ehco1996 #14 对的对的

    只是之前是 docker-compose, 也是这些服务. 电脑负载完全没问题. 我都以为是 k3s 太重了, 要回到 docker-compose

    其实是有一台服务器, 专门给 Jenkins 的. 当有构建任务时, 就在那台服务器上构建编译, 避免影响已部署的服务

    不过没想到 原因竟是 Jenkins 本体
    smallthing
        16
    smallthing  
       2022-08-26 17:43:17 +08:00
    @wcyl 试试 drone 构建
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1099 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.