Middle
Ի՞նչ կլինի կոնտեյների հետ, եթե հիշողության սահմանը գերազանցվի։
sobes.tech AI
Պատասխան AI-ից
Երբ Docker կոնտեյների համար սահմանված հիշողության սահմանաչափը գերազանցվում է, տեղի են ունենում հետևյալ հիմնական իրադարձությունները՝
- OOM (Out of Memory) իրադարձություն: Օպերացիոն համակարգի միջուկը հայտնաբերում է, որ կոնտեյների ներսում ընթացող գործընթացը փորձում է հատկացնել հիշողություն, որը գերազանցում է սահմանված սահմանաչափը:
- Նշան Killed: Միջուկը ուղարկում է
SIGKILLնշան կոնտեյների ներսում գտնվող գործընթացին։ Այս նշանը չի կարող ընկալվել կամ անտեսվել կոնտեյների մեջ աշխատող ծրագրի կողմից: - Կոնտեյների ավարտ: Կոնտեյների ներսում ընթացող գործընթացը ուժեղ կերպով ավարտվում է։ Docker դոմենը հայտնաբերում է, որ հիմնական գործընթացը ավարտվել է և փոխում է կոնտեյների կարգավիճակը՝
Exited: - Ելքային կոդ: Կոնտեյները ավարտվում է ոչ զրո ելքային կոդով (հաճախ 137), ինչը ցույց է տալիս, որ այն ուժեղ կերպով ավարտվել է նշանով:
Հետևանքներ ծրագրի և համակարգի համար:
- Կոնտեյնում աշխատող ծրագիրը հանկարծակի ավարտվում է:
- Եթե վերագործարկման քաղաքականություն է սահմանված (
restart policy), Docker-ը փորձելու է վերագործարկել կոնտեյները: - Կոնտեյների և/կամ հոստի լոգերում գրանցվելու է OOM իրադարձությունը և կոնտեյների ավարտը:
Նմուշային կարգավորումը հիշողության սահմանափակման:
# Docker Compose օրինակ
services:
myapp:
image: myimage
mem_limit: 512m # Սահմանում է 512 ՄԲ հիշողության սահմանափակում
# Docker գործարկման օրինակ
docker run -m 512m myimage # Սահմանում է 512 ՄԲ հիշողության սահմանափակում