Боз дар соли 2016 мо дар Буфер будем
Маҳдудиятҳои протсессор ва троттинг
Мисли бисёр дигар корбарони Kubernetes, kubelet
) чавоб додан ба дархостхоро бас мекунад. Ҳамин тариқ, муқаррар кардани маҳдудиятҳои CPU як роҳи хуби муҳофизати гиреҳҳои шумост.
Маҳдудиятҳои протсессор як контейнерро ба вақти максималии CPU муқаррар мекунанд, ки он метавонад дар як давраи муайян истифода кунад (пешфарз 100 мс аст) ва контейнер ҳеҷ гоҳ аз ин маҳдудият зиёд нахоҳад буд. Дар Кубернетес барои дростинг контейнер ва аз хад зиёд гузаштани онро пешгирй мекунанд, асбоби махсус ба кор бурда мешавад
Агар мо маҳдудияти протсессорро муқаррар накунем, чӣ мешавад?
Мутаассифона, худи мо низ ба ин мушкилот дучор шудем. Ҳар як гиреҳ дорои равандест, ки барои идоракунии контейнерҳо масъул аст kubelet
, ва ӯ посух додан ба дархостҳоро қатъ кард. Гиреҳ, вақте ки ин ҳодиса рӯй медиҳад, ба давлат дохил мешавад NotReady
, ва контейнерҳо аз он ба ҷои дигар равона карда мешаванд ва дар гиреҳҳои нав ҳамон мушкилот эҷод мекунанд. На камтар аз гуфтан сенарияи идеалӣ нест.
Зуҳури мушкилоти дросселкунӣ ва вокуниш
Меъёри калидӣ барои пайгирии контейнер ин аст trottling
, он нишон медиҳад, ки контейнери шумо чанд маротиба пахш карда шудааст. Мо бо таваҷҷӯҳ нигаред, дар баъзе контейнерҳо мавҷудияти дротлер, новобаста аз он ки сарбории протсессор шадид буд ё не. Ҳамчун мисол, биёед яке аз API-ҳои асосии моро бубинем:
Тавре ки шумо дар зер мебинед, мо маҳдудиятро муқаррар кардаем 800m
(0.8 ё 80% аслӣ) ва арзишҳои қуллаи беҳтарин ба даст меоянд 200m
(20% аслӣ). Чунин ба назар мерасад, ки пеш аз қатъ кардани хидмат, мо ҳоло ҳам қудрати зиёди протсессор дорем, аммо ...
Шумо шояд пай бурда бошед, ки ҳатто вақте ки сарбории протсессор аз ҳудуди муқарраршуда камтар аст - ба таври назаррас поёнтар - то ҳол тросскунӣ рух медиҳад.
Бо ин рӯ ба рӯ шуда, мо ба зудӣ якчанд захираҳоро кашф кардем (
Чаро мо фишорро дар сарбории CPU кам мебинем? Варианти кӯтоҳ ин аст: "дар ядрои Linux хатогӣ вуҷуд дорад, ки боиси бесарусомонии контейнерҳо бо маҳдудиятҳои протсессори муайяншуда мегардад." Агар шумо ба табиати мушкилот таваҷҷӯҳ дошта бошед, шумо метавонед презентатсияро хонед (
Бартараф кардани маҳдудиятҳои CPU (бо эҳтиёти шадид)
Пас аз баҳсҳои тӯлонӣ, мо тасмим гирифтем, ки маҳдудиятҳои протсессорро аз ҳама хидматҳое, ки мустақиман ё бавосита ба фаъолияти муҳими корбарони мо таъсир мерасонанд, хориҷ кунем.
Қарор осон набуд, зеро мо устувории кластери худро хеле қадр мекунем. Дар гузашта, мо аллакай ноустувории кластери худро озмуда будем ва он гоҳ хидматҳо захираҳои аз ҳад зиёдро истеъмол карда, кори тамоми гиреҳи онҳоро суст карданд. Акнун ҳама чиз то андозае дигар буд: мо дарки равшани он чизеро, ки аз кластерҳои худ интизор будем, инчунин стратегияи хуби татбиқи тағйироти пешбинишуда доштем.
Мукотиботи тичоратй оид ба масъалаи мудим.
Вақте ки маҳдудиятҳо бардошта мешаванд, гиреҳҳои худро чӣ гуна муҳофизат кардан мумкин аст?
Ҷудо кардани хидматҳои "бемаҳдуд":
Дар гузашта, мо аллакай дидаем, ки баъзе гиреҳҳо ба ҳолате ворид мешаванд notReady
, пеш аз ҳама, аз ҳисоби хидматҳое, ки захираҳои аз ҳад зиёд истеъмол мекунанд.
Мо тасмим гирифтем, ки ин гуна хадамотро дар гиреҳҳои алоҳида ("нишонадор") ҷойгир кунем, то онҳо ба хидматҳои "пайванд" халал нарасонанд. Дар натиҷа, бо нишон додани баъзе гиреҳҳо ва илова кардани параметри таҳаммулпазирӣ ба хидматҳои "нопайванд" мо назорати бештари кластерро ба даст овардем ва барои мо муайян кардани мушкилот бо гиреҳҳо осонтар шуд. Барои анҷом додани равандҳои шабеҳ, шумо метавонед бо худ шинос шавед
Таъин кардани протсессори дуруст ва дархости хотира:
Бузургтарин тарси мо ин буд, ки ин раванд захираҳои зиёдро истеъмол мекунад ва гиреҳ посух додан ба дархостҳоро қатъ мекунад. Азбаски ҳоло (ба шарофати Datadog) мо метавонем ҳама хидматҳоро дар кластери худ ба таври возеҳ назорат кунем, ман якчанд моҳи фаъолияти хидматҳоеро, ки мо нақшаи "беаҳамият" таъин карданро будем, таҳлил кардам. Ман танҳо истифодаи ҳадди аксар CPU-ро бо маржаи 20% муқаррар кардам ва ба ин васила дар гиреҳ ҷой ҷудо кардам, агар k8s кӯшиш кунад, ки хидматҳои дигарро ба гиреҳ таъин кунад.
Тавре ки шумо дар график мебинед, ҳадди аксар сарбории протсессор расидааст 242m
ядроҳои CPU (0.242 ядрои протсессори). Барои дархости протсессор, гирифтани рақами каме калонтар аз ин арзиш кофӣ аст. Лутфан таваҷҷӯҳ намоед, ки азбаски хидматҳо ба корбар нигаронида шудаанд, арзиши қуллаи сарборӣ бо трафик мувофиқат мекунад.
Бо истифодаи хотира ва пурсишҳо низ ҳамин тавр кунед ва voila - ҳамаатон танзим кардаед! Барои бехатарии бештар, шумо метавонед автоматии миқёси уфуқӣ илова кунед. Ҳамин тариқ, ҳар дафъае, ки сарбории захираҳо зиёд аст, автоматизатсия подкҳои нав эҷод мекунад ва кубернетҳо онҳоро ба гиреҳҳои дорои фазои холӣ тақсим мекунанд. Агар дар худи кластер ҷой намонад, шумо метавонед ба худ огоҳӣ таъин кунед ё иловаи гиреҳҳои навро тавассути автоматикунонии онҳо танзим кунед.
Аз нуқсонҳо, бояд қайд кард, ки мо дар «
натиҷаҳои
Ман хушҳолам, ки ин натиҷаҳои олиҷанобро аз таҷрибаҳо дар тӯли чанд ҳафтаи охир нашр мекунам; мо аллакай дар посух дар тамоми хидматҳои тағирёфта беҳбудиҳои назаррасро мушоҳида кардем:
Мо дар саҳифаи хонагии худ натиҷаҳои беҳтарин ба даст овардем (
Оё хатои ядрои Linux ислоҳ шудааст?
Бале,
Бо вуҷуди ин, ҳангоми хондан
Агар версияи тақсимоти шумо аз 4.19 пасттар бошад, ман тавсия медиҳам, ки ба версияи охирин навсозӣ кунед, аммо дар ҳар сурат шумо бояд кӯшиш кунед, ки маҳдудиятҳои протсессорро аз байн баред ва бубинед, ки оё дроссел боқӣ мемонад. Дар зер шумо метавонед рӯйхати қисман хидматҳои идоракунии Kubernetes ва дистрибюторҳои Linuxро бинед:
- Debian: ислоҳи ба версияи охирини тақсимот воридшуда,
сертараддуд , ва хеле тару тоза менамояд (Августи 2020 ). Баъзе версияҳои қаблӣ низ метавонанд ислоҳ карда шаванд. - Ubuntu: ислоҳи ба версияи охирин воридшуда
Ubuntu Focal Fossa 20.04 - EKS ҳанӯз ислоҳ дорад
дар моҳи декабри соли 2019 . Агар версияи шумо аз ин пасттар бошад, шумо бояд AMI-ро навсозӣ кунед. - копс:
Аз июни соли 2020 уkops 1.18+
Тасвири асосии мизбон Ubuntu 20.04 хоҳад буд. Агар версияи шумо аз kops кӯҳна бошад, шумо бояд ислоҳро интизор шавед. Худи мо ҳоло интизор ҳастем. - GKE (Google Cloud): Ислоҳи ҳамгирошуда
дар моҳи январи соли 2020 , аммо бо дростинг мушкилот вуҷуд дорадто ҳол мушоҳида мешавад .
Чӣ бояд кард, агар ислоҳ мушкилоти дросселро ҳал кунад?
Ман боварӣ надорам, ки мушкилот комилан ҳал шудааст. Вақте ки мо ба версияи ядро бо ислоҳ мерасем, ман кластерро месанҷам ва постро навсозӣ мекунам. Агар касе аллакай навсозӣ карда бошад, ман мехоҳам натиҷаҳои шуморо хонам.
хулоса
- Агар шумо бо контейнерҳои Docker дар зери Linux кор кунед (новобаста аз Kubernetes, Mesos, Swarm ё дигарон), контейнерҳои шумо метавонанд аз сабаби дроттлатсия корашонро гум кунанд;
- Кӯшиш кунед, ки ба версияи охирини тақсимоти худ навсозӣ кунед, то ин ки хатогӣ аллакай ислоҳ шудааст;
- Бартараф кардани маҳдудиятҳои протсессор мушкилотро ҳал мекунад, аммо ин як техникаи хатарнок аст, ки бояд бо эҳтиёти шадид истифода шавад (беҳтар аст, ки аввал ядроро навсозӣ кунед ва натиҷаҳоро муқоиса кунед);
- Агар шумо маҳдудиятҳои CPU-ро хориҷ карда бошед, истифодаи CPU ва хотираи худро бодиққат назорат кунед ва боварӣ ҳосил кунед, ки захираҳои CPU аз истеъмоли шумо зиёдтаранд;
- Варианти бехатар ин аст, ки қуттиҳои автоматӣ барои эҷоди подкҳои нав дар ҳолати сарбории сахтафзор, то кубернетҳо онҳоро ба гиреҳҳои ройгон таъин кунанд.
Ман умедворам, ки ин паём ба шумо дар беҳтар кардани кори системаҳои контейнерии шумо кӯмак мекунад.
PS
Манбаъ: will.com