Когда failcnt
из tcpsndbuf
увеличивается, что это значит? Означает ли это, что системе пришлось пройти barrier
, или мимо limit
? Или, может быть, система не смогла предоставить достаточно буферов, потому что ей нужно было пройти limit
, или потому что нужно было пройти barrier
но не мог, потому что другие виртуальные машины использовали слишком много ресурсов?
Я понимаю разницу между barrier
и limit
только для дискового пространства, где вы можете указать льготный период, в течение которого система может превышать barrier
но не limit
. Но в ресурсах вроде tcpsndbuf
, которые не имеют такого понятия, как льготный период, что означает barrier
vs. limit
?
Почему разница между barrier
и limit
в tcpsndbuf
должно быть не менее 2,5 КБ раз tcpnumsock
? Я мог бы понять это, если бы, например, tcpsndbuf
должно быть не менее 2,5 КБ раз tcpnumsock
(либо барьер, либо предел), но почему меня должна волновать разница между барьером и лимитом?
У вас здесь очень много вопросов.
Что это означает, когда сбой tcpsndbuf увеличивается? failcnt - это простейший термин, в соответствии с которым он выходит за пределы ограничения ресурсов. Таким образом, в сочетании с tcpsndbuf это означает, что он будет увеличивать этот счетчик, сколько раз он проходит мимо ресурса размера буфера tcp. Если вы постоянно используете этот счетчик в течение длительного периода времени, вы начнете замечать и испытывать проблемы с производительностью сети.
Есть разница между барьером и лимитом.
Преодолев барьер, вы просто увидите снижение производительности сети. Приложение по-прежнему будет работать, но производительность сети будет низкой.
При превышении лимита на определенный период времени вы начнете видеть разорванные соединения.
Что касается 2,5 КБ, это необходимо для обеспечения достаточного буферного пространства, чтобы текущие сетевые соединения могли успешно отправлять данные, в противном случае это может привести к зависанию соединений на полпути при отправке данных.
__
Failcnt увеличен или нет? Поле failcnt показывает количество отклоненных «выделений ресурсов» за время жизни контейнера. Это увеличивается в зависимости от того, сколько раз tcpsndbuf достигает предела (это то, что я имел в виду под «превышением размера буфера tcp»).
Предположим, контейнер запрашивает tcpsndbuf за пределами барьера. Разрешено это или нет? Это предоставляется, однако помните, что если вы введете более высокое значение для tcpsndbuf, это не будет автоматически означать, что это улучшит производительность сети. Он также ограничен аппаратными ограничениями. Он начинает ухудшаться из-за проверок согласованности UBC. Если ограничения не выполняются, передача данных через сокеты может зависнуть в некоторых случаях (не всегда, только иногда).