Ad Widget

Collapse

Тормоза при миграции Zabbix 4.4 -> 7.0

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MadMikeFu
    Junior Member
    • Oct 2024
    • 6

    #1

    Тормоза при миграции Zabbix 4.4 -> 7.0

    ДД всем!

    Стоял Zabbix 4.4.10 на Ubuntu 18.04 БД Mariadb 10.3 - худо бедно справлялся с работой.
    Перенесли базу и прочее на Almalinux 9, Mariadb 10.5 и тут проц прям загибается, хотя добавили еще пару ядер.

    Click image for larger version

Name:	изображение.png
Views:	146
Size:	102.9 KB
ID:	492653

    Параметры по памяти на Mariadb такие же, как были на старом.
    Где бы копать, чтобы понять чего тормозит?

    Сейчас стоит Zabbix 7.0.4
    php-fpm-8.0.30-1.el9_2.x86_64
    nginx-1.20.1-14.el9_2.1.alma.1.x86_64
    mariadb-server-10.5.22-1.el9_2.alma.1.x86_64

    6 vCPU 32GB RAM
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Я вижу, во-первых, несколько процессов Python3, запущенных от пользователя zabbix.
    Во-вторых, процессы php-fpm, каждый из которых жрёт CPU немного, но таких процессов - целая стопка. Это веб-интерфейс, я бы проверил параметры PHP (может, там чего подкрутить можно). Как минимум - зашёл бы в веб-интерфейсе Zabbix админом на страничку ".../setup.php", ткнул бы там один раз "Next" и проверил пререквизиты. Возможно, нужно им выделить чуть больше памяти.
    Наконец, в третьих - убедился бы, что движок MariaDB использует нужные кодировки (character set utf8mb4 collate utf8mb4_bin) и формат таблиц (InnoDB).

    Comment

    • MadMikeFu
      Junior Member
      • Oct 2024
      • 6

      #3
      setup.php показывает OK везде
      Click image for larger version

Name:	изображение.png
Views:	117
Size:	37.8 KB
ID:	492678
      python процессы - это специальные скрипты - на старом сервере они не вызывают проблемы.

      кодировка показывается, как
      Click image for larger version

Name:	изображение.png
Views:	114
Size:	5.9 KB
ID:	492679
      База перенесена с версии 4.4 и кодировки не менялись, только преобразовали из compact в dynamic, так как вылезает ошибка при обновлении.
      Пересоздали даные таблиц history, чтобы использовались первичные ключи.

      А перекодировка как работает - длительный процесс? БД около 200ГБ






      Comment

      • MadMikeFu
        Junior Member
        • Oct 2024
        • 6

        #4
        Нашел инструкцию по перекодировке



        Click image for larger version  Name:	изображение.png Views:	7 Size:	11.9 KB ID:	492682
        select table_schema as database_name, table_name, engine from information_schema.tables where table_schema not in ('performance_schema') and table_schema='zabbix' order by table_schema, table_name;

        показывает, что все таблицы в базе zabbix InnoDB


        ЗЫ. перекодировал базу согласно этой статьи. Очень быстро прошло

        MariaDB [zabbix]>
        MariaDB [zabbix]> SET @ZABBIX_DATABASE = 'zabbix';
        Query OK, 0 rows affected (0.000 sec)

        MariaDB [zabbix]> set innodb_strict_mode = OFF;
        Query OK, 0 rows affected (0.000 sec)

        MariaDB [zabbix]> CALL zbx_convert_utf8();
        Query OK, 2133820 rows affected (28.281 sec)

        MariaDB [zabbix]> set innodb_strict_mode = ON;
        Query OK, 0 rows affected (0.000 sec)

        MariaDB [zabbix]> drop procedure zbx_convert_utf8;
        Query OK, 0 rows affected (0.004 sec)

        MariaDB [zabbix]> exit

        Но ситуацию это не улучшило
        Last edited by MadMikeFu; 12-10-2024, 14:31.

        Comment

        • Alex_UUU
          Senior Member
          • Dec 2018
          • 541

          #5
          Насколько понял, "БД слишком много ест" (с) Посмотреть процессы в БД? У меня было, что запросы плодились...

          Comment

          • MadMikeFu
            Junior Member
            • Oct 2024
            • 6

            #6
            Originally posted by Alex_UUU
            Насколько понял, "БД слишком много ест" (с) Посмотреть процессы в БД? У меня было, что запросы плодились...
            Пока обнаружилось, что очень много скриптов у нас, собирающих данные и слишком часто запускаются. На старом они работали нормально, но на новом поменяли библиотеку python, которая использовалась, так как старая не поддерживала новые версии Zabbix. Может тут собака зарыта? И скрипты, обращаясь через веб-апи заббикс грузили php-fpm сильно. Сделали больше интервал запуска скриптов - не 1 минута, а 5 и нагрузка спала. Пока наблюдаем.

            Click image for larger version

Name:	изображение.png
Views:	105
Size:	11.5 KB
ID:	492767
            Click image for larger version

Name:	изображение.png
Views:	86
Size:	5.1 KB
ID:	492768
            я так понимаю, у нас нет запросов более 10 секунд, так как лог пустой - скрин выше.
            Last edited by MadMikeFu; 15-10-2024, 07:23.

            Comment

            • Kos
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • Aug 2015
              • 3404

              #7
              Со скриптами тут такой момент.
              Раньше любой скрипт, использующий API, должен был сначала сделать вызов метода user.login, чтобы аутентифицироваться и в ответ получить токен, предъявляемый при последующих обращениях. Однако, если в конце не делать user.logout​, то эти токены генерировались каждый раз и накапливались в одной из таблиц базы данных Zabbix, что начиная с какой-то версии (не скажу точно) приводило к проблемам.​
              Начиная с версии 5.4 (ссылка), токен для использования в API можно генерировать заранее - тогда вообще не нужно делать login/logout.
              Проверьте ваши скрипты, делают ли они logout (явно или неявно), а лучше - перепишите их на использование токенов.

              Comment

              • MadMikeFu
                Junior Member
                • Oct 2024
                • 6

                #8
                Originally posted by Kos
                Со скриптами тут такой момент.
                Раньше любой скрипт, использующий API, должен был сначала сделать вызов метода user.login, чтобы аутентифицироваться и в ответ получить токен, предъявляемый при последующих обращениях. Однако, если в конце не делать user.logout, то эти токены генерировались каждый раз и накапливались в одной из таблиц базы данных Zabbix, что начиная с какой-то версии (не скажу точно) приводило к проблемам.​
                Начиная с версии 5.4 (ссылка), токен для использования в API можно генерировать заранее - тогда вообще не нужно делать login/logout.
                Проверьте ваши скрипты, делают ли они logout (явно или неявно), а лучше - перепишите их на использование токенов.
                logout самые важные используют. В перспективе посмотрим токены.

                Спасибо

                Comment

                Working...