Намерение состоит в том, чтобы получить securityEngineId путем декодирования ловушки SNMP v3 с помощью pysnmp, но когда ловушки SNMP поступают постоянно, использование памяти приложением через некоторое время достигает предела памяти контейнеров докеров, и если память увеличивается, она снова начинает увеличиваться. >
пытались собрать вручную, но поскольку это не гарантирует освобождения памяти, память продолжает расти до тех пор, пока не будет достигнут предел контейнера (проверяется с помощью команды docker stats)
Любой подскажите, что может быть причиной этой проблемы с памятью?
Ниже код представляет собой основную часть, где происходит декодирование:
Код: Выделить всё
if int(msg_version) == 3:
msg, rest_of_whole_msg = decoder.decode(wholeMsg, asn1Spec=v3Message())
security_parameters = msg.getComponentByPosition(0)
security_parameters, rest = decoder.decode(
security_parameters, asn1Spec=UsmSecurityParameters()
)`
ОБНОВЛЕНИЕ (29 мая 2024 г.). Похоже, проблема связана с pysnmp, поскольку мы используем pysnmp для декодирования и проверки ловушек от конкретного агента. Удаление этого кода не помогло, и возникла проблема только с ловушками версии 3.
Ожидается, что приложение достигнет определенного объема памяти, который используется при запуске, а часть - для обработки ловушек, и перестанет увеличиваться. линейно.
Подробнее здесь:
https://stackoverflow.com/questions/785 ... ous-memory