Эстутум агып кетүүсүн аныктоо жана өндүрүмдүүлүктү профилдөө
Бир Node процессинин ичиндеги чыныгы агып кетүүнү жана чыныгы тар жерди табыңыз
--inspectаркылуу V8 инспекторун туташтыруу жана--cpu-prof/--heapsnapshot-near-heap-limitаркылуу GUI-сиз профилдерди тартуу;process.memoryUsage()окуп, чыныгы агып кетүүнү адаттагы GC кечигүүсүнөн ажыратуу;- үч сүрөт техникасын колдонуу жана эстутумду эмне кармап турганын табуу үчүн shallow менен retained өлчөмүн айырмалоо;
- flame-графты — self time менен total time — окуп ысык жолду табуу;
monitorEventLoopDelayаркылуу окуялар циклинин бөгөттөлүшүн өлчөп жоюу;- жүктөм астында мурда/кийин метрикаларын салыштырып оңдоону баалоо.
1. Процесстин ичинде диагностика эмне үчүн өзүнчө көндүм
Кеңдигине масштабдоо (Өндүрүмдүүлүк жана кластерлештирүү темасы) сизде бар нерсени көбөйтөт. Ар бир воркер мүнөтүнө 5 МБ жоготсо, сегиз воркерди иштетүү бардыгы OOM боюнча кайра иштей турган сегиз процессте мүнөтүнө 40 МБ жоготуу дегенди билдирет. Аппараттуулукту кошуу симптомду бир азга жашырат жана эсебиңизди көбөйтөт; кемчиликти эч качан жойбойт. Диагностика — тескери кадам: маселени бир процесске кыскартып, аспаптарды туташтырып, ичине карайсыз.
Узак жашаган Node кызматтарында эки типтеги мүчүлүш үстөмдүк кылат:
- Эстутум агып кетүүлөрү. Тирүү үймөк чектелбей өсөт, анткени бир нерсе бошотулушу керек болгон шилтемени кармап турат. Резиденттик эстутум (RSS) сааттар же күндөр бою өйдө жылат, анан ядро процессти OOM боюнча өлтүрөт (же контейнер лимитине жетип кайра иштейт).
- Окуялар циклинин бөгөттөлүшү. Бир синхрондуу, CPU-га оор чакырык бардык суроо-талапты тейлеген жалгыз агымды тоңдурат. Өткөрүмдүүлүк кулайт, ал эми куйрук кечигүүсү (p99) жарылат, орточо CPU жүгү сыпайы көрүнсө да.
Салыштыруу. Агып кетүү — ваннаны толтурган жай тамчы: деңгээл жай көтөрүлүп, ашып кеткенге чейин, ал эми чоңураак ванна (көбүрөөк ОЗУ) сатып алуу ташкынды кечиктирет гана. Окуялар циклинин бөгөттөлүшү — бош эмес дүкөндөгү жалгыз касса: канча кардар келгени маанилүү эмес, баары жай операция кылган адамдын артында күтөт. Профилдөө — кайсы түтүк тамчылап, кайсы касса бөгөлүп калганын божомолдоонун ордуна айтып берген диагностикалык сүрөт.