我已经使用以下网络设置设置了另一个 OpenVZ 容器:
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.10.168 P-t-P:192.168.10.168 Bcast:192.168.10.168 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
它运行良好一段时间,但突然无缘无故地取消配置界面。
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
该机器正在运行 imapd,我在 /var/log/syslog 中找到最后几行如下:
Jul 16 11:59:39 mail postfix/cleanup[2802]: fatal: inet_addr_local[getifaddrs]: getifaddrs: Cannot allocate memory
Jul 16 11:59:40 mail postfix/master[1703]: warning: process /usr/lib/postfix/cleanup pid 2802 exit status 1
Jul 16 11:59:40 mail postfix/master[1703]: warning: /usr/lib/postfix/cleanup: bad command startup -- throttling
Jul 16 12:00:01 mail CRON[2805]: System error
有足够的可用内存(大约 3 GB)。
mail:/# uname -a
Linux mail 2.6.32-openvz-042stab081.5-amd64 #1 SMP Mon Sep 30 16:40:27 MSK 2013 i686 GNU/Linux
root@hostmachine:~# vzubc 10168
----------------------------------------------------------------
CT 10168 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+---------------+---------------+-----+-----+------
kmemsize|12.4M 90% 88%|13.7M 100% 97%|13.7M|14.1M| -
lockedpages| - - - |2.82M 35% 35%| 8M| 8M| -
privvmpages| 241M 5% 5%| 276M 6% 6%| 4G| 4G| -
shmpages|64.6M 76% 76%|68.4M 81% 81%| 84M| 84M| -
numproc| 101 42% 42%| 126 52% 52%| 240 | 240 | -
physpages| 160M - - | 224M - - | - | - | -
vmguarpages| - - - | - - - | 4G| 4G| -
oomguarpages| 52M 1% 1%|58.9M 1% 1%| 4G| 4G| -
numtcpsock| 43 11% 11%| 61 16% 16%| 360 | 360 | -
numflock| 13 6% 6%| 48 25% 23%| 188 | 206 | -
numpty| 1 6% 6%| 15 93% 93%| 16 | 16 | -
numsiginfo| - - - | 48 18% 18%| 256 | 256 | -
tcpsndbuf| 267K 15% 10%|1.65M 100% 63%|1.64M|2.58M| 27
tcprcvbuf| 209K 12% 7%| 711K 42% 27%|1.64M|2.58M| -
othersockbuf| 495K 45% 24%| 743K 67% 36%|1.07M| 2M| -
dgramrcvbuf| - - - |8.52K 3% 3%| 256K| 256K| -
numothersock| 360 100% 100%| 360 100% 100%| 360 | 360 | 2.35K
dcachesize|3.42M 105% 98%|3.46M 106% 100%|3.25M|3.46M| -
numfile|1.52K 16% 16%|1.77K 19% 19%|9.09K|9.09K| -
numiptent| 20 15% 15%| 20 15% 15%| 128 | 128 | -
swappages| - - - | - - - | - | - | -
----------------------------------------------------------------
主机是 Debian 7.2,来宾是 Debian 8.1。
是否有一些我不知道的错误配置?有人可以帮帮我吗?!
答案1
我无法猜测网络故障的原因,但看起来您的容器耗尽了分配的资源,这可能会间接导致问题。你可以vzubc
在HN上运行看到这样的情况:
----------------------------------------------------------------
CT 1078 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+---------------+---------------+-----+-----+------
lockedpages| - - - |12.3M 1% 1%| 1G| 1G| -
physpages| 144M - 14%| 274M - 26%| - | 1G| -
vmguarpages| - - - | - - - | 2G| - | -
oomguarpages| 131M 12% - | 132M 13% - | 1G| - | -
swappages|39.6M - 3%|44.3M - 4%| - | 1G| -
----------------------------------------------------------------
CT 1072 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+---------------+---------------+-----+-----+------
kmemsize|5.51M 4% 4%|6.37M 5% 5%| 128M| 128M| -
lockedpages| - - - | 580K 56% 56%| 1M| 1M| 2
privvmpages| 582M 14% 14%| 625M 15% 15%| 4G| 4G| 4
shmpages| 256K 0.3% 0.3%| 260K 0.3% 0.3%| 84M| 84M| -
numproc| 68 28% 28%| 84 35% 35%| 240 | 240 | -
physpages|43.7M - - |60.1M - - | - | - | -
vmguarpages| - - - | - - - | 132M| - | -
oomguarpages|4.88M 4% - |5.94M 5% - | 102M| - | -
numtcpsock| 3 0.8% 0.8%| 4 1% 1%| 360 | 360 | -
numflock| 1 0.5% 0.5%| 3 2% 2%| 188 | 206 | -
numpty| - - - | - - - | 16 | 16 | -
numsiginfo| - - - | 9 3% 3%| 256 | 256 | -
tcpsndbuf|51.1K 3% 2%|68.1K 4% 2%|1.64M|2.58M| -
tcprcvbuf| 48K 2% 2%| 64K 3% 2%|1.64M|2.58M| -
othersockbuf|4.52K 0.4% 0.2%|12.8K 1% 0.6%|1.07M| 2M| -
dgramrcvbuf| - - - | - - - | 256K| 256K| -
numothersock| 5 0.7% 0.7%| 8 1% 1%| 720 | 720 | -
dcachesize|3.45M 106% 99%|3.46M 106% 100%|3.25M|3.46M| -
numfile| 153 2% 2%| 260 2% 2%|9.09K|9.09K| -
numiptent| 20 15% 15%| 20 15% 15%| 128 | 128 | -
看/proc/user_beancounters和UBC参数表上面显示的参数的含义。请注意,根据是否存在,可能有 2 种类型的输出VSWAP启用(CT 1078)或未启用(CT 1072)。
每个表中需要注意的是 FAIL 计数器。这意味着容器过去尝试请求超过其屏障 (BAR) 或限制 (LIM) 值而未能分配该资源的次数。因此,如果 FAIL 大于 0 并且仍然不断增加,则需要为该资源分配更多资源。
vzctl
您可以随时增加/减少 BAR 或 LIM 。对于具有 VSWAP 的容器,您可以分别增加(physpages
内存)或swappages
(虚拟交换)。--ram
--swap
vzctl set 1078 --save --ram 2G --swap 2G
对于没有 VSWAP 的容器,您通常会增加privvmpages
内存,有时也需要调整其他资源。
vzctl set 1072 --save --privvmpages 5G
FAIL 计数器在其所属容器启动时重置为 0。 vzubc -r
显示自上次运行以来 FAIL 计数器的相对值。