测试LXC和OpenVZ在容器内存不足时,有什么不同的表现
95 人阅读 | 时间:2023年06月24日 08:22
阿里云服务器 | 腾讯云服务器 | VPS2EZ:老牌低调VPS | ZJI:香港日本美国独服 |
LOCVPS服务周到 | HostKvm低调KVM VPS | 傲游主机:优质VPS | 80VPS:老牌VPS主机 |
搬瓦工:CN2 GIA线路 | CloudCone:性价比高 | JustMySocks科学上网 | RackNerd:超级便宜 |
JustMySocks科学上网 | 好用的宝塔面板 | 购买搬瓦工VPS | 恒创:香港CN2服务器 |
一个简单的实验记录,分别测试LXC和OpenVZ在容器内存不足时的表现
测试系统均为Alpine 3.17,内存均为64MB
cat /etc/issue Welcome to Alpine Linux 3.17
LXC
这里的LXC是使用proxmox开的,也可以用lxd,效果几乎一样
为了使测试情景更加接近真实情况,先装个docker
apk add docker service docker start
看一下此时的内存占用
勉强够用
磁盘IO,没啥问题
#宿主机运行 systemd-cgtop -i
继续加码,再开个docker应用
再开一个docker后,由于内存不足,容器卡死
从宿主机来看,IO直接持续读取
如果因内存不足卡住的lxc很多,将会导致宿主机的守护进程无响应,而且LXC容器似乎没有办法解决此Bug。
OpenVz7
同样的,先装个docker
看一下此时的内存占用
加码
直接OOM,对嘛,没内存了就OOM就是了,而不是像LXC一样明明没内存却卡住不kill程序,导致硬盘负载一直居高不下。
把内存调为70M再测一次,仍然是OOM,尽量排除虚拟化不同程序内存占用的问题。
临时补丁
找不到特别好的解决方案,只能写了一个监控程序,记录容器近一段时间内的IO量,当出现异常高的IO读取时,强制关闭容器。
还有一些头疼的地方,lxd不支持读取历史数据,因此只能监控cgroup的数据来实现io的监控 。这可能就是lxd轻量的地方吧,基础占用比较低,但是好多东西都没有
proxmox的api相对完善,能够读取历史IO数据,但是只记录了byte/s没有iops数据(还是我没找到?),另外proxmox不支持实例的io限制,也就是说有一个lxc炸了直接会占满磁盘的所有IO。
评论专区