Мазмунга өтүү

Эстутум агып кетүүсүн аныктоо жана өндүрүмдүүлүктү профилдөө

Сабактын башталышы

Эстутум агып кетүүсүн аныктоо жана өндүрүмдүүлүктү профилдөө

Бир Node процессинин ичиндеги чыныгы агып кетүүнү жана чыныгы тар жерди табыңыз

Негизги идея: Кластерлештирүү жана воркерлер пулу кызматты кеңдигине масштабдоого мүмкүндүк берет, бирок алар эч качан бир процесс эмне үчүн жай иштээрин же анын эстутуму OOM-killer аны кайра иштеткенге чейин эмне үчүн өсө берерин айтпайт. Профилдөө — бул процесстин ичинде иштеген толуктоочу көндүм: V8 инспекторун туташтырыңыз, үймөк сүрөттөрүн (heap snapshots) жана CPU / flame-профилдерин тартыңыз, аларды окуп кармап турган шилтемени же ысык функцияны табыңыз, оңдоңуз жана оңдоону реалдуу жүктөм астында мурда/кийин өлчөп далилдеңиз.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • --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 жүгү сыпайы көрүнсө да.

Салыштыруу. Агып кетүү — ваннаны толтурган жай тамчы: деңгээл жай көтөрүлүп, ашып кеткенге чейин, ал эми чоңураак ванна (көбүрөөк ОЗУ) сатып алуу ташкынды кечиктирет гана. Окуялар циклинин бөгөттөлүшү — бош эмес дүкөндөгү жалгыз касса: канча кардар келгени маанилүү эмес, баары жай операция кылган адамдын артында күтөт. Профилдөө — кайсы түтүк тамчылап, кайсы касса бөгөлүп калганын божомолдоонун ордуна айтып берген диагностикалык сүрөт.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө