Ad Widget

Collapse

Производительность серверов

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

    #31
    Originally posted by den_crane
    не так. я первый раз неправильно написал. Таблица там hosts ZBX_SQL_MOD(h.hostid,%d
    Т.е. поле надо добавлять и апдейтить в таблице hosts.
    А вы как хосты заводите с use_ip или use_dns?
    Индекс по ip должен был помочь очень сильно. Или вас другой запрос мучает.

    добавьте еще индекс
    create index host_test1 on hosts(dns);
    спасибо, мне урок... семь раз подумать )))
    пост предыдущий сотру, чтобы никого не смущать

    и сейчас по порядку все отпишу

    Comment

    • ugh
      Senior Member
      • Jun 2009
      • 296

      #32
      посмотрел загруз без морды
      с индексом create index host_test on hosts(ip); 10-20% в пиках 50%
      без индекса 20-25% в пиках 50-60% (видимо тот запрос с пуллерами отрабатывал)
      впринципе, вполне ожидаемо от 10000 хостов

      касательно веб интерфейса,
      7 юзеров на вебморде (вот прям счас)
      и видим
      Code:
      CPU: 90.4% user,  0.0% nice,  4.9% system,  0.0% interrupt,  4.7% idle
      вот запрос от нее, точнее первая его часть
      Code:
      SELECT DISTINCT t.triggerid,t.status,t.description,t.expression,t.priority,t.lastchange,t.value,h.ho.................
      если смотреть через mytop дальше будет что-то вроде (экранов 20 наверное )
      Code:
      ...................800800000172406,800800000172407,800800000172408,800800000172409,800800000172410,800800000172411,800800000172412,800800000172413,800800000172414,800800000172415,800800000172416,800800000172417,800800000172418,800800000172419,800800000172420,800800000172421,800800000172422,800800000172423,800800000172424,800800000172425,800800000172426,800800000172427,800800000172428,800800000172429,800800000172430,800800000172431,800800000172433,800800000172434,800800000172435,800800000172436,800800000172437,800800000172438,800800000172439,800800000172440,800800000172441,800800000172442,800800000172443,800800000172444,800800000172445,800800000172446,800800000172447,800800000172448,800800000172449,800800000172450,800800000172451,800800000172452,800800000172453,800800000172454,800800000172455,800800000172456,800800000172457,800800000172458,800800000172459,800800000172460,800800000172461,800800000172462,800800000172463,800800000172464,800800000172465,800800000172466,800800000172467,800800000172468,800800000172469,800800000172470,800800000172471,800800000172472,800800000172473,800800000172474,800800000172475,800800000172476,800800000172477,800800000172478,800800000172479,800800000172480,800800000172481,800800000172482,800800000172483,800800000172484,800800000172485,800800000172486,800800000172487,800800000172488,800800000172489,800800000172490,800800000172491,800800000172492,800800000172493,800800000172494,800800000172495,800800000172496,800800000172497,800800000172498,800800000172499,800800000172500,800800000172501,800800000172502,800800000172503,800800000172504,800800000172505,800800000172508,800800000172509,800800000172510,800800000172511,800800000172512,800800000172513,800800000172514,800800000172515,800800000172516,800800000172517,800800000172518,800800000172519,800800000172520,800800000172521,800800000172522,800800000172523,800800000172524,800800000172525,800800000172526,800800000172527,800800000172528,800800000172529,800800000172530,800800000172531,800800000172532,800800000172533,800800000172534))
      ..............
      и так заканчивается он
      Code:
      AND h.status=0 AND t.value=1 AND t.priority=4 ORDER BY t.lastchange DESC
      это видимо из дашборда запросы и их там целых два
      blocks.php.ini

      Code:
      $sql = 'SELECT DISTINCT t.triggerid,t.status,t.description,t.expression,t.priority,t.lastchange,t.value,h.host,h.hostid '.
                                                              ' FROM triggers t,hosts h,items i,functions f, hosts_groups hg '.
                                                              ' WHERE f.itemid=i.itemid '.
                                                                      ' AND hg.groupid='.$group['groupid'].
                                                                      ' AND h.hostid=i.hostid '.
                                                                      ' AND hg.hostid=h.hostid '.
                                                                      ' AND t.triggerid=f.triggerid '.
                                                                      ' AND t.status='.TRIGGER_STATUS_ENABLED.
                                                                      ' AND i.status='.ITEM_STATUS_ACTIVE.
                                                                      ' AND '.DBcondition('t.triggerid', $available_triggers).
                                                                      ' AND h.status='.HOST_STATUS_MONITORED.
                                                                      ' AND t.value='.TRIGGER_VALUE_TRUE.
                                                                      ' AND t.priority='.$key.
                                                              ' ORDER BY t.lastchange DESC';


      Code:
      $sql = 'SELECT DISTINCT t.triggerid,t.status,t.description,t.expression,t.priority,t.lastchange,t.value,h.host,h.hostid '.
                                      ' FROM triggers t,hosts h,items i,functions f, hosts_groups hg '.
                                      ' WHERE f.itemid=i.itemid '.
                                              ' AND h.hostid=i.hostid '.
                                              ' AND hg.hostid=h.hostid '.
                                              ' AND t.triggerid=f.triggerid '.
                                              ' AND t.status='.TRIGGER_STATUS_ENABLED.
                                              ' AND i.status='.ITEM_STATUS_ACTIVE.
      //                                      ' AND '.DBin_node('t.triggerid').
                                              ' AND '.DBcondition('t.triggerid',$available_triggers).
                                              ' AND h.status='.HOST_STATUS_MONITORED.
                                              ' AND t.value='.TRIGGER_VALUE_TRUE.
                                      ' ORDER BY t.lastchange DESC';
      Last edited by ugh; 19-06-2009, 12:05.

      Comment

      • den_crane
        Senior Member
        • Feb 2006
        • 272

        #33
        они на вебморде смотрят триггера которые в true?
        Никогда такого запроса я не видел.
        это длинное перечисление это видимо triggerid для ограничения прав что-ли?
        права пользователям как нарезаны? Через группы?

        Comment

        • ugh
          Senior Member
          • Jun 2009
          • 296

          #34
          да, права через группы

          Comment

          • den_crane
            Senior Member
            • Feb 2006
            • 272

            #35
            Originally posted by ugh
            да, права через группы
            попробуйте

            create INDEX trigger_test on triggers (status, value, lastchange);
            create INDEX trigger_test1 on triggers (status, value, priority, lastchange);

            Comment

            • Alexei
              Founder, CEO
              Zabbix Certified Trainer
              Zabbix Certified SpecialistZabbix Certified Professional
              • Sep 2004
              • 5654

              #36
              Может кто возмётся обнаружить все full-table-scans? Для MySQL был где-то патч.
              Alexei Vladishev
              Creator of Zabbix, Product manager
              New York | Tokyo | Riga
              My Twitter

              Comment

              • ugh
                Senior Member
                • Jun 2009
                • 296

                #37
                Originally posted by den_crane
                попробуйте

                create INDEX trigger_test on triggers (status, value, lastchange);
                create INDEX trigger_test1 on triggers (status, value, priority, lastchange);
                не то похоже (((

                Comment

                • den_crane
                  Senior Member
                  • Feb 2006
                  • 272

                  #38
                  Originally posted by Alexei
                  Может кто возмётся обнаружить все full-table-scans? Для MySQL был где-то патч.
                  А вот похоже в запросе к триггерам где долгое перечисление 800800000172406,800800000172407,800800000172408,80 0800000172409,
                  там не фулскан. Там по первичному ключу все обходится что еще хуже чем фулскан. Если бы этого перечисления не было по статусу true триггеры моментально находились бы.

                  На работе я делаю хак прямо в запросе типа
                  triggerid in (........)
                  меняю
                  triggerid||'' in (........)

                  Как тут поменять '.DBcondition('t.triggerid',$available_triggers) непонятно
                  Может по простому '.DBcondition('t.triggerid+0',$available_triggers) прокатит?

                  Comment

                  • den_crane
                    Senior Member
                    • Feb 2006
                    • 272

                    #39
                    Ага сделал '.DBcondition('t.triggerid+0',$available_triggers)
                    вроде и у меня стало шустрее

                    Comment

                    • sersad
                      Senior Member
                      • May 2009
                      • 518

                      #40
                      Originally posted by mschedrin
                      Сколько памяти ест мускул на сервере с такими настройками?
                      top - 20:17:48 up 11 days, 6:11, 2 users, load average: 2.68, 3.40, 3.49
                      Tasks: 88 total, 2 running, 86 sleeping, 0 stopped, 0 zombie
                      Cpu(s): 51.1%us, 9.9%sy, 0.0%ni, 33.9%id, 4.1%wa, 0.0%hi, 1.0%si, 0.0%st
                      Mem: 3873400k total, 3756712k used, 116688k free, 31936k buffers
                      Swap: 1417208k total, 382404k used, 1034804k free, 1745372k cached

                      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
                      8133 mysql 20 0 2066m 1.8g 4196 S 124 48.4 3127:57 mysqld
                      Сейчас создал индексы и пересобрал так как рекомендовал den_crane

                      на сервере сейчас так
                      Параметр Значение Детали
                      ZABBIX сервер запущен Да -
                      Количество узлов сети (контролируется/не контролируется/шаблоны/удалено) 301 236 / 0 / 65
                      Количество элементов данных (активных/неактивных/не поддерживается)[trapper] 462468 325053 / 73678 / 63737
                      Количество триггеров (активированных/деактивированных)[истина/неизвестно/ложь] 4172 4172 / 0 [10 / 53 / 4109]
                      Количество пользователей 3 2
                      Требуемое быстродействие сервера, новые значения в секунду 69.6097 -
                      Загрузка ЦП упала реально раза в 2 хотя количество итемов возросло процентов на 30 (будет еще расти по мере прикручивания железа к zabbix)
                      Очень интересно как это прокомментируют разработчики?

                      Comment

                      • den_crane
                        Senior Member
                        • Feb 2006
                        • 272

                        #41
                        Originally posted by sersad
                        Сейчас создал индексы и пересобрал так как рекомендовал den_crane

                        на сервере сейчас так
                        Загрузка ЦП упала реально раза в 2 хотя количество итемов возросло процентов на 30 (будет еще расти по мере прикручивания железа к zabbix)
                        Очень интересно как это прокомментируют разработчики?
                        Нескромный вопрос можно?
                        У вас до сих пор такие параметры?
                        tmp_table_size = 2048M
                        innodb_buffer_pool_size = 1024M

                        я бы сделал
                        tmp_table_size = 50M
                        innodb_buffer_pool_size = 3000M

                        Comment

                        • sersad
                          Senior Member
                          • May 2009
                          • 518

                          #42
                          Originally posted by den_crane
                          Нескромный вопрос можно?
                          У вас до сих пор такие параметры?
                          tmp_table_size = 2048M
                          innodb_buffer_pool_size = 1024M

                          я бы сделал
                          tmp_table_size = 50M
                          innodb_buffer_pool_size = 3000M
                          Да такие. Я не силен в БД и её оптимизациях. Но "MYSQL PERFORMANCE TUNING PRIMER" подсказал такое плюс поиск по гуглу привел к этим значениям.
                          Если Вы можете расказать что даст установка рекомендованных Вами значений с радостью прислушаюсь к совету.

                          Comment

                          • den_crane
                            Senior Member
                            • Feb 2006
                            • 272

                            #43
                            Originally posted by sersad
                            Да такие. Я не силен в БД и её оптимизациях. Но "MYSQL PERFORMANCE TUNING PRIMER" подсказал такое плюс поиск по гуглу привел к этим значениям.
                            Если Вы можете расказать что даст установка рекомендованных Вами значений с радостью прислушаюсь к совету.
                            Я тоже информикс дба, mysql первый день вижу, НО
                            tmp_table_size На самом деле базе под zabbix-м не нужен темп, т.е. он как бы плодит временные таблицы, но на самом деле они микрокопического размера, и я думаю 50-150 мег. вполне хватит tmp_table_size = 150M
                            У меня сейчас tmp_table_size = 16M

                            Правда tmpfs on /var/lib/mysql/.tmp type tmpfs (rw,size=100M)
                            Но это роли не играет.

                            innodb_buffer_pool_size
                            Этот параметр это кеш диска, т.е. всю свободную память можно отдавать туда. Ну то есть если уровень кеширования достигнет 99.99%, то можно дальше уже не увеличивать.

                            Поставьте
                            innodb_buffer_pool_size = 2024M
                            Посмотрите забегает шустрее или нет.

                            Comment

                            • sersad
                              Senior Member
                              • May 2009
                              • 518

                              #44
                              Originally posted by den_crane
                              Поставьте
                              innodb_buffer_pool_size = 2024M
                              Посмотрите забегает шустрее или нет.
                              Поставил, подождем результата.

                              Comment

                              • sersad
                                Senior Member
                                • May 2009
                                • 518

                                #45
                                Originally posted by den_crane
                                tmp_table_size = 50M
                                innodb_buffer_pool_size = 3000M
                                Мда уперся в ограничение OS 32 bit. mysql больше 2,5 Г озу работать не хочет.
                                Поставил 16 и 2048 соответственно, также
                                max_heap_table_size снизил до 128.
                                Производительность особо не возрасла

                                Comment

                                Working...