当failcnt
的tcpsndbuf
增加时,这意味着什么?这是否意味着系统必须超过barrier
,或超过limit
?或者,也许系统未能提供足够的缓冲区,要么是因为它需要超过limit
,要么是因为它需要超过barrier
但无法超过,因为其他虚拟机使用了太多资源?
barrier
我理解和之间的区别limit
只适用于磁盘空间,您可以指定系统可以超过的宽限期,barrier
但不能超过limit
。但在像这样的资源中tcpsndbuf
,没有宽限期,barrier
vs.是什么意思limit
?
barrier
为什么和limit
之间的差异tcpsndbuf
必须至少为 2.5KB 倍tcpnumsock
?我可以理解,例如,tcpsndbuf
应该至少为 2.5KB 倍tcpnumsock
(屏障或限制),但我为什么要关心屏障和限制之间的差异?
答案1
您这里有很多问题。
当 tcpsndbuf 的 failcnt 增加时,这意味着什么?用最简单的术语来说,failcnt 就是超出资源限制。因此,与 tcpsndbuf 结合使用,这意味着它会将该计数器增加超过 tcp 缓冲区大小资源的次数。如果您在较长时间内不断达到此计数器,您将开始注意到并遇到网络性能问题。
障碍和限制是有区别的。
越过屏障,您只会看到网络性能下降。应用程序仍会运行,但网络性能会变慢。
如果超过特定时间段的限制,您将开始看到断开的连接。
至于2.5KB,这是为了保证足够的缓冲空间,让当前的网络连接能够成功发送数据,如果没有,那么最终可能会在发送数据到一半时挂起连接。
__
failcnt 有没有增加?字段 failcnt 显示了容器生命周期内被拒绝的“资源分配”数量。该值会随着 tcpsndbuf 达到限制的次数而增加(这就是我所说的“超过 tcp 缓冲区大小”)。
假设容器请求超出屏障的 tcpsndbuf。这是否被批准?这是可以接受的,但请记住,如果您为 tcpsndbuf 输入更高的值,并不意味着它会自动提高网络性能。它也受限于硬件限制。由于 UBC 一致性检查,它会开始降级。如果不满足约束条件,则在某些情况下(并非总是,只是有时),套接字上的数据传输可能会挂起。