Решение проблем, связанных с памятью [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:dpi_components:platform:dpi_admin:mem_problems [2024/09/26 15:29] – внешнее изменение 127.0.0.1dpi:dpi_components:platform:dpi_admin:mem_problems [2025/01/16 11:12] (текущий) – [mem_quic_ietf_savebl] elena.krasnobryzh
Строка 1: Строка 1:
 ======Решение проблем, связанных с памятью====== ======Решение проблем, связанных с памятью======
 {{indexmenu_n>5}} {{indexmenu_n>5}}
 +
 <note warning>Внимание! Не изменяйте данные параметры самостоятельно. Обратитесь для этого в [[dpi:techsupport_info|техническую поддержку]].</note> <note warning>Внимание! Не изменяйте данные параметры самостоятельно. Обратитесь для этого в [[dpi:techsupport_info|техническую поддержку]].</note>
 +=====mem_tracking_flow=====
 +''mem_tracking_flow'' — объем памяти для обработки IPv4 flow, который аллоцируется при старте СКАТ.
  
-  - ''mem_tracking_flow'' — объем памяти для обработки IPv4 flow, который аллоцируется при старте СКАТ.\\ Каждый обрабатываемый flow будет размещен в этой памяти и будет обработан в соответствии с определёнными в конфигурации политиками и правилами. Заполненность этого пула можно отслеживать в ''/var/log/dpi/fastdpi_stat.log'' (как описано [[dpi:dpi_components:platform:mon_stat:stat_log|здесь]]). Если пул будет исчерпан, то СКАТ уже не сможет обрабатывать новые flow. +Каждый обрабатываемый flow будет размещен в этой памяти и будет обработан в соответствии с определёнными в конфигурации политиками и правилами. Заполненность этого пула можно отслеживать в ''/var/log/dpi/fastdpi_stat.log'' (как описано [[dpi:dpi_components:platform:mon_stat:stat_log|здесь]]). Если пул будет исчерпан, то СКАТ уже не сможет обрабатывать новые flow. 
-  ''mem_preset'' — способ инициализации памяти в DPI.\\ DPI выделяет память статически: при старте процесса и в момент создания некоторых профилей услуг (таких как NAT, черные и белые списки), в процессе работы дополнительная память не выделяется. Потребление памяти растет, так как ОС Linux различает резидентную (обозначена в top как RES) и виртуальную (обозначена в top как VIRT) память процесса, особенность в том, что пока память не инициализирована (фактически инициализирована нулем), то она не записывается Linux в резидентную и перемещается туда по мере ее инициализации.\\ Настройка ''mem_preset=1'' в файле ''/etc/dpi/fastdpi.conf'' позволяет DPI инициализировать почти всю выделенную память при старте процесса. Это предотвращает рост резидентной памяти (RES) в процессе работы, так как память сразу полностью инициализируется. Однако, этот режим замедляет старт системы и требует достаточного объема физической оперативной памяти. Рекомендуется учитывать этот фактор и следить за расходом виртуальной (VIRT) и резидентной (RES) памяти. + 
-  ''mem_ssl_parsers'' — объем памяти для обработки SSL, который аллоцируется при старте СКАТ.\\ Явным признаком того, что текущего размера пула не хватает — наличие в ''/var/log/dpi/fastdpi_slave_*.log'' ошибок вида: <code bash>[ERROR   ][000000118902699100][042E5F001EF5C480] Can't allocate record+=====mem_preset===== 
 +''mem_preset'' — способ инициализации памяти в DPI. 
 + 
 +DPI выделяет память статически: при старте процесса и в момент создания некоторых профилей услуг (таких как NAT, черные и белые списки), в процессе работы дополнительная память не выделяется. Потребление памяти растет, так как ОС Linux различает резидентную (обозначена в top как RES) и виртуальную (обозначена в top как VIRT) память процесса, особенность в том, что пока память не инициализирована (фактически инициализирована нулем), то она не записывается Linux в резидентную и перемещается туда по мере ее инициализации. 
 + 
 +Настройка ''mem_preset=1'' в файле ''/etc/dpi/fastdpi.conf'' позволяет DPI инициализировать почти всю выделенную память при старте процесса. Это предотвращает рост резидентной памяти (RES) в процессе работы, так как память сразу полностью инициализируется. Однако, этот режим замедляет старт системы и требует достаточного объема физической оперативной памяти. Рекомендуется учитывать этот фактор и следить за расходом виртуальной (VIRT) и резидентной (RES) памяти. 
 + 
 +=====mem_ssl_parsers===== 
 +''mem_ssl_parsers'' — объем памяти для обработки SSL, который аллоцируется при старте СКАТ. 
 + 
 +Явным признаком того, что текущего размера пула не хватает — наличие в ''/var/log/dpi/fastdpi_slave_*.log'' ошибок вида:  
 +<code bash> 
 +[ERROR   ][000000118902699100][042E5F001EF5C480] Can't allocate record
 ssl_state : IP : <IP:port> --> <IP:port> ssl_state : IP : <IP:port> --> <IP:port>
 [ERROR   ][000000118902954180][042E5F001EF5C50B] Can't allocate record [ERROR   ][000000118902954180][042E5F001EF5C50B] Can't allocate record
-ssl_state_sni : IP : <IP:port> --> <IP:port></code> Нехватка парсеров для SSL может привести к тому, что будет страдать обработка HTTPS трафика (может влиять на фильтрацию по спискам РКН).\\ При появлении подобных ошибок рекомендуется увеличивать значение ''mem_ssl_parsers'' в 1,5 - 2 раза (стоит учитывать объем свободной RAM).+ssl_state_sni : IP : <IP:port> --> <IP:port> 
 +</code>  
 + 
 +Нехватка парсеров для SSL может привести к тому, что будет страдать обработка HTTPS трафика (может влиять на фильтрацию по спискам РКН).\\ При появлении подобных ошибок рекомендуется увеличивать значение ''mem_ssl_parsers'' в 1,5 - 2 раза (стоит учитывать объем свободной RAM). 
 + 
 +=====mem_ssl_savebl===== 
 +''mem_ssl_savebl'' (холодный) — задает количество сохраняемых буферов для разбора ssl при перемешивании пакетов.\\ По умолчанию = 10% от ''[[dpi:dpi_components:platform:dpi_admin:mem_problems#mem_ssl_parsers|mem_ssl_parsers]]''. Если значение = ''0'' — сохранение и обработка не происходит.\\ Первое значение — из conf, в скобках — то что используется. 
 + 
 +Пример вывода из alert: 
 +  - Параметр не задан<code bash> 
 +    mem_ssl_parsers              : 320000 
 +    mem_ssl_savebl               : -1 (32000)</code> 
 +  - Задан ''mem_ssl_savebl=1234''<code bash> 
 +    mem_ssl_parsers              : 320000 
 +    mem_ssl_savebl               : 1234 (1234)</code> 
 + 
 +====Cтатистика утилизации сохранения буферов парсинга ssl запросов====  
 +<code bash> 
 +    [STAT    ][2024/08/19-17:26:05:599912] Detailed statistics on SSL_SAVEBL : 
 +             thread_slave= 0 : 1522/1/32000 0/0/0/0/0/ 6/6/2561 426/348/556 1/1/32000 
 +             Total : 1522/1/32000 0/0/0/0/0/ 6/6/2561 426/348/556 1/1/32000 
 +</code> 
 + 
 +Обозначим: ''a1/a2/a3 b1/b2/b3/b4/b5 c1/c2/c3 d1/d2/d3 e1/e2/e3'' 
 + 
 +''a1'' — размер выделяемой памяти для сохранения записи последующего разбора (совпадает с snaplen)\\ 
 +''a2'' — выделено записей\\  
 +''a3'' — использовано записей 
 + 
 +''b1'' — суммарное количество ошибок при обоработке сохранения пакетов\\  
 +''b2'' — прочитанный размер буфера очень большой\\  
 +''b3'' — в функцию передан некорректный ''isbl_t ind_''\\  
 +''b4'' — ошибка добавления запис в arw — нет места для сохранения списка используемых буферов\\  
 +''b5'' — ошибка добавления данных в ''p_data'' (не можем сохранить буфер) 
 + 
 +''c1'' — количество запросов на сохранение данных\\  
 +''c2'' — освобождено сохраненных пакетов\\  
 +''c3'' — суммарный размер пакетов, которые были сохранены 
 + 
 +''d1'' — средний размер сохраненного TCP пакета\\  
 +''d2'' — min размер сохраненного TCP пакета\\  
 +''d3'' — max размер сохраненного TCP пакета 
 + 
 +''e1'' — использвоано записей в очереди arw\\ 
 +''e2'' — свободно записей (могут быть повторно использовано)\\  
 +''e3'' — выделено записей в очереди
  
 +=====mem_quic_ietf_savebl=====
 +''mem_quic_ietf_savebl'' — задает количество буферов для разбора quic_ietf-запросов, которые состоят из нескольких пакетов. Значение по умолчанию = 15% от ''[[dpi:dpi_components:platform:dpi_admin:mem_problems#mem_ssl_parsers|mem_ssl_parsers]]''.