近日,在给其它部门部署SCE集群后,发现container启动后,网络在一段时间内无法使用

造成SCE的agent在启动后通过yum安装其它包时出错,用户的app无法启动

自己使用脚本进行测试,container自身启动很快,耗时不到1s

启动后,立即lxc-attach执行一个wget命令,发现堵塞在connect上很长时间,如下:

1

堵塞大概20s左右后,该wget请求才开始执行,这时,container的网络才正常

算上这个时间,一个容器从启动到交付使用,差不多需要30s时间,这个是不能容忍的...

目前container的网络是使用桥接模式,网卡需要开启混杂模式

查看/var/log/messages日志,如下:

2

发现,该容器的veth从learning状态到forwarding状态耗费了15s时间

上网搜了一下,这个是网桥的forward delay参数决定的

执行brctl showstp br0可以看到

3

这个值默认就是15s,尝试通过brctl setfd br0 1设置成1s后

再进行测试,发现容器的网络很快就可以正常使用了

整个容器从启动到安装完包,启动用户进程,总共在6s左右的时间

恩,这个时间基本还是可以接受的