Невозможно найти область памяти в контейнере openvz
У меня очень странная проблема с одним из моих контейнеров openvz. Использование памяти, сообщаемое инструментами top, htop, free и openvz, составляет ~4 ГБ из выделенных 10 ГБ.
Когда я перечисляю процессы по использованию памяти или использую скрипт ps_mem.py, я получаю только ~800 МБ памяти. Точно так же, когда я просматриваю список процессов в htop, я не в состоянии точно определить нарушителя памяти.
Определенно, в моем контейнере протекает процесс, но даже когда он достигает критических уровней, и я останавливаю все в этом контейнере (кроме ssh, init и shell), я не могу вернуть оперативную память обратно. Помогает только перезапуск контейнера, в противном случае OOM начинает вставать в контейнер в конце концов.
Я исходил из того, что протекающий процесс освобождает всех своих оперативных памяти, когда их убивают, и вы можете наблюдать за их неправильным поведением с помощью топовых или аналогичных инструментов.
Если кто-нибудь когда-либо испытывал подобное поведение, я был бы благодарен за любые подсказки. Контейнер работает под управлением icinga2 (что, как я подозреваю, вызывает утечку оперативной памяти), хотя в большинстве случаев процесс мониторинга простаивает, поскольку ему удается выполнять все запланированные проверки более чем своевременно - поэтому я ожидаю, что использование оперативной памяти уменьшится на те времена. Это не так, хотя.
1 ответ
У меня была похожая проблема в прошлом, и в конце концов она была решена хостинговой компанией, где у меня был контейнер openvz. Я думаю, что наилучшим подходом было бы открыть билет поддержки вашему хостеру, объяснить им проблему и попросить расследовать. Может быть, они используют устаревшую версию ядра, или они сделали изменения на сервере, которые повлияли на ваш контейнер ovz.