bottleneck
| proqramlama36 | 1 | 3
əjdahalar googlla
yazarların hazırda düşündükləri - attack on titan - toba fəlakəti nəzəriyyəsi - proqramlaşdırma terminləri
Yalnız deyilsən!
Bu duyğuların müvəqqəti olduğunu və kömək mövcud olduğunu bilmək vacibdir. Dostlarınıza, ailənizə, profesionallara müraciət etməyiniz vacibdir. Sizi dinləmək və lazım olan dəstəyi təmin etmək istəyən insanlar var. Sözlük yazarları olaraq səni hər zaman dinləyə bilərik.
Əgər yalnız hiss edirsənsə, 860 qaynar xəttinə müraciət etməyini tövsiyə edirik.
Bundan əlavə "Bottleneck Effect" anlayışı var. Bu effekti real həyatda şəhərdaxili tıxaclarda da müşahidə edirik — yolda nə qədər çox maşın olursa, hərəkət bir o qədər yavaşlayır.
Mən isə bu anlayışı proqram mühəndisliyi tərəfdən izah etmək istəyirəm.
Layihə hazırlayanda, kodlayanda hər şey normal işləyir. Amma nə vaxt ki, proqram təminatının istifadəçi sayı artır — bu istər sayt olsun, istər mobil app, istər desktop tətbiq, istərsə də server əsaslı oyun — o zaman sistemdə donmalar və gecikmələr başlayır.
Problem odur ki, kodlarda heç bir xəta olmur. Bu səbəbdən ilk baxışdan problemin haradan qaynaqlandığını tapmaq çətin olur.
Bəs bu niyə baş verir?
Serverlərin müəyyən resurs limiti var — RAM, CPU, disk I/O və s. istifadəçilərdən eyni anda çoxlu sayda sorğu serverə gəldikdə və bu sorğular serverin resurslarını aşmağa başlayanda sistem sadəcə gücü çatdığı qədər işləyir və geriyə qalan sorğular gözləməyə məcbur qalır.
Bu problemin həlli üçün ilk növbədə məlumat bazasına (database) gedən sorğuları təhlil etmək lazımdır. Yəni hansı sorğular gec cavab verir, onları tapmaq və daha optimal yollarla dəyişmək lazımdır.
Bu müəyyən yerə qədər kömək edir, optimallaşdırma vermiş olur. Amma sistem kifayət qədər böyüyürsə və gəlir gətirirsə, bu zaman artıq DevOps və ya SRE (Site Reliability Engineer) mühəndisləri ilə işləmək zəruri olur. Çünki bu tip məsələlərin professional həlli onlardadır.
Əgər sistem böyüyür, amma gəlir gətirmirsə və əlavə xərclər etmək mümkün deyilsə, bu zaman artıq sistemdə olan ağır funksionallıqları çıxarmaq, sistemə yük verən prosesləri azaltmaq lazımdır.
Məsələn, hazırda Sözlük platformasında donmalar başlayıbsa və ağır query-lərdən şübhələnirsinizsə, onların yerini tapmaq üçün aşağıdakı yolları araşdıra bilərsiniz:
MySQL Slow Query Logs — Məlumat bazasında hansı sorğuların gec icra olunduğunu göstərir.
nginx access.log və error.log faylları — Serverə gələn sorğuları və error-ları izləmək üçün.
Bu log faylları üzərində analiz apararaq problemi aşkarlayıb həll yollarını tapmaq mümkündür.
üzv ol