Вот такое приключилось сегодня: запустил обновляться OPNsense. Процесс шел относительно долго ( дольше чем обычно). В результате после загрузки роутера одно из двух ядер CPU уперлось в 100% утилизации. Нужно найти и “остановить”.

UPD 28.11.2023: Добавил решение через web-gui.

Поиск проблемы

Для начала глянем в top-е кто же выедает CPU. В результате был найден python3.9. Но это мало о чем может сказать, ведь это интерпретатор и под ним может быть запущен любой скрипт. Тогда подключаем ps (мы уже знаем кто " приблизительно нам нужен, поэтому grep-аем по подстроке python):

1
ps awwux | grep python

Получает результат что-то вроде этого (не мой):

1
2
3
4
5
6
7
root    21837 100.0  0.7  43104  30936  -  Rs   16:45   25:49.91 /usr/local/bin/python3 /usr/local/opnsense/scripts/netflow/flowd_aggregate.py (python3.9)
root      273   0.1  0.9  75060  37460  -  S    16:44    0:28.82 /usr/local/bin/python3 /usr/local/opnsense/service/configd.py console (python3.9)
root      268   0.0  0.5  36256  22692  -  Is   16:43    0:03.69 /usr/local/bin/python3 /usr/local/opnsense/service/configd.py (python3.9)
root    21359   0.0  0.4  25764  15512  -  Ss   16:45    0:05.88 /usr/local/bin/python3 /usr/local/opnsense/scripts/dhcp/unbound_watcher.py --domain home.addars (python3.9)
root    78987   0.0  0.3  23736  12468  -  S    16:45    0:01.42 /usr/local/bin/python3 /usr/local/sbin/configctl -e -t 0.5 system event config_changed (python3.9)
root    92022   0.0  0.3  23972  12580  -  S    16:45    0:01.37 /usr/local/bin/python3 /usr/local/opnsense/scripts/syslog/lockout_handler (python3.9)
root    30635   0.0  0.1  12748   2364  0  S+   17:11    0:00.01 grep python

Как видно, нам нужен некто flowd_aggregate.py. Исходя из названия, это какой-то скрипт, который используется вместе с netflow.

Решение

На форуме OPNsense, есть предложения по выключению IPv6. К сожалению это мне не помогло (хотя может быть в каких-то случаях и будет работать). Судя по тому, что в скрипте есть слово aggregate скрипт что-то считает. А так как netflow - это штука для сбора трафика, то есть вероятность, что очистка данных поможет. Именно это шаг решил проблему в моем случае. Нужно выполнить:

1
configctl netflow flush

После чего, чуть призадумавшись, OPNsense ответит в консоль кратное OK. Нагрузка сразу упала.

Через web-gui

Еще один вариант для тех, у кого не настроен ssh, а ctrl+v в web-консоли proxmox не хочет работать, через web-gui. Для этого нужно зайти по адресу /reporting_settings.php и нажать кнопку Repair Netflow Data. Буквально через пару десятков секунд (в предупреждении говорится что все зависит от размера логов и мощности cpu) все заработает как нужно.