Тавре ки шумо тахмин кардаед, бозоғозкунии ҳазорҳо серверҳо тӯлонитарин вақтро мегирад. Азбаски на ҳама осебпазириҳо барои ҳама серверҳо муҳиманд, мо танҳо онҳоеро, ки мустақиман аз Интернет дастрасанд, аз нав оғоз мекунем. Дар абр, барои маҳдуд накардани чандирӣ, мо контейнерҳои аз берун дастрасро ба серверҳои инфиродӣ бо ядрои нав намепайвандем, балки ҳама ҳостҳоро бидуни истисно аз нав оғоз мекунем. Хушбахтона, тартиби он ҷо нисбат ба серверҳои муқаррарӣ соддатар аст. Масалан, контейнерҳои бидуни шаҳрвандӣ метавонанд ҳангоми бозсозӣ ба сервери дигар гузаранд.
Бо вуҷуди ин, ҳанӯз ҳам кор зиёд аст ва он метавонад якчанд ҳафта тӯл кашад ва агар дар версияи нав ягон мушкилот вуҷуд дошта бошад, то чанд моҳ. Ҳамлагарон инро хуб мефаҳманд, бинобар ин ба онҳо нақшаи Б лозим аст.
FragmentSmack/SegmentSmack. Роҳи ҳал
Хушбахтона, барои баъзе осебпазириҳо чунин нақшаи B мавҷуд аст ва он ҳалли мушкилот номида мешавад. Аксар вақт, ин тағирот дар танзимоти ядро/барнома мебошад, ки метавонад таъсири эҳтимолиро кам кунад ё истифодаи осебпазириро комилан аз байн барад.
ipfrag_high_thresh - LONG INTEGER
Maximum memory used to reassemble IP fragments.
ipfrag_low_thresh - LONG INTEGER
Maximum memory used to reassemble IP fragments before the kernel
begins to remove incomplete fragment queues to free up resources.
The kernel still accepts new fragments for defragmentation.
write /proc/sys/net/ipv4/ipfrag_high_thresh: invalid argument docker: Error response from daemon: Cannot start container <...>: [9] System error: could not synchronise with container process.
Қимати параметр дуруст нест. Аммо барои чӣ? Ва чаро он танҳо баъзан эътибор надорад? Маълум шуд, ки Docker тартиби татбиқи параметрҳои Sysctl-ро кафолат намедиҳад (версияи охирини санҷидашуда 1.13.1), бинобар ин баъзан ipfrag_high_thresh кӯшиш мекард, ки ба 256K муқаррар карда шавад, вақте ки ipfrag_low_thresh ҳанӯз 3M буд, яъне маҳдудияти болоӣ камтар буд аз хадди поёнй, ки боиси хатой гардид.
Он вақт мо аллакай механизми худро барои аз нав танзим кардани контейнер пас аз оғоз истифода мебурдем (ях кардани контейнер пас аз он). яхдони гурӯҳӣ ва иҷрои фармонҳо дар фазои номи контейнер тавассути ip netns) ва мо инчунин ба ин қисм параметрҳои навиштани Sysctl илова кардем. Масъала хал карда шуд.
FragmentSmack/SegmentSmack. Хуни аввал 2
Пеш аз он ки мо барои фаҳмидани истифодаи Workaround дар абр вақт пайдо кунем, аввалин шикоятҳои нодир аз корбарон ворид шудан гирифтанд. Дар он вақт аз оғози истифодаи Workaround дар серверҳои аввал чанд ҳафта гузашта буд. Тафтишоти аввалия нишон дод, ки шикоятҳо нисбати хидматҳои инфиродӣ ворид шудаанд, на ҳама серверҳои ин хидматҳо. Проблема боз нихоят номуайян гардид.
Пеш аз ҳама, мо, албатта, кӯшиш кардем, ки танзимоти Sysctl-ро баргардонем, аммо ин ҳеҷ таъсире надошт. Манипуляцияҳои гуногун бо танзимоти сервер ва барномаҳо низ кӯмак накарданд. Бозсозӣ кӯмак кард. Бозоғозкунии Linux ҳамчун ғайритабиӣ аст, зеро он дар рӯзҳои пеш барои Windows муқаррарӣ буд. Бо вуҷуди ин, он кӯмак кард ва мо ҳангоми татбиқи танзимоти нав дар Sysctl онро ба "нобудии ядро " табдил додем. Чӣ қадар бемаънӣ буд...
Пас аз се ҳафта мушкилот боз такрор шуд. Конфигуратсияи ин серверҳо хеле содда буд: Nginx дар реҷаи прокси/балансер. Трафики зиёд нест. Эзоҳҳои нави муқаддимавӣ: шумораи 504 хатогиҳо дар муштариён ҳар рӯз зиёд мешавад (Вақти фарогирии дарвоза). График шумораи 504 хатогиро дар як рӯз барои ин хидмат нишон медиҳад:
"464545 flows_plimit" бастаҳои партофташуда бо сабаби гузаштан аз маҳдудияти навбати як пайвастшавӣ ва "464545 партофташуда" маблағи ҳамаи бастаҳои партофташудаи ин нақшакаш мебошад. Пас аз зиёд кардани дарозии навбат то 1 ҳазор ва аз нав ба кор андохтани контейнерҳо, мушкилот қатъ шуд. Шумо метавонед нишинед ва як смузи бинӯшед.
FragmentSmack/SegmentSmack. Хуни охирин
Аввалан, пас аз чанд моҳ пас аз эълони осебпазирӣ дар ядро, ниҳоят ислоҳи FragmentSmack пайдо шуд (иҷозат диҳед ба шумо хотиррасон кунам, ки дар баробари эълон дар моҳи август, ислоҳи танҳо барои SegmentSmack бароварда шуд), ки ба мо имкон дод, ки аз Workaround даст кашем, ки ба мо хеле душворй овард. Дар ин муддат мо аллакай тавонистем баъзе серверҳоро ба ядрои нав интиқол диҳем ва акнун мо бояд аз аввал оғоз кунем. Чаро мо ядроро бе интизори ислоҳи FragmentSmack навсозӣ кардем? Гап дар сари он аст, ки раванди муҳофизат аз ин осебпазириҳо бо раванди навсозии худи CentOS (ки нисбат ба навсозии танҳо ядро вақти зиёдтарро талаб мекунад) рост омад (ва якҷоя карда шуд). Илова бар ин, SegmentSmack осебпазирии хатарноктар аст ва ислоҳи он фавран пайдо шуд, бинобар ин, ба ҳар ҳол он маъно дошт. Бо вуҷуди ин, мо натавонистем ядроро дар CentOS танҳо навсозӣ кунем, зеро осебпазирии FragmentSmack, ки дар давоми CentOS 7.5 пайдо шуд, танҳо дар версияи 7.6 ислоҳ шуда буд, аз ин рӯ мо маҷбур шудем, ки навсозӣ ба 7.5-ро қатъ кунем ва ҳама чизро аз нав бо навсозии 7.6 оғоз кунем. Ва ин ҳам рӯй медиҳад.
Сониян, шикоятҳои камшумори корбарон дар бораи мушкилот ба мо баргаштанд. Ҳоло мо аллакай аниқ медонем, ки ҳамаи онҳо бо боркунии файлҳо аз муштариён ба баъзе серверҳои мо алоқаманданд. Гузашта аз ин, шумораи хеле ками боргузориҳо аз миқдори умумӣ тавассути ин серверҳо гузаштанд.
Ин ду порчаи як баста (ҳамон ID 53652) бо акс (калимаи Exif дар бастаи аввал намоён аст) мебошанд. Аз сабаби он, ки бастаҳо дар ин сатҳ мавҷуданд, аммо на дар шакли муттаҳидшуда дар партовгоҳҳо, мушкилот ба таври возеҳ бо маҷлис аст. Ниҳоят, далели ҳуҷҷатии ин вуҷуд дорад!
Декодери маҷмӯа ягон мушкилотеро ошкор накардааст, ки ба сохтмон халал мерасонад. Дар ин ҷо кӯшиш кард: hpd.gasmi.net. Дар аввал, вақте ки шумо кӯшиш мекунед, ки чизеро дар он ҷо пур кунед, декодер формати бастаро дӯст намедорад. Маълум шуд, ки дар байни Srcmac ва Ethertype ду октети иловагӣ вуҷуд доранд (ба маълумоти фрагментҳо алоқаманд нестанд). Пас аз нест кардани онҳо, декодер ба кор шурӯъ кард. Бо вуҷуди ин, он ҳеҷ мушкиле нишон дод.
Новобаста аз он ки касе гӯяд, ҷуз он Sysctl дигар чизе ёфт нашуд. Танҳо ёфтани роҳи муайян кардани серверҳои мушкилот бо мақсади фаҳмидани миқёс ва қарор дар бораи амалҳои минбаъда боқӣ монд. Ҳисобкунаки зарурӣ ба қадри кофӣ зуд ёфт шуд: