Alibaba Cloud Linux3 容器内存打满后网络丢包问题优化方案

更新时间:
复制为 MD 格式

本文介绍了Alibaba Cloud Linux 3 系统上当容器内存用满后可能会出现网络丢包的原因及解决方案。

现象描述

Alibaba Cloud Linux 3上,当业务容器内存占满后,可能会导致和容器相关的网络出现丢包现象,例如:

image.png

问题原因

网络数据包进行内存分配时,所处为软中断上下文,在Linux kernel中需要通过非阻塞式申请内存,当容器内存满的时候不会对其可回收cache进行内存回收,因而会出现由于内存申请失败导致丢包现象。

影响范围

ALibaba Cloud Linux3 所有内核版本。

解决方案

当前问题并非内核问题,无修复补丁,但可以通过以下方式可以在一定程度上优化或解决业务问题。

  • 方式1:

    开启Memcg后台异步回收功能,动态对cache进行回收。

  • 方式2:

    升级到Alibaba Cloud Linux 4,更高版本的Linux内核中,网络数据包内存申请仍然是非阻塞式申请,但允许申请系统的保留内存,在系统预留内存足够的情况下可以成功分配。