Asosiy kontentga o‘tish

Maqolalar 5 daqiqa 87 ko‘rish

Server o‘ldimi yoki tarmoq? Uch soatlik vahimadan chiqqan saboq

«Server yotdi» degan uch soatlik vahima aslida mintaqaviy internet-marshrut uzilishi bo‘lib chiqdi — server esa butun shu vaqt davomida sog‘ turgan edi. Bir noto‘g‘ri savol qanday qilib bir necha soatni yeb qo‘yishi va to‘g‘ri savol 30 soniyada javob berishi haqida.

devops backend

Mundarija

Bir kuni bu sayt joylashgan server "o‘ldi". Ping javob bermaydi, SSH ulanmaydi, sayt ochilmaydi — barcha belgilar bitta narsani aytardi. Klassik vahima boshlandi: reboot bosildi, provayder paneli titkilandi, gap hatto "serverdagi loyihani butunlay o‘chirib, qaytadan qo‘yamiz" darajasigacha bordi. Uch soatdan keyin esa haqiqat ma'lum bo‘ldi: server umuman o‘lmagan edi, u butun shu vaqt davomida bemalol ishlab turgan edi. Bu xatodan chiqqan saboq ustida to‘xtalaman, chunki u pul yoki kod emas, to‘g‘ri fikrlash haqida.

Vahima qanday boshlandi#

Belgilar chindan ham "server o‘ldi"ga o‘xshardi. O‘zbekistondagi kompyuterimdan ping so‘rovlarining hammasi yo‘qolardi, SSH esa timeout bilan tugardi. Sayt brauzerda ochilmasdi. Hatto provayderning boshqaruv paneli ham qisman qotib turardi — konsol ulanmasdi, ba'zi sahifalar ochilmasdi.

Shundan tabiiy, lekin xato xulosa chiqdi: "server qotib qolgan, reboot kerak". Reboot berildi, hech narsa o‘zgarmadi. Va aynan shu yerda vahima kuchaydi, chunki "eng ishonchli davo" ishlamadi.

Bitta savol hammasini o‘zgartirdi#

O‘sha paytda berilishi kerak bo‘lgan savol berilmagan edi: server mendan ko‘rinmayapti — lekin boshqalardan ko‘rinyaptimi?

Buni tekshirish bir necha soniyalik ish. check-host.net degan xizmat saytni dunyoning turli nuqtalaridan bir vaqtda tekshiradi. Natija meni hayratga soldi:

Natija
Germaniya:    ✅ 200 OK (0.4s)
Niderlandiya: ✅ 200 OK
Hindiston:    ✅ 200 OK
Eron:         ✅ 200 OK
Qozog‘iston:  ❌ ulanish yo‘q
O‘zbekiston:  ❌ ulanish yo‘q  (mening kompyuterim)

Sayt butun dunyoga bemalol javob berardi. Yotgan narsa server emas, balki Markaziy Osiyo bilan serverning Germaniyadagi data-markazi orasidagi internet-marshrut edi. Bunday uzilishlar magistral provayderlarda vaqti-vaqti bilan bo‘lib turadi va odatda bir necha soatda o‘z-o‘zidan tuzaladi. Bizniki ham xuddi shunday tuzaldi — hech kim hech narsa qilmagan holda.

Keyingi safar uchun tartib#

Bu voqeadan keyin men o‘zim uchun "server yotdi" holatida amal qiladigan aniq tartib chiqarib oldim. Avvalo o‘z internetimni tekshiraman — boshqa saytlar ochilyaptimi, ping 8.8.8.8 javob beryaptimi? Keyin saytni global nuqtalardan tekshiraman, chunki bu atigi o‘ttiz soniya oladi va vahimaning yarmini o‘sha zahoti kesib tashlaydi. Undan keyin boshqa tarmoqdan urinib ko‘raman — telefondagi mobil internet ko‘pincha butunlay boshqa marshrutdan yuradi, shuning uchun Wi-Fi'da ochilmagan sayt u yerda ochilishi mumkin. Provayder panelidagi grafiklarga ham qarayman: agar protsessor va xotira chizig‘i uzilmay davom etayotgan bo‘lsa, demak virtual mashina tirik, muammo tarmoqda. Va faqat shulardan keyin, agar chindan zarur bo‘lsa, reboot haqida o‘ylayman.

O‘ttiz soniyalik tekshiruv — buyruqlar bilan#

Yuqoridagi tartib fikrlash haqida edi; endi uni aniq buyruqlarga aylantiray, chunki vahima paytida odam o‘ylashni emas, tayyor qadamni qidiradi. Quyidagilar shu tartibda, yuqoridan pastga beriladi va har biri oldingisining javobiga qarab ma'no kasb etadi.

Birinchi savol: mening internetim tirikmi?

Terminal
ping -c 3 8.8.8.8

Javob kelmasa, muammo umuman serverda emas — shu yerda to‘xtang va Wi-Fi'ingizni qarang.

Ikkinchi savol: paketlar qayerda to‘xtaydi?

Terminal
traceroute solijonov.uz
Natija
traceroute to solijonov.uz (5.187.3.8), 15 hops max, 40 byte packets
 1  192.168.1.1 (192.168.1.1)  11.858 ms
 2  *
 3  *
 ...
11  201648.fornex.cloud (5.187.3.8)  92.967 ms

Bu natijaga alohida to‘xtalay, chunki u vahima paytida odamni chalg‘itadi. O‘rtadagi yulduzchalarni ko‘rib "mana, uzilib qolibdi" deb o‘ylash oson — aslida ular shunchaki ICMP so‘roviga javob bermaydigan routerlar, bu mutlaqo normal holat. Muhimi — oxirgi qator: paket manzilga yetib borganmi? Yetib borgan bo‘lsa, marshrut butun. Agar uzilish bo‘lsa, yulduzchalar oxirigacha davom etadi va server nomi hech qachon chiqmaydi — o‘shanda to‘xtagan oxirgi IP sizga uzilish qayerdaligini aytadi.

Uchinchi savol: sayt javob beryaptimi va qanchada?

Terminal
curl -sS -o /dev/null https://solijonov.uz \
  -w "ulanish: %{time_connect}s | TLS: %{time_appconnect}s | javob: %{time_total}s | holat: %{http_code}\n"
Natija
ulanish: 0.100780s | TLS: 0.203292s | javob: 0.410292s | holat: 200

Bu bitta qator brauzerdagi "ochilmayapti" dan ancha ko‘p narsa aytadi. Agar ulanish vaqtida qotsa — muammo tarmoqda; TLS bosqichida qotsa — sertifikatda; holat 502 yoki 503 bo‘lsa — tarmoq ham, server ham sog‘, yiqilgan narsa ilovaning o‘zi.

Va nihoyat, serverga qaytib kirganingizda:

Terminal
uptime
Natija
 22:49:56 up 7 days, 12:16,  0 user,  load average: 0.40, 0.32, 0.30

Bu — "server o‘ldimi?" degan savolga eng aniq javob. up 7 days degani mashina yetti kundan beri uzluksiz ishlab turibdi, ya'ni u hech qachon o‘chmagan. O‘sha kuni men shu buyruqni bersam, uch soatlik vahima birinchi daqiqada tugagan bo‘lardi.

Qolgan saboqlar#

Asosiy saboq shu: "mendan ko‘rinmayapti" degani "o‘chiq" degani emas. Internet — bu marshrutlar to‘ri, va sizning yo‘lingiz uzilgani boshqa hammaning yo‘li uzilgani degani emas.

Yana bir gap — vahima ichida jiddiy qaror qabul qilmaslik kerak. O‘sha kuni biz "loyihani o‘chirib tashlash" qarori arafasida turgan edik, server esa mutlaqo sog‘ edi. Bir daqiqalik tashxis o‘sha qaltis qarordan saqlab qoldi.

Reboot masalasida ham saboq bor edi. O‘sha reboot'dan keyin qo‘lda, nohup bilan ishga tushirilgan bitta bot ko‘tarilmay qoldi, chunki u systemd ostida emas edi. Aynan shundan keyin men hamma xizmatni systemd'ga o‘tkazganman — bu haqda alohida maqolada yozganman.

Va nihoyat, bunday holat uchun monitoring bo‘lgani yaxshi. Tashqi nuqtadan har daqiqada saytni tekshirib turadigan bepul xizmat o‘sha kuni bir zumda to‘g‘ri manzarani ko‘rsatgan bo‘lardi. Eng qimmat saboq esa oddiy: biz uch soat davomida "nima buzilgan" deb izladik, holbuki hech narsa buzilmagan edi — to‘g‘ri savol to‘g‘ri tool bilan o‘ttiz soniyada javob berardi.

5 daqiqa 87 marta o‘qildi