Ad Widget

Collapse

И снова про производительность. Zabbix 1.8.2 и mysql innodb

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ugh
    Senior Member
    • Jun 2009
    • 296

    #31
    кстати
    14к хостов
    160к итемов всего, 39к итемов активных

    время выполнения:
    39366 rows in set (1.02 sec)

    Code:
    mysql> explain select i.itemid,i.hostid,h.proxy_hostid,i.type,i.data_type,i.value_type,i.key_,i.snmp_community,i.snmp_oid,i.snmp_port,i.snmpv3_securityname,i.snmpv3_securitylevel,i.snmpv3_authpassphrase,i.snmpv3_privpassphrase,i.ipmi_sensor,i.delay,i.delay_flex,i.trapper_hosts,i.logtimefmt,i.params,i.status,i.authtype,i.username,i.password,i.publickey,i.privatekey from items i,hosts h where i.hostid=h.hostid and h.status in (0) and i.status in (0,3) and i.itemid between 800800000010001 and 099999999999999999 order by i.itemid;
    +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
    | id | select_type | table | type   | possible_keys           | key     | key_len | ref             | rows  | Extra       |
    +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
    |  1 | SIMPLE      | i     | range  | PRIMARY,items_1,items_3 | PRIMARY | 8       | NULL            | 92572 | Using where |
    |  1 | SIMPLE      | h     | eq_ref | PRIMARY,hosts_2         | PRIMARY | 8       | zabbix.i.hostid |     1 | Using where |
    +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
    2 rows in set (0.00 sec)
    индексы:
    Code:
    mysql> show index from hosts;
    +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
    | Table | Non_unique | Key_name  | Seq_in_index | Column_name  | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
    +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
    | hosts |          0 | PRIMARY   |            1 | hostid       | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
    | hosts |          1 | hosts_1   |            1 | host         | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
    | hosts |          1 | hosts_2   |            1 | status       | A         |           6 |     NULL | NULL   |      | BTREE      |         |
    | hosts |          1 | hosts_3   |            1 | proxy_hostid | A         |           2 |     NULL | NULL   |      | BTREE      |         |
    | hosts |          1 | host_test |            1 | ip           | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
    +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
    5 rows in set (0.00 sec)
    
    mysql> show index from items;
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | items |          0 | PRIMARY  |            1 | itemid      | A         |      168786 |     NULL | NULL   |      | BTREE      |         |
    | items |          0 | items_1  |            1 | hostid      | A         |        5626 |     NULL | NULL   |      | BTREE      |         |
    | items |          0 | items_1  |            2 | key_        | A         |      168786 |     NULL | NULL   |      | BTREE      |         |
    | items |          1 | items_3  |            1 | status      | A         |           5 |     NULL | NULL   |      | BTREE      |         |
    | items |          1 | items_4  |            1 | templateid  | A         |        5114 |     NULL | NULL   |      | BTREE      |         |
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    5 rows in set (0.00 sec)

    Comment

    • den_crane
      Senior Member
      • Feb 2006
      • 272

      #32
      Originally posted by mschedrin
      Количество хостов 2860, Количество items: 81918
      На мой взгляд не так уж и много. Историю сократил до жесточайшего минимума.
      У меня всё еще есть сомнения, правильно ли настроен мой mysql, возможно всё-таки дело в нем?
      а покажите конфиги мускуля и заббикса?

      в общем-то интересны:
      innodb_buffer_pool_size = 400M
      innodb_additional_mem_pool_size = 64M
      key_buffer_size = 150M
      innodb_log_file_size = 150M
      innodb_log_buffer_size = 32M
      innodb_flush_log_at_trx_commit = 2

      у заббикса StartPollers=50 и остальные Start*

      А процессоры какие у сервера? И сколько?

      А вы не пробовали придушить многопоточность:
      innodb-thread-concurrency=2
      может у вас типа http://bugs.mysql.com/bug.php?id=15815
      Last edited by den_crane; 20-04-2010, 08:43.

      Comment

      • mschedrin
        Senior Member
        • Jun 2009
        • 179

        #33
        Originally posted by ugh
        для группы активировать "Режим отладки"
        добавить юзера в группу
        сверху справа будет
        Code:
        ...Профиль|[b]Отладка[/b]|Выйти из системы...
        Спасибо, полезная функция.

        Comment

        • mschedrin
          Senior Member
          • Jun 2009
          • 179

          #34
          Originally posted by ugh
          кстати
          14к хостов
          160к итемов всего, 39к итемов активных

          время выполнения:
          39366 rows in set (1.02 sec)

          Code:
          mysql> explain select i.itemid,i.hostid,h.proxy_hostid,i.type,i.data_type,i.value_type,i.key_,i.snmp_community,i.snmp_oid,i.snmp_port,i.snmpv3_securityname,i.snmpv3_securitylevel,i.snmpv3_authpassphrase,i.snmpv3_privpassphrase,i.ipmi_sensor,i.delay,i.delay_flex,i.trapper_hosts,i.logtimefmt,i.params,i.status,i.authtype,i.username,i.password,i.publickey,i.privatekey from items i,hosts h where i.hostid=h.hostid and h.status in (0) and i.status in (0,3) and i.itemid between 800800000010001 and 099999999999999999 order by i.itemid;
          +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
          | id | select_type | table | type   | possible_keys           | key     | key_len | ref             | rows  | Extra       |
          +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
          |  1 | SIMPLE      | i     | range  | PRIMARY,items_1,items_3 | PRIMARY | 8       | NULL            | 92572 | Using where |
          |  1 | SIMPLE      | h     | eq_ref | PRIMARY,hosts_2         | PRIMARY | 8       | zabbix.i.hostid |     1 | Using where |
          +----+-------------+-------+--------+-------------------------+---------+---------+-----------------+-------+-------------+
          2 rows in set (0.00 sec)
          индексы:
          Code:
          mysql> show index from hosts;
          +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
          | Table | Non_unique | Key_name  | Seq_in_index | Column_name  | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
          +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
          | hosts |          0 | PRIMARY   |            1 | hostid       | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
          | hosts |          1 | hosts_1   |            1 | host         | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
          | hosts |          1 | hosts_2   |            1 | status       | A         |           6 |     NULL | NULL   |      | BTREE      |         |
          | hosts |          1 | hosts_3   |            1 | proxy_hostid | A         |           2 |     NULL | NULL   |      | BTREE      |         |
          | hosts |          1 | host_test |            1 | ip           | A         |       14687 |     NULL | NULL   |      | BTREE      |         |
          +-------+------------+-----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
          5 rows in set (0.00 sec)
          
          mysql> show index from items;
          +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
          | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
          +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
          | items |          0 | PRIMARY  |            1 | itemid      | A         |      168786 |     NULL | NULL   |      | BTREE      |         |
          | items |          0 | items_1  |            1 | hostid      | A         |        5626 |     NULL | NULL   |      | BTREE      |         |
          | items |          0 | items_1  |            2 | key_        | A         |      168786 |     NULL | NULL   |      | BTREE      |         |
          | items |          1 | items_3  |            1 | status      | A         |           5 |     NULL | NULL   |      | BTREE      |         |
          | items |          1 | items_4  |            1 | templateid  | A         |        5114 |     NULL | NULL   |      | BTREE      |         |
          +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
          5 rows in set (0.00 sec)
          Интересно, у меня в таблице hosts нет индекса ip. Вы сами его добавляли или он должен быть по умолчанию?

          Comment

          • mschedrin
            Senior Member
            • Jun 2009
            • 179

            #35
            Originally posted by den_crane
            а покажите конфиги мускуля и заббикса?

            в общем-то интересны:
            innodb_buffer_pool_size = 400M
            innodb_additional_mem_pool_size = 64M
            key_buffer_size = 150M
            innodb_log_file_size = 150M
            innodb_log_buffer_size = 32M
            innodb_flush_log_at_trx_commit = 2
            У меня так:
            Code:
            innodb_buffer_pool_size = 1500M
            innodb_additional_mem_pool_size = 1048576
            key_buffer_size = 8384512
            innodb_log_file_size = 64M
            innodb_flush_log_at_trx_commit = 2
            у заббикса StartPollers=50 и остальные Start*
            Code:
            StartPollers=10
            StartIPMIPollers=0
            StartPollersUnreachable=1
            StartTrappers=5
            StartPingers=20
            StartDiscoverers=20
            А процессоры какие у сервера? И сколько?
            Один четырехядерный: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz

            А вы не пробовали придушить многопоточность:
            innodb-thread-concurrency=2
            может у вас типа http://bugs.mysql.com/bug.php?id=15815
            Не пробовал, сейчас стоит значение 8.

            Сегодня добавил еще 2Гб оперативной памяти. Собираюсь увеличить innodb_buffer_pool. Еще хочу проверить все индексы в таблицах, вдруг действительно что-то потерялось.

            Comment

            • ugh
              Senior Member
              • Jun 2009
              • 296

              #36
              остался со старых времен
              по совету den_crane добавлял))) помогло тогда кстати)

              но в нашем случае он все равно не используется

              Comment

              • den_crane
                Senior Member
                • Feb 2006
                • 272

                #37
                Originally posted by mschedrin
                У меня так:
                Code:
                startpollers=10
                для начала 100 поставьте. У вас очередь сразу уменьшится.
                Last edited by den_crane; 20-04-2010, 14:56.

                Comment

                • mschedrin
                  Senior Member
                  • Jun 2009
                  • 179

                  #38
                  Originally posted by den_crane
                  для начала 100 поставьте. У вас очередь сразу уменьшится.
                  Поставил. Сейчас буду смотреть что стало с очередью. Однако проблему с БД это вряд ли решит. В tmp все еще появляются временные файлы mysql по несколько сотен мегабайт.

                  Comment

                  • eugene.istomin
                    Junior Member
                    • Jan 2010
                    • 22

                    #39
                    Попробуйте c tmpfs

                    В tmp все еще появляются временные файлы mysql по несколько сотен мегабайт.
                    Скорее всего, проблема в том, что временные файлы создаются на диске.
                    Попробуйте c tmpfs
                    Например, здесь написано как

                    Пару месяцев назад битрикс валил БД, после переноса временных файлов mysql на tmpfs всё выровнялось.

                    Comment

                    • mschedrin
                      Senior Member
                      • Jun 2009
                      • 179

                      #40
                      Originally posted by eugene.istomin
                      Скорее всего, проблема в том, что временные файлы создаются на диске.
                      Попробуйте c tmpfs
                      Например, здесь написано как

                      Пару месяцев назад битрикс валил БД, после переноса временных файлов mysql на tmpfs всё выровнялось.
                      Уже пробовал такое. Делал ramdisk на 512 МБ. Не помогло, т.к. mysql пытался писать туда файлы значительно большего размера. Хочу понять почему так происходит. Мне кажется, такого быть не должно в нормальной ситстеме

                      Comment

                      • den_crane
                        Senior Member
                        • Feb 2006
                        • 272

                        #41
                        Originally posted by mschedrin
                        Поставил. Сейчас буду смотреть что стало с очередью. Однако проблему с БД это вряд ли решит. В tmp все еще появляются временные файлы mysql по несколько сотен мегабайт.
                        в том explain что вы показали нет страшного перечисления. Наверно в реальной жизни у вас запрос выполняется начиная с hosts, а временная таблица на диске создается типа для order by.

                        Comment

                        • den_crane
                          Senior Member
                          • Feb 2006
                          • 272

                          #42
                          Originally posted by eugene.istomin
                          Пару месяцев назад битрикс валил БД, после переноса временных файлов mysql на tmpfs всё выровнялось.
                          это все костыли, не должно быть у базы заббикса никаких временных файлов.

                          Comment

                          • mschedrin
                            Senior Member
                            • Jun 2009
                            • 179

                            #43
                            Originally posted by den_crane
                            в том explain что вы показали нет страшного перечисления. Наверно в реальной жизни у вас запрос выполняется начиная с hosts, а временная таблица на диске создается типа для order by.
                            Каким образом отловить запросы, которые создают временные таблиц такого размера? Мне пока методика не очень понятна.

                            Из тяжелых запросов, которые удавалось поймать, временная таблица действительно использовалась для OrderBy.

                            Comment

                            • den_crane
                              Senior Member
                              • Feb 2006
                              • 272

                              #44
                              Originally posted by mschedrin
                              Каким образом отловить запросы, которые создают временные таблиц такого размера? Мне пока методика не очень понятна.
                              я думаю они у вас уже в slow queries.log

                              Originally posted by mschedrin
                              Из тяжелых запросов, которые удавалось поймать, временная таблица действительно использовалась для OrderBy. .
                              В том конкретном запросе я думаю стоит заменить h.hostid IN (перечисление хостов) на h.hostid+0 IN (перечисление хостов)

                              Comment

                              • mschedrin
                                Senior Member
                                • Jun 2009
                                • 179

                                #45
                                Originally posted by den_crane
                                я думаю они у вас уже в slow queries.log

                                В том конкретном запросе я думаю стоит заменить h.hostid IN (перечисление хостов) на h.hostid+0 IN (перечисление хостов)
                                В slow queries попадает слишком много других запросов, отфильтровать их оттуда только те что используют tmp проблематично. Попробую что-нибудь придумать.

                                Comment

                                Working...