Blogg

Vantar skiptiskráin sem frysti þjónana okkar

  1. september hætti einn af framleiðsluþjónum okkar að svara. Álagsjafnarinn merkti hann óheilbrigðan og fjarskipanatólið okkar náði ekki í hann, en ekkert hafði hrunið og engu var lokað vegna of mikillar minnisnotkunar. Þjónninn var í hruni (thrashing): án skiptisvæðis og með gámum sem máttu nota meira minni en vélin átti, eyddi Linux tímanum í að henda út og lesa aftur skrárnar sem það þurfti til að keyra, og komst nánast ekkert áfram. Að bæta 2 GB skiptiskrá á hvern þjón lagaði þetta. Áhugaverðari lexían snerist um heilsufarsathuganir.

Hvernig „fastur“ leit út

  • Heilsufarsathuganir álagsjafnarans runnu út á tíma á þeim þjóni.
  • Skipanir sendar í gegnum AWS Systems Manager sátu í „Pending“ og keyrðu aldrei.
  • Það var engin kill vegna minnisskorts í skráunum. Ekkert ferli dó.

Viku áður höfðum við fært framleiðsluna yfir á minni ARM-þjóna með 2 GB vinnsluminni hver. Staging-þjónninn okkar, enn minni, hafði frosið á sama hátt við að pakka upp gámamynd í birtingu.

Af hverju engin minnisvilla?

Linux drepur aðeins ferli þegar það hefur raunverulega uppurið minni sem hægt er að endurheimta. Þar til komið er að því endurheimtir það minni úr síðuskyndiminninu, afritum af skrám sem það geymir í vinnsluminni, þar á meðal kóða allra keyrandi forrita.

Á þjónunum okkar lögðust minnismörk gámanna saman í um 3,3 GB á vél með um 1,8 GB nýtanlegu. Venjulega nota þeir ekki allir mörk sín samtímis. Þegar þeir gerðu það þá hélt kjarninn áfram að henda forritskóða úr skyndiminninu til að búa til pláss og þurfti síðan að lesa hann aftur af diski um leið og sá kóði keyrði aftur. Sú hringrás, hrunið, getur gert vél nánast algerlega óviðbragðsfæra án þess að hún hafi tæknilega klárað minnið. Þannig að ekkert er drepið og ekkert jafnar sig.

Án skiptisvæðis hefur kjarninn engan stað til að setja minni sem er úthlutað en sjaldan notað, þannig að hann verður að taka það úr skyndiminninu.

Lagfæringin

Bootstrap-skriftan á þjóninum býr nú til 2 GB skiptiskrá með lágri swappiness-stillingu (10) í hvert skipti sem þjónn ræsist eða er lagaður. Lág swappiness þýðir að kjarninn heldur áfram að kjósa að geyma vinnuminni í vinnsluminni, en sjaldan snertar síður mega færast á disk í stað þess að þvinga forritskóða úr skyndiminninu. Við settum þetta á í beinni á báða framleiðsluþjónana og staging, og birtingarferlið endurbirtir bootstrap-skriftuna við hverja framleiðslubirtingu, þannig að skipt út þjónn fær hana líka.

Það sem áhyggjurnar vöktu: óheilbrigði þjónninn hélst

Þjónahópurinn okkar notaði EC2-heilsufarsathuganir, „er vélin í gangi?“, en ekki heilsufarsathuganir álagsjafnarans, „svarar hún beiðnum?“. Þjónn sem álagsjafnarinn var hættur við var því enn heilbrigður að mati hópsins. Hann var aldrei skipt út. Framleiðslan hefði hljóðlega keyrt á einum þjóni þar til einhver tók eftir því og endurræsti hinn.

Að skipta hópnum yfir í heilsufarsathuganir álagsjafnarans virðist augljós lausn en er ekki einföld hjá okkur: við birtingu svara þjónarnir af ásettu ráði með villu á heilsuendapunkti sínum svo að álagsjafnarinn tæmi þá (sjá hvernig við fengum birtingar niður í núll 502-villur). Hópur sem skiptir þjónum út á því merki myndi skipta þeim út mitt í hverri birtingu.

Því bættum við skrefi við birtingargátlistann okkar í bili: eftir hverja birtingu skoðum við heilsu hvers skotmarks á álagsjafnaranum, ekki aðeins hvort birtingarverkið stóðst. Ef skipanir til þjóns sitja í „Pending“ er hann í hruni: endurræstu hann; hann er þegar úr umferð.

Það sem við lærðum

  • „Hrynur ekki“ þýðir ekki „heilbrigt“. Hrun framkallar enga villu, aðeins hægagang svo mikinn að vélin hættir að svara.
  • Litlir þjónar þurfa skiptisvæði. Jafnvel lítið, með lágri swappiness, gefur kjarnanum stað til að setja kalt minni.
  • Minnismörk sem leggjast saman í meira en vélin á eru veðmál. Stundum tapar þú því. Vittu hvenær þú hefur tekið það.
  • Vittu hvaða heilsufarsathugun sjálfvirka skölunin þín treystir. Heilsufarsathugun sem spyr aðeins „er sýndarvélin kveikt?“ skiptir ekki út þjóni sem hefur hætt að virka.

Mythex · Pricing · Smíðaðu hvað sem er með gervigreind · Sniðmát fyrir vefsíður og forrit · Mythex í samanburði · Orðasafn um forritasmíði með gervigreind · Ókeypis verkfæri fyrir forritasmíði með gervigreind · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)