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

33 天前
 ztq100
环境是双路 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 容器来运行?

求教
919 次点击
所在节点    Ubuntu
4 条回复
Byleth
33 天前
使用 LXC 容器时,总是偶尔遇到奇奇怪怪的问题,换成虚拟机就一点事都没有了,自从发现这个以后,我就能用虚拟机就用虚拟机了
ayase46k
32 天前
特权容器一般就是要获取宿主资源用吧,例如你要 lxc 装 docker ,我猜应该问题不出在这里。无责任猜测一下,可能问题出在 ksm 哪里?试一下关闭 ksm 看看? ksm 主要是用来合并内存中共通部分的内存。看你描述,你现在就是 ksm 典型的工作情况。为什么开 10 个没事,因为开 10 个还没到触发 ksm 的阈值,开 20 个几个小时就不行,因为内存占用到了触发 ksm 的阈值,开始内存合并。事实上 ksm 经常会导致虚拟机出现些奇奇怪怪的问题。。。。或者看看 lxc 虚拟机哪里可以关闭共享内存,好像是叫这个名字,那这样 ksm 就不会对这些虚拟机动刀进行内存合并,代价就是划分多少内存,宿主就会立马被切割走多少内存。如果后续问题解决,麻烦 op 也回复我一下,我也比较好奇答案是什么。
pagxir
32 天前
你程序有 bug ,大概率 fd 泄漏了。查查网络连接数是不是一堆
ztq100
30 天前
@ayase46k 我这几天出门就留了 10 个进程,周五走的时候还没问题,周日晚上到家发现又崩了
我的下一步计划是改成特权容器跑几天试试看,如果还不行就放弃容器,用虚拟机再试试
如果虚拟机还不行估计就是 3 楼说的程序自己有 bug 了,因为我在电报里确实看到过有人和我一样的报错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX