Ad Widget

Collapse

Высокий load average на FreeBSD. Zabbix 1.6.6

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mschedrin
    Senior Member
    • Jun 2009
    • 179

    #1

    Высокий load average на FreeBSD. Zabbix 1.6.6

    Number of hosts (monitored/not monitored/templates) 2039 2023 / 2 / 14
    Number of items (monitored/disabled/not supported) 14245 7991 / 6224 / 30
    Number of triggers (enabled/disabled)[true/unknown/false] 6203 6199 / 4 [5 / 1770 / 4424]
    Number of users (online) 20 8
    Required server performance, new values per second 115.8985 -
    Есть сервер, на котором работает только zabbix и mysql для него. Процессор загружен в среднем на 150-200% из 400 возможных (4 ядра). Оперативной памяти свободной больше гига, при этом load average у сервера постоянно находится в диапазоне 3-7. Если заббикс останавливаю, load average уходит в 0.
    Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
    2 Гб оперативной памяти.
    FreeBSD 7.2
    По systat видно, что винч тоже не перегруже.

    Подскажите с чем может быть связана такое странное падение производительности?
    Last edited by mschedrin; 11-11-2009, 13:33.
  • den_crane
    Senior Member
    • Feb 2006
    • 272

    #2
    Originally posted by mschedrin
    Есть сервер, на котором работает только zabbix и
    а кто в top ? mysql?

    Comment

    • mschedrin
      Senior Member
      • Jun 2009
      • 179

      #3
      Да, в топе mysql есть. Жред на порядки больше остальных.
      Last edited by mschedrin; 11-11-2009, 15:20.

      Comment

      • den_crane
        Senior Member
        • Feb 2006
        • 272

        #4
        new values per second 115.8985
        т.е. получается mysql выполняет где-то 400-500 запросов в секунду, может это и не высокая загрузка процессора?

        Сколько pollers ? Если их кол-во уменьшить в два раза, загрузка процессора падает?

        Comment

        • mschedrin
          Senior Member
          • Jun 2009
          • 179

          #5
          Так процессор не нагружен до максимума, а растет load average. Разве это может из-за mysql происходить?

          Comment

          • mschedrin
            Senior Member
            • Jun 2009
            • 179

            #6
            Владельныцы высоконагруженных серверов с zabbix, кто-нибудь сталкивался с такими проблемами?

            Comment

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

              #7
              mysqladmin processlist|grep Query поможет понять что делает MySQL.
              Last edited by Alexei; 12-11-2009, 09:37.
              Alexei Vladishev
              Creator of Zabbix, Product manager
              New York | Tokyo | Riga
              My Twitter

              Comment

              • costas
                Senior Member
                • Aug 2009
                • 201

                #8
                Originally posted by mschedrin
                Если заббикс останавливаю, load average уходит в 0.
                Подскажите с чем может быть связана такое странное падение производительности?
                StartPollers и StartTrappers у Вас какие значения в конфигурационном файле сервера, при увеличении этих значений соответственно увеличивается загрузка сервера, по факту CPU и load average, вообщем это количество воркеров сервера, общее коль-во воркеров пропорционально коннектам к mysql, если у Вас нет очереди (zabbix[queue]) значит у вас достаточное коль-во воркеров и можно поробовать уменьшить значения StartPollers и StartTrappers.

                Суммарное кол-во воркеров не должно превышать max_connections в MySQL - сами поинимаете чем грозит, если в текущем состянии у Вас нет очереди (ожидающих запросов item от агентов) то у Вас всё в порядке.

                У меня сейчас:
                80 воркеров
                load average: 2.81, 3.85, 4.27
                и 30% загрузки CPU из 100%

                при этом есть очередь в в срднем окло 400 ожидающих, пока играюсь настройками, при дефолтном конфиге схлопотал 5000+ очередь и практически нулевую загрузку сервера.
                CentOS-5.5 i386, Zabbix 1.8.4 (stable), MySQL 5.0.92, PHP 5.2.17 (cli)

                ...эта проверка бесполезная, вредная, и она зло.

                Comment

                • mschedrin
                  Senior Member
                  • Jun 2009
                  • 179

                  #9
                  Originally posted by Alexei
                  mysqladmin processlist|grep Query поможет понять что делает MySQL.
                  Туда, я конечно же заглядывал, а так же включал slow query log. Ничего криминального там не вижу. Долгих запросов там нет.
                  Code:
                  [root@zabbix /usr/home/mschedrin]# mysqladmin processlist | grep Query
                  | 340881 | zabbix | localhost         | zabbix | Query   | 0     | Sending data         | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340890 | zabbix | localhost         | zabbix | Query   | 0     | Copying to tmp table | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340892 | zabbix | localhost         | zabbix | Query   | 0     | Copying to tmp table | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340895 | zabbix | localhost         | zabbix | Query   | 0     | Updating             | update items set nextcheck=1258011791 where itemid=258371                                            |
                  | 340896 | zabbix | localhost         | zabbix | Query   | 0     | Sending data         | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340906 | zabbix | localhost         | zabbix | Query   | 0     | Updating             | update items set nextcheck=1258011854 where itemid=256454                                            |
                  | 340915 | zabbix | localhost         | zabbix | Query   | 0     | update               | insert into history_uint (itemid,clock,value) values (293404,1258011726,1),(288846,1258011726,1),(25 |
                  | 499205 | root   | localhost         |        | Query   | 0     |                      | show processlist                                                                                     |
                  [root@zabbix /usr/home/mschedrin]# mysqladmin processlist | grep Query
                  | 340875 | zabbix | localhost         | zabbix | Query   | 0     | Sending data         | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340892 | zabbix | localhost         | zabbix | Query   | 0     | Copying to tmp table | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340897 | zabbix | localhost         | zabbix | Query   | 0     | Copying to tmp table | select distinct h.ip from hosts h,items i where mod(h.hostid,20)=10 and i.hostid=h.hostid and h.prox |
                  | 499215 | root   | localhost         |        | Query   | 0     |                      | show processlist                                                                                     |
                  [root@zabbix /usr/home/mschedrin]# mysqladmin processlist | grep Query
                  | 340886 | zabbix | localhost         | zabbix | Query   | 0     | Copying to tmp table | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340897 | zabbix | localhost         | zabbix | Query   | 0     | Sending data         | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 499225 | root   | localhost         |        | Query   | 0     |                      | show processlist                                                                                     |
                  [root@zabbix /usr/home/mschedrin]# mysqladmin processlist | grep Query
                  | 270501 | zabbix               | localhost         | zabbix | Query   | 0     | statistics           | SELECT count(DISTINCT t.triggerid) as tr_cnt,t.priority  FROM hosts h,items i,hosts_groups hg, funct |
                  | 271213 | zabbix               | localhost         | zabbix | Query   | 0     | statistics           | SELECT DISTINCT t.triggerid,t.status,t.description,t.expression,t.priority,t.lastchange,t.value,h.ho |
                  | 340873 | zabbix               | localhost         | zabbix | Query   | 0     |                      | commit                                                                                               |
                  | 340890 | zabbix               | localhost         | zabbix | Query   | 0     | Copying to tmp table | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 340898 | zabbix               | localhost         | zabbix | Query   | 0     | Copying to tmp table | select distinct h.dns from hosts h,items i where mod(h.hostid,20)=16 and i.hostid=h.hostid and h.pro |
                  | 340908 | zabbix               | localhost         | zabbix | Query   | 0     | Sending data         | select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snm |
                  | 499232 | root                 | localhost         |        | Query   | 0     |                      | show processlist                                                                                     |
                  Вот пример. Может я чего-то не замечаю? Load average 5 в момент просмотра mysqladmin processlist.

                  Comment

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

                    #10
                    Похоже на слишком высокое значение для StartPollers. В Zabbix 1.8 количество поллеров не будет влиять на производительность системы, можно запускать хоть 200.
                    Alexei Vladishev
                    Creator of Zabbix, Product manager
                    New York | Tokyo | Riga
                    My Twitter

                    Comment

                    • mschedrin
                      Senior Member
                      • Jun 2009
                      • 179

                      #11
                      Originally posted by costas
                      StartPollers и StartTrappers у Вас какие значения в конфигурационном файле сервера, при увеличении этих значений соответственно увеличивается загрузка сервера, по факту CPU и load average, вообщем это количество воркеров сервера, общее коль-во воркеров пропорционально коннектам к mysql, если у Вас нет очереди (zabbix[queue]) значит у вас достаточное коль-во воркеров и можно поробовать уменьшить значения StartPollers и StartTrappers.

                      Суммарное кол-во воркеров не должно превышать max_connections в MySQL - сами поинимаете чем грозит, если в текущем состянии у Вас нет очереди (ожидающих запросов item от агентов) то у Вас всё в порядке.

                      У меня сейчас:
                      80 воркеров
                      load average: 2.81, 3.85, 4.27
                      и 30% загрузки CPU из 100%

                      при этом есть очередь в в срднем окло 400 ожидающих, пока играюсь настройками, при дефолтном конфиге схлопотал 5000+ очередь и практически нулевую загрузку сервера.
                      Очередь вы смотрите в Administration -> Queue? Там у меня всё хорошо, всегда нули.
                      Из zabbix_server.conf
                      Code:
                      StartPollers=10
                      StartTrappers=1
                      StartPingers=20
                      StartDiscoverers=10
                      Сейчас попробую поуменьшать эти значения.
                      Хочется понять причину появления высокого load average. Если mysql отвечает достаточно быстро(менее 3секунд на самый долгий запрос), то количество "воркеров" заббикса не должно влиять на load average. Ведь все процессы получают данные в нужное время и не ждут в очереди выполнения. Или я неверно рассуждаю?

                      Comment

                      • mschedrin
                        Senior Member
                        • Jun 2009
                        • 179

                        #12
                        Правильно ли я понимаю, что
                        StartPollers=10
                        Количество процессов, выполняющих опросы по snmp, zabbix-agent и пр, кроме simple check?
                        StartPingers=20
                        Количество процессов выполняющих simple check?
                        StartDiscoverers=10
                        Количество процессов выполняющих discovery?
                        StartTrappers=1
                        Количество процессов принимающих сообщения от zabbix sender?

                        Comment

                        • mschedrin
                          Senior Member
                          • Jun 2009
                          • 179

                          #13
                          Подкрутил настройки:
                          Code:
                          StartPollers=5
                          StartTrappers=1
                          StartPingers=5
                          StartDiscoverers=1
                          Очередь, конечно, немного подросла, но load average упал до 3.
                          Это значение тоже слишком высокое. Пытаюсь понять что является узким местом в системе из-за которого растет этот показатель.

                          Comment

                          • costas
                            Senior Member
                            • Aug 2009
                            • 201

                            #14
                            Originally posted by mschedrin
                            Правильно ли я понимаю, что
                            startpollers=10
                            Количество процессов, выполняющих опросы по snmp, zabbix-agent и пр, кроме simple check?
                            startpingers=20
                            Количество процессов выполняющих simple check?
                            startdiscoverers=10
                            Количество процессов выполняющих discovery?
                            starttrappers=1
                            Количество процессов принимающих сообщения от zabbix sender?
                            Судя по не хитрым манипуляциям с конфигом выглядит именно так.
                            CentOS-5.5 i386, Zabbix 1.8.4 (stable), MySQL 5.0.92, PHP 5.2.17 (cli)

                            ...эта проверка бесполезная, вредная, и она зло.

                            Comment

                            • costas
                              Senior Member
                              • Aug 2009
                              • 201

                              #15
                              Originally posted by mschedrin
                              Очередь вы смотрите в Administration -> Queue?
                              добавте в шаблон для Zabbix-сервера дополнительно ZABBIX internal:
                              Code:
                              zabbix[queue]
                              zabbix[history]
                              zabbix[history_str]
                              zabbix[items]
                              zabbix[items_unsupported]
                              zabbix[log]
                              zabbix[trends]
                              zabbix[triggers]

                              Originally posted by mschedrin
                              Хочется понять причину появления высокого load average. Если mysql отвечает достаточно быстро(менее 3секунд на самый долгий запрос), то количество "воркеров" заббикса не должно влиять на load average. Ведь все процессы получают данные в нужное время и не ждут в очереди выполнения. Или я неверно рассуждаю?
                              думаю не свсем точно, ответ mysql сервера на запросы никак не связан с обработкой tcp соединения при конекте воркера к агенту, соответвенно расходы ресурсов увеличиваются с количеством облуживаемых запросов персеконд как и с кол-вом воркеров увеличивается кол-во запросов.

                              У вас zabbix цепляется к mysql через tcp или unixsocket, если tcp, попробуйте завернуть через unixsocket (если у Вас конечно один локейшин для db и zabbix-сервера)
                              CentOS-5.5 i386, Zabbix 1.8.4 (stable), MySQL 5.0.92, PHP 5.2.17 (cli)

                              ...эта проверка бесполезная, вредная, и она зло.

                              Comment

                              Working...