Ad Widget

Collapse

Чистка myaql, притормаживает в процессе работ&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • step_slim
    Member
    • Jul 2010
    • 84

    #1

    Чистка myaql, притормаживает в процессе работ&

    Доброго времени суток
    Суть проблемы- пока экспериментировал с шаблонами, WEB интерфейс zabbix`а значительно начал притормаживать (иногда бывает приходится ждать открытия страницы около 20 минут и не всегда успешно). По началу, грешил на php или на httpd (apache). Но после обновления и сверки логов, наткнулся на интересный момент, а именно- при смене шаблона (Отключить и очистить) в отчётах продолжают висеть старые параметры графиков и снятия характеристик, что странно половина из них до сих пор продолжает выполняться, а шаблона того даже не в самом zabbix Начал копать логи всего, выяснилось, что WEB интерфейс тормозит именно в момент когда идёт запрос в базу данных. Проверил размер базы данных, за 2-х недельный период и несколько дней, она весит 4 ГБ. Исходя из мануала по zabbix такого не должно быть, по идеи мне этих 4 ГБ должно хватить на год или даже больше... Можно как нибудь почистить базу данных, не нанося вред настройкам zabbix? Или будет проще остановить процесс и базу, и эту базу стереть, а новую создать? Сразу возникает вопрос, а после этого Host`ы и шаблоны останутся?
    Я понимаю, что вопрос не вполне уместен, но может кто сталкивался?
  • yavv
    Junior Member
    • May 2011
    • 21

    #2
    У меня такая же загогулина!
    Начал править шаблоны, делал это через "Экспорт" -> Поправил что нужно -> Импортировал как новый шаблон. После этих манипуляций удаляю старый шаблон с узла сети и присоединяю импортированный.
    Так вот после этих манипуляций вэб-морда стала жутко тормозить!
    Работать с Zabbix невозможно стало!
    Что делать?

    Comment

    • dima_dm
      Senior Member
      • Dec 2009
      • 2697

      #3
      Originally posted by step_slim
      Можно как нибудь почистить базу данных, не нанося вред настройкам zabbix? Или будет проще остановить процесс и базу, и эту базу стереть, а новую создать? Сразу возникает вопрос, а после этого Host`ы и шаблоны останутся?
      Я понимаю, что вопрос не вполне уместен, но может кто сталкивался?
      Шаблоны можно перенести через Import/Export. Можно просто создать ещё одну новую базу и перетаскивать в нее настройки из старой. А потом, когда старая база будет не нужна, удалить её.
      Почитайте

      Не забывайте запускать периодически
      OPTIMIZE TABLE tbl_name[,tbl_name]...
      Last edited by dima_dm; 03-06-2011, 08:08.

      Comment

      • yavv
        Junior Member
        • May 2011
        • 21

        #4
        Originally posted by dima_dm
        Не забывайте запускать периодически
        OPTIMIZE TABLE tbl_name[,tbl_name]...
        Так как же запускать OPTIMIZE TABLE, если у Zabbix таблицы InnoDB которые не поддаются оптимизации?

        Comment

        • dima_dm
          Senior Member
          • Dec 2009
          • 2697

          #5
          Originally posted by yavv
          Так как же запускать OPTIMIZE TABLE, если у Zabbix таблицы InnoDB которые не поддаются оптимизации?
          Кто вам такое сказал? Прекрасно оптимизируются.
          http://dev.mysql.com/doc/refman/5.1/...ize-table.html

          Comment

          • yavv
            Junior Member
            • May 2011
            • 21

            #6
            Что-то туго у меня с OPTIMIZE TABLE.
            Запускаю mysqlcheck --optimize -A -uUSER -pPASS и получаю отлуп
            Code:
            zabbix.acknowledges
            note     : Table does not support optimize, doing recreate + analyze instead
            status   : OK
            Сейчас очистил пару таблиц HISTORY - попробую теперь если и менять шаблоны, то делать это с очисткой ("Отсоединить и очистить").

            Comment

            • dima_dm
              Senior Member
              • Dec 2009
              • 2697

              #7
              Originally posted by yavv
              Что-то туго у меня с OPTIMIZE TABLE.
              Запускаю mysqlcheck --optimize -A -uUSER -pPASS и получаю отлуп
              Code:
              zabbix.acknowledges
              note     : Table does not support optimize, doing recreate + analyze instead
              status   : OK
              Сейчас очистил пару таблиц HISTORY - попробую теперь если и менять шаблоны, то делать это с очисткой ("Отсоединить и очистить").
              Нужно прямо в MySQL такую команду вводить. Пример
              mysql> OPTIMIZE TABLE history;
              Last edited by dima_dm; 03-06-2011, 11:47.

              Comment

              • ugh
                Senior Member
                • Jun 2009
                • 296

                #8
                сомнительно что заметный эффект будет )

                Comment

                • step_slim
                  Member
                  • Jul 2010
                  • 84

                  #9
                  И так, вести в фронтов-
                  Опция /etc/my.cnf
                  innodb_file_per_table
                  Не нашёл такую опцию у себя...

                  Далее сделал dump базы, удалил старую, запустил:
                  cat dump.sql | mysql -u root -ppassword zabbix
                  Сервер простоял 2 часа, но база не поднялась Перегрузил, попробовал ещё раз, простоял ещё час и опять неудача. Второй неудачей было, что отвалился phpmyadmin. Как не пытался его завести, отказывается соединяться с базой, появляется окно ввода имени и пароля, после ввода, окно сбрасывается и просит ввести заново...

                  Потом накатил все скрипты оптимизации на базу, на пару параметров она ругнулась, но в основном всё встало.
                  Раскоментировал строку в /etc/my.cnf
                  Code:
                  tmpdir = /tmp
                  А вот на файлом fstab задумался
                  Code:
                  none /tmp tmpfs mode=777,size=1024M,uid=root,gid=root 0 0
                  Я так понимаю, что эта строка актуальна для FreeBSD, у меня всё иначе.
                  Далее запустил все сервисы, zabbix отозвался настолько быстро, что я даже не ожидал, но вот 35 Хостов Циски и 80 Хостов принтеров, придётся собирать заново. Обидно конечно, но всё же надеюсь, что второй раз на такую проблему с мускулом не напорюсь

                  Comment

                  • dima_dm
                    Senior Member
                    • Dec 2009
                    • 2697

                    #10
                    Originally posted by step_slim
                    А вот на файлом fstab задумался
                    Code:
                    none /tmp tmpfs mode=777,size=1024M,uid=root,gid=root 0 0
                    Я так понимаю, что эта строка актуальна для FreeBSD, у меня всё иначе.
                    Это пример для Red Hat Enterprise Linux
                    Создаём /tmp раздел в оперативной памяти.

                    По поводу innodb_file_per_table
                    Почитайте документацию.
                    http://dev.mysql.com/doc/refman/5.5/...blespaces.html
                    Таблицы у вас типа innodb создались?
                    mysql> SHOW CREATE TABLE history;
                    +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                    | Table | Create Table |
                    +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                    | history | CREATE TABLE `history` (
                    `itemid` bigint(20) unsigned NOT NULL DEFAULT '0',
                    `clock` int(11) NOT NULL DEFAULT '0',
                    `value` double(16,4) NOT NULL DEFAULT '0.0000',
                    KEY `history_1` (`itemid`,`clock`)
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
                    +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                    1 row in set (0.02 sec)
                    Last edited by dima_dm; 03-06-2011, 14:40.

                    Comment

                    • zalex_ua
                      Senior Member
                      Zabbix Certified Trainer
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • Oct 2009
                      • 1286

                      #11
                      Originally posted by dima_dm
                      Кто вам такое сказал? Прекрасно оптимизируются.
                      http://dev.mysql.com/doc/refman/5.1/...ize-table.html
                      Совершенно верно!

                      Originally posted by yavv
                      Что-то туго у меня с OPTIMIZE TABLE.
                      Запускаю mysqlcheck --optimize -A -uUSER -pPASS и получаю отлуп
                      Code:
                      zabbix.acknowledges
                      note     : Table does not support optimize, doing recreate + analyze instead
                      status   : OK
                      Сейчас очистил пару таблиц HISTORY - попробую теперь если и менять шаблоны, то делать это с очисткой ("Отсоединить и очистить").
                      А вы вчитались в текст сообщения: "Table does not support optimize, doing recreate + analyze instead"

                      Переведу: "Таблица не поддерживает оптимизацию, вместо этого делаю пересоздание + анализ"

                      Что это значит: если у вас определена директива innodb_file_per_table в my.cnf, тогда каждая таблица хранится в отдельном файле (БД должна быть создана после !!! активации этой директивы)

                      В момент когда вы даете команду OPTIMIZE TABLE history;, то сразу в директории где хранятся таблицы БД создаются файлы под именами вида #sql-485_241.frm и #sql-485_241.ibd (числа могут быть разными и от чего они зависят цифры я не знаю).
                      Файл #sql-485_241.ibd в процессе выполнения запроса постепенно растет.
                      По завершению выполнения запроса эти файлы исчезают, а исходные history.frm и history.ibd уменьшаются. Ну понятно что #sql-485_241.ibd это был временный файл, который после "переливания данных" был переименован в history.ibd.
                      Результаты: до оптимизации history.ibd был 200МБ, после - стал 157МБ. Оптимизация выполнялась (1 min 11.78 sec), что есть весьма долго, да же для этой маленькой инсталляции Заббикса. Почему довольно медленно и как насчет блокировок в этот момент - я не исследовал, не знаю.
                      Добавлено: в доке по ссылкам выше сказано - "Note that MySQL locks the table during the time OPTIMIZE TABLE is running."

                      Вот что такое оптимизация таблиц InnoDB. Как говорят - It works!
                      Last edited by zalex_ua; 04-06-2011, 23:47.

                      Comment

                      • step_slim
                        Member
                        • Jul 2010
                        • 84

                        #12
                        Originally posted by dima_dm
                        Это пример для Red Hat Enterprise Linux
                        Создаём /tmp раздел в оперативной памяти.

                        По поводу innodb_file_per_table
                        Почитайте документацию.
                        http://dev.mysql.com/doc/refman/5.5/...blespaces.html
                        Таблицы у вас типа innodb создались?
                        mysql> SHOW CREATE TABLE history;
                        +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                        | Table | Create Table |
                        +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                        | history | CREATE TABLE `history` (
                        `itemid` bigint(20) unsigned NOT NULL DEFAULT '0',
                        `clock` int(11) NOT NULL DEFAULT '0',
                        `value` double(16,4) NOT NULL DEFAULT '0.0000',
                        KEY `history_1` (`itemid`,`clock`)
                        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
                        +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
                        1 row in set (0.02 sec)
                        Да таблицы создались InnoDB, вот строка о создании:
                        Code:
                        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
                        А вот по поводу
                        innodb_file_per_table
                        смущает меня он, тем, что когда я делаю, что написано по инструкции, у меня мускул перестаёт стартовать Просто у меня Slackware тут mysql не идёт отдельным пакетом, он сразу в системе установлен после установки. Так как с ним некоторые программы системы работают. Боюсь, что подобное изменение, может ведь касаться не только базы zabbixa, а в целом всех процессов. Лучше подробнее расскажите о создании /tmp директории во временной памяти.

                        Comment

                        • sersad
                          Senior Member
                          • May 2009
                          • 518

                          #13
                          Млин ну и у вас посты, нафиг такие длинные строчки вставлять? читать даже не хочется после такого

                          Comment

                          • zalex_ua
                            Senior Member
                            Zabbix Certified Trainer
                            Zabbix Certified SpecialistZabbix Certified Professional
                            • Oct 2009
                            • 1286

                            #14
                            Originally posted by step_slim
                            Лучше подробнее расскажите о создании /tmp директории во временной памяти.
                            Поиск по форуму (только на английском) и гугл в помощь.

                            Originally posted by sersad
                            Млин ну и у вас посты, нафиг такие длинные строчки вставлять? читать даже не хочется после такого
                            Я надеюсь это не в мой адрес? Сам удивляюсь от чего этот топик так растянуло. Тут нету картинок в сообщениях из-за которых обычно такое происходит. Весьма странно.

                            Comment

                            • sersad
                              Senior Member
                              • May 2009
                              • 518

                              #15
                              Вот тут строка без пробелов, а форумный движок не рубит её
                              Code:
                              mysql> SHOW CREATE TABLE history;
                              +---------+-------------------

                              Comment

                              Working...