linux资源限制/proc/user_beancounters的参数说明可以帮助我们更好的解决Linux vps的一些问题。比如提示 No buffer space available,那很可能就是 hitting the tcpsndbuf limit。怎么查看tcpsndbuf的数目?如何追踪这类问题,这就需要理解cat /proc/user_beancounters 的一些参数的含义了。比如下图failcnt显示有问题,说明VPS需要升级了。
[[email protected] ~]# cat /proc/user_beancounters Version: 2.5 uid resource held maxheld barrier limit failcnt 69011: kmemsize 4748731 16207400 37200000 37200000 0 lockedpages 0 5 1024 1024 0 privvmpages 46445 131664 131072 131072 305485 shmpages 642 2624 128000 128000 0 dummy 0 0 0 0 0 numproc 41 120 300 300 0 physpages 15367 89701 0 200000000 0 vmguarpages 0 0 131072 131072 0 oomguarpages 15491 89707 131072 131072 0 numtcpsock 27 409 2048 2048 0 numflock 6 10 1024 1024 0 numpty 1 3 32 32 0 numsiginfo 1 105 256 256 0 tcpsndbuf 443200 10250992 10240000 10240000 25230141145 tcprcvbuf 442368 9737584 10240000 10240000 0 othersockbuf 27512 302016 10240000 10240000 0 dgramrcvbuf 0 397720 5120000 5120000 0 numothersock 21 99 2048 2048 0 dcachesize 0 0 5120000 5120000 0 numfile 1672 7431 20000 20000 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 14 14 2048 2048 0
[[email protected] ~]# cat /proc/user_beancounters Version: 2.5 uid resource held maxheld barrier limit failcnt 77021: kmemsize 24701531 27576279 37200000 37200000 0 lockedpages 0 0 1024 1024 0 privvmpages 91057 107739 393216 393216 0 shmpages 642 2018 128000 128000 0 dummy 0 0 0 0 0 numproc 259 290 300 300 0 physpages 25185 41199 0 200000000 0 vmguarpages 0 0 393216 393216 0 oomguarpages 25186 41200 393216 393216 0 numtcpsock 176 292 2048 2048 0 numflock 6 8 1024 1024 0 numpty 1 2 32 32 0 numsiginfo 0 19 256 256 0 tcpsndbuf 20478832 20483712 20480000 20480000 29753075 tcprcvbuf 1279216 1447408 10240000 10240000 0 othersockbuf 272976 423328 10240000 10240000 0 dgramrcvbuf 0 9760 5120000 5120000 0 numothersock 133 144 2048 2048 0 dcachesize 0 0 5120000 5120000 0 numfile 7848 8546 20000 20000 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 14 14 2048 2048 0
OPENVZ 和 xen的虚拟技术不同,XEN的主机可以用free -m来查看,单openvz主机用这个命令得到的信息就不是很准确了,这个时候需要查看 /proc/user_beancounters 以获得更多信息。user_beancounters 包括了 OpenVZ VPS 的系统资源分配和使用信息。下面列出我的一个 228M VPS 主机上的 user_beancounters:
这个时候需要查看 /proc/user_beancounters 以获得更多信息。user_beancounters 包括了 OpenVZ VPS 的系统资源分配和使用信息。下面列出我的一个 228M VPS 主机上的 user_beancounters:
Version: 2.5 uid resource held maxheld barrier limit failcnt 780: kmemsize 3378602 4271967 2147483646 2147483646 0 lockedpages 0 0 999999 999999 0 privvmpages 61869 91068 91136 91136 9 shmpages 642 1938 32768 32768 0 dummy 0 0 0 0 0 numproc 30 43 999999 999999 0 physpages 31144 36074 0 2147483647 0 vmguarpages 0 0 58368 58368 0 oomguarpages 31145 36075 32768 2147483647 0 numtcpsock 6 25 7999992 7999992 0 numflock 6 10 999999 999999 0 numpty 1 2 500000 500000 0 numsiginfo 0 3 999999 999999 0 tcpsndbuf 107152 771088 26843136 208869376 0 tcprcvbuf 98304 2637216 26843136 208869376 0 othersockbuf 13920 434496 26843136 208869376 0 dgramrcvbuf 0 13104 26843136 208869376 0 numothersock 12 27 7999992 7999992 0 dcachesize 0 0 2147483646 2147483646 0 numfile 1334 2204 23999976 23999976 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 18 18 999999 999999 0
uid:用来辨别虚拟机(the container)的。如果不是VPS,就没有UID
held:用来显示当前使用状况。
maxheld:显示的是在 lifetime 时间段里,使用的最大值。(lifetime 是指从启动 VPS 到结束 VPS 之间的时间)
barrier 和 limit:用来控制资源的设定值。
failcn:用来显示被拒绝分配资源的次数。如果这里 failcn 的值增大很可能表示没有足够的内存分配给应用程序。
kmemsize:kernel memory size 这个参数显示内核使用的内存大小,内核只能常驻内存不能 swap。的内存大小,这里显示我的内核正在使用 3378602 byte 大小的内存。
privvmpages:private virtual memory 这个参数实际上显示的分配的 mem+swap 的大小,注意这里使用page做单位不是用byte,看上面的 privvmpages 是:61869 * 4KB / 1024byte = 241MB(1page = 4K,1K=1024B)这个参数只是显示分配的内存大小,但并不是实际使用内存的大小。实际大小由physpages 来显示。还有就是看完了后面的 vmguarpages 和 oomguarpages 会发现实际上:privvmpages barrier = vmguarpages barrier + oomguarpages barrier。
physpages:Physical pages 用来显示实际使用的内存大小。所有单独 VPS 虚拟机的使用内存加起来就是这台服务器整体的内存消耗。
vmguarpages:这个参数用来显示用多少内存分配给虚拟机,就是我们查看各种 VPS 产品时关心的Guaranteed/Dedicated RAM,计算方法是:58368 pages * 4K / 1024B = 228MB,正是我 VPS 的Dedicated RAM 大小。
oomguarpages:这个参数用来显示在 Dedicated RAM 用完了的情况下多少额外内存可以用。计算:32768 pages * 4K / 1024B = 128MB,所以加上 Dedicated RAM 后,总共的 Burstable RAM 是:228MB + 128MB = 356MB,正是我现在 Burstable RAM 的大小。
来源:http://blog.yaoyuan.org/article/1206.html