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

PVELXC 容器报错 Failed to receive program message: WebSocket connection closed unexpectedly

  •  
  •   ztq100 · 18 天前 · 717 次点击
    环境是双路 7K62 加上 32G*16 内存
    运行了 PVE 系统
    创建了 LXC 容器
    LXC 容器使用了官方的 Ubuntu 22 模板
    创建容器的时候默认勾选了无特权容器
    容器的硬件配置为 4 核心,4G 内存 8G 硬盘 8G 缓冲区

    然后用这个创建好的容器做了模板,复制出来 22 个容器
    复制的时候硬盘自动选择了链接模式
    这个操作是找了 GPT 写的代码复制

    以上 22 个容器都运行同一个计算程序,程序始终访问网络,获取数据,计算,上交数据
    就和挖矿那种差不多

    现在问题是 22 个容器同时运行几个小时里面的程序就会崩溃
    报错
    Failed to receive program message: WebSocket connection closed unexpectedly
    同时有几率会把我另外单独跑的一个容器里的程序也带崩溃,至少会把 xshell 的链接打断
    PVE 里还运行了了一个 openwrt 的虚拟机,开了全局透明代理,很稳定

    现在测试只开 10 个容器进行计算,已经稳定运行了十几个小时了
    所以感觉是系统里某个地方有瓶颈?开多了到了瓶颈就崩了?

    怀疑以下几点
    容器创建的时候应该选特权容器?
    每个容器应该用自己的硬盘?
    或者干脆我就应该用虚拟机,不用 lxc 容器来运行?

    求教
    4 条回复    2024-11-17 22:17:56 +08:00
    Byleth
        1
    Byleth  
       18 天前
    使用 LXC 容器时,总是偶尔遇到奇奇怪怪的问题,换成虚拟机就一点事都没有了,自从发现这个以后,我就能用虚拟机就用虚拟机了
    ayase46k
        2
    ayase46k  
       18 天前
    特权容器一般就是要获取宿主资源用吧,例如你要 lxc 装 docker ,我猜应该问题不出在这里。无责任猜测一下,可能问题出在 ksm 哪里?试一下关闭 ksm 看看? ksm 主要是用来合并内存中共通部分的内存。看你描述,你现在就是 ksm 典型的工作情况。为什么开 10 个没事,因为开 10 个还没到触发 ksm 的阈值,开 20 个几个小时就不行,因为内存占用到了触发 ksm 的阈值,开始内存合并。事实上 ksm 经常会导致虚拟机出现些奇奇怪怪的问题。。。。或者看看 lxc 虚拟机哪里可以关闭共享内存,好像是叫这个名字,那这样 ksm 就不会对这些虚拟机动刀进行内存合并,代价就是划分多少内存,宿主就会立马被切割走多少内存。如果后续问题解决,麻烦 op 也回复我一下,我也比较好奇答案是什么。
    pagxir
        3
    pagxir  
       17 天前 via Android
    你程序有 bug ,大概率 fd 泄漏了。查查网络连接数是不是一堆
    ztq100
        4
    ztq100  
    OP
       16 天前
    @ayase46k 我这几天出门就留了 10 个进程,周五走的时候还没问题,周日晚上到家发现又崩了
    我的下一步计划是改成特权容器跑几天试试看,如果还不行就放弃容器,用虚拟机再试试
    如果虚拟机还不行估计就是 3 楼说的程序自己有 bug 了,因为我在电报里确实看到过有人和我一样的报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1436 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:30 · PVG 01:30 · LAX 09:30 · JFK 12:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.