Ad Widget

Collapse

Нагрузка на сервер

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Sunrise_94
    Junior Member
    • Dec 2024
    • 8

    #1

    Нагрузка на сервер

    Здравствуйте

    Подскажите пожалуйста что надо сделать, чтоб снизить нагрузку на zabbix: имеется сервер с двумя(в зеркале) SSD дисками, и оперативной памятью 100ГБ. На данный момент оперативная память занята на 90%, размер БД 200ГБ.
    Также начал замечать, что некоторые оповещения в телеграмм приходят с опозданием на пол дня. Ранее пытался настроить некоторые параметры такие как: internal processes, syncer internal processes, escalator и др. В окончательном итоге не смог найти необходимые значения для корректной работы. Прошу помочь разобраться с параметрами и снизить нагрузку нагрузку на сервер. Не думаю что при небольшом количестве (32 000) активных элементов данных, расходуется столько памяти ОЗУ.
    Ниже параметры zabbix сервера и БД Mysql которые менялись, для более понятной ситуации.
    Менял методом гугления, и получилось примерно так:

    zabbix_server.conf
    LogFileSize=0
    StartPollers=700
    StartSNMPPollers=300
    StartPreprocessors=400
    StartPollersUnreachable=100
    StartHistoryPollers=100
    StartTrappers=100
    StartPingers=50
    StartDiscoverers=50
    StartTimers=10
    StartEscalators=90
    StartAlerters=100
    HousekeepingFrequency=4
    MaxHousekeeperDelete=1000000
    CacheSize=10G
    StartDBSyncers=60
    HistoryCacheSize=2048M
    HistoryIndexCacheSize=256M
    ValueCacheSize=256M
    Timeout=30
    LogSlowQueries=3000
    StartLLDProcessors=30

    my.cnf

    [mysqld]
    # ======
    max_allowed_packet = 128M
    thread_stack = 256K
    max_connections = 500

    # === InnoDB BUFFER POOL ===
    innodb_buffer_pool_size = 70G
    innodb_buffer_pool_instances = 16
    innodb_buffer_pool_chunk_size = 1G

    # === InnoDB LOG ===
    innodb_log_buffer_size = 256M
    innodb_redo_log_capacity = 10G
    innodb_log_files_in_group = 2

    # === InnoDB ===
    innodb_flush_log_at_trx_commit = 2
    innodb_flush_method = O_DIRECT
    innodb_file_per_table = ON
    innodb_flush_neighbors = 0
    innodb_read_io_threads = 64
    innodb_write_io_threads = 64
    innodb_io_capacity = 4000
    innodb_io_capacity_max = 8000
    innodb_purge_threads = 4
    innodb_thread_concurrency = 0
    innodb_adaptive_hash_index = OFF

    # ======
    join_buffer_size = 16M
    tmp_table_size = 256M
    max_heap_table_size = 256M
    sort_buffer_size = 8M
    read_buffer_size = 4M
    read_rnd_buffer_size = 8M
    table_open_cache = 10000
    table_definition_cache = 4000
    table_open_cache_instances = 16

    # === ZABBIX ===
    open_files_limit = 65535
    max_prepared_stmt_count = 128000
    transaction_isolation = READ-COMMITTED
    binlog_format = ROW
    sync_binlog = 0

    # ======
    skip_name_resolve = 1
    back_log = 3000
    thread_cache_size = 100
    wait_timeout = 600
    interactive_timeout = 600
  • PavelZ
    Senior Member
    • Dec 2024
    • 167

    #2
    Делайте partitioning через скрипт для mysql. Все инсталляции на mysql вынуждены этим заниматься. Работа всех компонент zabbix автоматически улучшается.

    CacheSize=10G
    А это действительно нужно?

    Так же нужно разобраться как именно память распределена между компонентами.
    mysql, php, zabbix - это отдельные компоненты и действовать нужно по-разному.
    Last edited by PavelZ; Today, 17:28.

    Comment

    • Jimson
      Senior Member
      • Jan 2008
      • 1332

      #3
      смигрировать вручную данные в pgsql+tsdb не проще и главное надежнее чем со скриптами партиционированя на mysql? у меня у самого старые забиксы под mysql, сказать что плохо это ничего не сказать, еще и дважды уже ловил сбой innodb, пересоздавать террабайтный mysql вообще поминки, хз как будет житься под pgsql, надеюсь сильно лучше
      а миграцию можно вообще устроить через мипорт/экспорт на другой сервак - создать вначале всю структуру, а потом выгрести идентификаторы метрик sql запросами, составить табличку старый>новый, сдернуть с mysql данные, sed, подсунуть psql
      не очень просто, но это можно уже делать при работающем новом сервере, ну или забить на старый метрики, подержать включенным оба сервера пару недель, а потом переключиться на новый как так и было

      Comment

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

        #4
        Во-первых - указать точную версию Zabbix, без этого дельные советы могуть быть "пальцем в небо".
        Во-вторых - мне кажется не совсем разумной конфигурация сервера Zabbix:
        • слишком большое количество процессов (вам реально нужно 400 препроцессоров и 300 SNMP поллеров?). Стандартный шаблон для сервера Zabbix имеет графики загруженности серверных процессов - по ним и нужно ориентироваться, не надо плодить лишнего. А DBSyncer'ов вообще не рекомендуют делать больше четырёх (это значение по умолчанию, ссылка) без явных рекомендаций от техподдержки;
        • 10 гигабайт под кэш конфигурации (CacheSize=10G) при крошечном размере под кэш истории (ValueCacheSize=256M) - как-то странно. Обычно бывает обратное соотношение. Смотреть, опять же, ориентируясь на графики в стандартном шаблоне для сервера Zabbix.

        Comment

        Working...