View Full Version : проблема с Cpu
Nikolaicheg
07-04-2009, 14:32
Добрый день!
появилась проблема.
Периодически возникает такая ситуация с zabbix-сервером, что процессорное время wa прыгает до 50%.
вот примерный график
по комманде top слудующие показатели:
Tasks: 113 total, 4 running, 109 sleeping, 0 stopped, 0 zombie
Cpu(s): 28.2%us, 4.9%sy, 5.9%ni, 5.1%id, 53.7%wa, 0.2%hi, 2.0%si, 0.0%st
Mem: 504392k total, 494952k used, 9440k free, 2920k buffers
Swap: 1951888k total, 7256k used, 1944632k free, 292012k cached
Возникает примерно раз в час. в это время бывают провалы в полученных данных, т.е. полуаются пустоты на некоторых графиках.
Конфа сервера такова:
Dell Optiplex GX520
P4 2.8 w/HT
512RAM DDR2
80HDD
Ubuntu 8.10 server i386
Posgresql 8.3.6
Zabbix 1.6.3.
/var - отдельный раздел на винте.
Думал, что это может быть связано с Posgres'ом, выдал ему по-больше shared_mem (было 24мб, стало 200мб), также увеличил параметр SHMMAX ядра, прописал в /etc/sysctl.conf kernel.shmmax = 268435456. результат такойже.
С чем может быть связано высокое %wa проца?
Nikolaicheg
07-04-2009, 15:00
P.s. до обновления был такой график
Подозреваю, что запускается очистка БД от старых записей.
В конфиг файле параметр HousekeepingFrequency
В zabbix_server.conf проставь DisableHousekeeping=1 и будет счастье.
Не думаю, что отключать очистку базы целесобразно:rolleyes:
Может имеет смысл добавить в конфиг возможность очистки базы в заданное время, например в 03:00, самое сонное время:)
Может разработчикам имеет смысл добавить в конфиг такую опцию?
Nikolaicheg
08-04-2009, 08:51
сделал очистку базы раз в 24 часа... за ночь размер базы вырос на 2 гига...
Притом, что:
ZABBIX server is running Yes -
Number of hosts (monitored/not monitored/templates) 59 32 / 0 / 27
Number of items (monitored/disabled/not supported) 2800 2525 / 275 / 0
Number of triggers (enabled/disabled)[true/unknown/false] 351 348 / 3 [2 / 29 / 317]
Number of users (online) 5 1
Required server performance, new values per second 53 -
Что же будет, если я добавлю еще пару десятков устройств :rolleyes:
А вот функция очистки базы в заданное время была бы интересна. Производил бы очистку как раз перед дампом ночным :D
Проверьте настройку самой базы.
Если во время создания базы таблицы создались отличные от InnoDB то во время чистки у вас будут возникать провалы.
Настройте InnoDB и переконвертируйте таблицы.
Арег
Nikolaicheg
08-04-2009, 09:59
Проверьте настройку самой базы.
Если во время создания базы таблицы создались отличные от InnoDB то во время чистки у вас будут возникать провалы.
Настройте InnoDB и переконвертируйте таблицы.
Арег
Читаем внимательно, у меня не мускуль
Сорри пропустил эту часть.
Может понадобится:)
Переведенный мануал, часть о размерах базы:
Размер базы данных Zabbix от параметров, которые определяют размеры базы данных:
Количество обрабатываемых запросов в секунду.
Это среднее количество новых значений, которые Zabbix сервер получает каждую секунду.
Например: Если имеется 3000 элементов с интервалом проверки 60 секунд, то количество обрабатываемых запросов за секунду рассчитывается 3000/60 = 50.
Это означает, что каждую секунду в базу данных Zabbix добавляется 50 новых записей.
Настройки Housekeeper для журналирования.
Zabbix сохраняет значения на определенный период времени, обычно несколько недель или месяцев. Каждое новое значение требует определенный объем дискового пространства и индекса.
Так что, если требуется сохранение истории 30 дней и каждую секунду в базу данных добавляется 50 новых записей, общее количество значений будет равно примерно (30 * 24 * 3600) * 50 = 129.600.000 или около 130m значений.
В зависимости от типа базы данных, типа полученных значений (с плавающей точкой, целые числа, строки, лог файлы и т.д.) может потребоваться от 40 байт до сотен байт дискового пространства для хранения значения. Обычно одно значение занимает около 50 байт. В нашем случае это означает, что 130m значений потребуют 130m * 50 байт = 6,5GB дискового пространства.
Настройки Housekeeper для тенденций.
ZABBIX сохраняет ежечасную статистику max/min/avg/count для какждого элемента в таблице тенденций. Эти данные используются для отслеживания тенденций и для графиков на длительное время.
Базе данных ZABBIX, в зависимости от типа базы данных, требуется около 128 байт на один элемент.
Предположим, что если требуется сохранять тенденции в течении 5 лет. 3000 значений потребуют (3000/1800)*(24*3600*365)*128 = 6.3GB вгод, или 31.5GB за 5 лет.
Настройки Housekeeper для событий.
Каждое событие требует около 130 байт дискового пространства. Это сложный ряд событий, порожденных Zabbix сервером, ежедневно. В худшем случае, мы можем предположить, что Zabbix порождает одно событие в секунду.
Это означает, что если требуется сохранять события 3 года, то для этого потребуется 3*365*24*3600*130 = 11GB дискового просранства.
Nikolaicheg
08-04-2009, 12:18
это я читал :)
Но!
У меня в базу пишутся трапы, которые валятся (покачто!) с двух железок с частотой раз в 5 минут, длина каждого порядка 500 байт.
Данные счетчиков свитчей (порядка 500 итемов) опрашиваются раз в 10 сек. Ну а всё остальное всреднем по 60 сек :)
История 90 дней, тренды 365.
Кстати изза длинных трапов, пришлось поменять размерность поля в таблице истории :) было 256, сделал 1024. Иначе при получении трапа сервер падал.
Если интересно, статистика базы в аттаче.
это я читал :)
Но!
У меня в базу пишутся трапы, которые валятся (покачто!) с двух железок с частотой раз в 5 минут, длина каждого порядка 500 байт.
Данные счетчиков свитчей (порядка 500 итемов) опрашиваются раз в 10 сек. Ну а всё остальное всреднем по 60 сек :)
История 90 дней, тренды 365.
Кстати изза длинных трапов, пришлось поменять размерность поля в таблице истории :) было 256, сделал 1024. Иначе при получении трапа сервер падал.
Если интересно, статистика базы в аттаче.
историю я бы поменьше хранил ( достаточно 7 дней ). У меня база уже почти 14 гигов.
Nikolaicheg
08-04-2009, 13:33
возможно я не так понял назначение истории. графики строятся из трендов? трапы складываются в историю, это я знаю точно :).
по моим расчетам, при текущих настройках у меня база должна быть 35 гигов примерно :) просто заббикс работает около месяца.
P.s. разобрался, для чего хистори и тренды.
У меня была та же самая проблема, особенно когда заббикс на виртуалке сидел, решить не удалось. Сейчас на мощном сервере (2x4 ядра Xeon, рейд из скази дисков, 4GB ОЗУ), housekeeper на ночь запланирован, вроде ничего. Но все равно смущает неслабая нагрузка заббикса на БД и в свою очередь на HDD, что приводит к всплескам загрузки CPU. Необходимо оптимизировать настройки СУБД, подкручивать интервалы сбора данных, периоды хранения. Я СУБД не крутил, ибо не спец, а интервалы и периоды подкрутил. Не сильно помогло, кстати.
Nikolaicheg
10-04-2009, 13:42
тоже поигрался с периодами опроса, а также длиной истории. После чего обновил заббикс до 1.6.4, и вот что получилось... (на рисунке 04.08 с 14 часов примерно. тогда запустился хаускипер, и прессорное время wait забило практически всё (видно провалом idle графика) и сейчас всё както не стабильно работает...
Nikolaicheg
13-04-2009, 09:18
Помогите!
Загрузка проца катастрофическая! :(
чтобы вывести какие-то данные в виде графиков, приходится ждать кучу времени :(
Было тяжко машине, а после обновления на 1.6.4 стало совсем плохо.. Вот график утилизации и заргузки.
P.s. графики загрузки и утилизации показал только после остановки сервера...
Помогите!
Загрузка проца катастрофическая! :(
чтобы вывести какие-то данные в виде графиков, приходится ждать кучу времени :(
Было тяжко машине, а после обновления на 1.6.4 стало совсем плохо.. Вот график утилизации и заргузки.
P.s. графики загрузки и утилизации показал только после остановки сервера...
Покажи конфиг сервера.
Nikolaicheg
13-04-2009, 11:38
конфиг сервера:
# This is config file for ZABBIX server process
# To get more information about ZABBIX,
# go http://www.zabbix.com
############ GENERAL PARAMETERS #################
# This defines unique NodeID in distributed setup,
# Default value 0 (standalone server)
# This parameter must be between 0 and 999
#NodeID=0
# Number of pre-forked instances of pollers
# Default value is 5
# This parameter must be between 0 and 255
#StartPollers=5
# Number of pre-forked instances of pollers for unreachable hosts
# Default value is 1
# This parameter must be between 0 and 255
#StartPollersUnreachable=1
# Number of pre-forked instances of trappers
# Default value is 5
# This parameter must be between 0 and 255
#StartTrappers=5
# Number of pre-forked instances of ICMP pingers
# Default value is 1
# This parameter must be between 0 and 255
#StartPingers=1
# Number of pre-forked instances of discoverers
# Default value is 1
# This parameter must be between 0 and 255
#StartDiscoverers=1
# Number of pre-forked instances of HTTP pollers
# Default value is 1
# This parameter must be between 0 and 255
#StartHTTPPollers=1
# Listen port for trapper. Default port number is 10051. This parameter
# must be between 1024 and 32767
ListenPort=10051
# Listen interface for trapper. Trapper will listen all network interfaces
# if this parameter is missing.
#ListenIP=127.0.0.1
# How often ZABBIX will perform housekeeping procedure
# (in hours)
# Default value is 1 hour
# Housekeeping is removing unnecessary information from
# tables history, alert, and alarms
# This parameter must be between 1 and 24
HousekeepingFrequency=24
# How often ZABBIX will try to send unsent alerts
# (in seconds)
# Default value is 30 seconds
SenderFrequency=30
# Uncomment this line to disable housekeeping procedure
#DisableHousekeeping=1
# Specifies debug level
# 0 - debug is not created
# 1 - critical information
# 2 - error information
# 3 - warnings (default)
# 4 - for debugging (produces lots of information)
DebugLevel=3
# Specifies how long we wait for agent response (in sec)
# Must be between 1 and 30
Timeout=5
# Specifies how many seconds trapper may spend processing new data
# Must be between 1 and 30
#TrapperTimeout=5
# After how many seconds of unreachability treat a host as unavailable
#UnreachablePeriod=45
# How ofter check host for availability during the unreachability period
#UnavailableDelay=15
# How ofter check host for availability during the unavailability period
#UnavailableDelay=60
# Name of PID file
PidFile=/var/run/zabbix-server/zabbix_server.pid
# Name of log file
# If not set, syslog is used
LogFile=/var/log/zabbix-server/zabbix_server.log
# Maximum size of log file in MB. Set to 0 to disable automatic log rotation.
#LogFileSize=1
# Location for custom alert scripts
AlertScriptsPath=/etc/zabbix/alert.d/
# Location of 'fping. Default is /usr/sbin/fping
# Make sure that fping binary has root permissions and SUID flag set
#FpingLocation=/usr/sbin/fping
# Frequency of ICMP pings (item keys 'icmpping' and 'icmppingsec'). Defauls is 60 seconds.
#PingerFrequency=60
# Database host name
# Default is localhost
DBHost=localhost
# Database name
# SQLite3 note: path to database file must be provided. DBUser and DBPassword are ignored.
DBName=zabbix
# Database user
DBUser=zabbix
# Database password
# Comment this line if no password used
DBPassword=zabbix
# Connect to MySQL using Unix socket?
#DBSocket=/tmp/mysql.sock
Nikolaicheg
13-04-2009, 12:59
думаю из той же серии проблема...
запустил очистку истории данных по одному свитчу...
зашел в items Для этого хоста, выделил все, нажал clear history for selected items. проц ушел на 70-100% в %wa. Frontend отвалился. Остановил сервер. в процессах всё равно висит следующее:
4933 ? S 0:01 /usr/lib/postgresql/8.3/bin/postgres -D /var/lib/postgresql/8.3/main -c config_file=/etc/postgresql/8.3/main/po
4936 ? Ss 0:58 \_ postgres: writer process
4937 ? Ss 0:10 \_ postgres: wal writer process
4938 ? Ss 0:00 \_ postgres: autovacuum launcher process
4939 ? Ss 0:11 \_ postgres: stats collector process
5012 ? Ss 3:17 \_ postgres: zabbix zabbix 127.0.0.1(59969) UPDATE waiting
5013 ? Ss 2:18 \_ postgres: zabbix zabbix 127.0.0.1(59970) UPDATE waiting
5014 ? Ss 2:34 \_ postgres: zabbix zabbix 127.0.0.1(59971) UPDATE waiting
5016 ? Ss 2:14 \_ postgres: zabbix zabbix 127.0.0.1(59973) UPDATE waiting
5017 ? Ss 2:23 \_ postgres: zabbix zabbix 127.0.0.1(59974) UPDATE waiting
6382 ? Ds 4:10 \_ postgres: zabbix zabbix 127.0.0.1(50307) DELETE
8322 ? Ss 0:00 \_ postgres: autovacuum worker process zabbix
9187 ? Ss 0:00 \_ postgres: zabbix zabbix 127.0.0.1(33363) UPDATE waiting
Так уже часа 2...
P.S. итемов для этого конкретного свитча порядка 70 штук. Из них апдейт по 15 секунд - 48шт. апдейт по 5 минут - все остальные. История для интефейсов - 90 дней, для остального - 7 дней. Железка мониторится чуть меньше месяца...
Между делом.. смотрел логи хаускипера, там никогда не было удалено ни 1 пункта истории. Как же чистить историю? всё время вручную???
думаю из той же серии проблема...
запустил очистку истории данных по одному свитчу...
зашел в items Для этого хоста, выделил все, нажал clear history for selected items. проц ушел на 70-100% в %wa. Frontend отвалился. Остановил сервер. в процессах всё равно висит следующее:
4933 ? S 0:01 /usr/lib/postgresql/8.3/bin/postgres -D /var/lib/postgresql/8.3/main -c config_file=/etc/postgresql/8.3/main/po
4936 ? Ss 0:58 \_ postgres: writer process
4937 ? Ss 0:10 \_ postgres: wal writer process
4938 ? Ss 0:00 \_ postgres: autovacuum launcher process
4939 ? Ss 0:11 \_ postgres: stats collector process
5012 ? Ss 3:17 \_ postgres: zabbix zabbix 127.0.0.1(59969) UPDATE waiting
5013 ? Ss 2:18 \_ postgres: zabbix zabbix 127.0.0.1(59970) UPDATE waiting
5014 ? Ss 2:34 \_ postgres: zabbix zabbix 127.0.0.1(59971) UPDATE waiting
5016 ? Ss 2:14 \_ postgres: zabbix zabbix 127.0.0.1(59973) UPDATE waiting
5017 ? Ss 2:23 \_ postgres: zabbix zabbix 127.0.0.1(59974) UPDATE waiting
6382 ? Ds 4:10 \_ postgres: zabbix zabbix 127.0.0.1(50307) DELETE
8322 ? Ss 0:00 \_ postgres: autovacuum worker process zabbix
9187 ? Ss 0:00 \_ postgres: zabbix zabbix 127.0.0.1(33363) UPDATE waiting
Так уже часа 2...
попробуй отключить автовакум в посгрисе.
Nikolaicheg
13-04-2009, 14:32
не помогло...
пробую вынести логи транзакций на отдельный винт...
не помогло...
пробую вынести логи транзакций на отдельный винт...
Еще как вариант, поиграйся с
#StartPollers=5
Nikolaicheg
13-04-2009, 17:05
Выключение вакуума ничего не дало. Вынес /var/lib/postgres на отдельный винт, логи транзакций хранятся на системном винте.
сделал StartPollers=3.
подожду до утра.
P.S. вернул дефаултный конфиг postgresql, Только не убирал настройку ядра SHMMAX.
AndreyHammer
15-04-2009, 08:57
У меня логи транзакций на одтельном винте, очень увеличивает производительность.
Автовакум включен. Отключать его не нужно.
Работает хорошо. База около 50Gb.
Сервак 2*Quad core 2.33GHz, 4Gb, sas'овские винты. postgresql 8.3.3, zabbix 1.6.2
ZABBIX сервер запущен Да -
Количество узлов сети (контролируется/не контролируется/шаблоны/удалено) 129 113 / 3 / 13
Количество элементов данных (активных/неактивных/не поддерживается)[trapper] 4228 4026 / 12 / 190
Количество триггеров (активированных/деактивированных)[истина/неизвестно/ложь] 1497 1113 / 384 [12 / 138 / 963]
Количество пользователей 41 5
Требуемое быстродействие сервера, новые значения в секунду 54 -
Nikolaicheg
15-04-2009, 09:56
а настройки постгреса стандартные?
вынес базу на отдельный винт, логи оставил на системном разделе. Вроде бы немного полегчало :)
Но опять же, когда запускается хаускипер, то он длится порядка 75 минут, удаляя при этом 0 записей... хотя должен был бы удалить.
Каким образом можно вручную по крону чистить например?
AndreyHammer
15-04-2009, 13:50
Настройки методом тыка подтюнены.
Nikolaicheg
15-04-2009, 14:27
а могу я их увидеть? :)
AndreyHammer
16-04-2009, 05:24
а могу я их увидеть? :)
Ага. Конфиг во вложении. Сильно не пинать, в тюнинге постгреса не мастер :))
Nikolaicheg
20-04-2009, 15:53
У меня логи транзакций на одтельном винте, очень увеличивает производительность.
Автовакум включен. Отключать его не нужно.
Работает хорошо. База около 50Gb.
Сервак 2*Quad core 2.33GHz, 4Gb, sas'овские винты. postgresql 8.3.3, zabbix 1.6.2
ZABBIX сервер запущен Да -
Количество узлов сети (контролируется/не контролируется/шаблоны/удалено) 129 113 / 3 / 13
Количество элементов данных (активных/неактивных/не поддерживается)[trapper] 4228 4026 / 12 / 190
Количество триггеров (активированных/деактивированных)[истина/неизвестно/ложь] 1497 1113 / 384 [12 / 138 / 963]
Количество пользователей 41 5
Требуемое быстродействие сервера, новые значения в секунду 54 -
а можно узнать конфигурацию винтов? какой рейд? как смонтированы разделы? опции монтирования, если есть?
AndreyHammer
21-04-2009, 08:32
8*Винтов hp sas 143Gb 10000rpm.
из 5 рейд 5ый.
из двух зеркало для логов
и один hot-spare
/dev/cciss/c0d1p1 / reiserfs notail 0 1
/dev/cciss/c0d2p1 /usr reiserfs defaults 0 2
/dev/cciss/c0d3p1 /var reiserfs defaults 0 2
/dev/cciss/c0d4p1 /var/lib/postgres/data/pg_xlog reiserfs defaults 0 2
/dev/cciss/c0d0p1 none swap sw 0 0
Nikolaicheg
21-04-2009, 08:53
8*Винтов hp sas 143Gb 10000rpm.
из 5 рейд 5ый.
из двух зеркало для логов
и один hot-spare
/dev/cciss/c0d1p1 / reiserfs notail 0 1
/dev/cciss/c0d2p1 /usr reiserfs defaults 0 2
/dev/cciss/c0d3p1 /var reiserfs defaults 0 2
/dev/cciss/c0d4p1 /var/lib/postgres/data/pg_xlog reiserfs defaults 0 2
/dev/cciss/c0d0p1 none swap sw 0 0
А почему выбор пал именно ра рейзерфс? версия 4?
AndreyHammer
14-05-2009, 06:38
На сервере reiserfs стояла уже, вот так и осталась.
Версия 3я.
Nikolaicheg
14-05-2009, 09:03
я сделал ext4.
выдержка из fstab
/ ext3 relatime,errors=remount-ro 0 1
/boot ext3 relatime 0 2
/usr/share/ ext4 noatime 0 2
/var/lib/postgresql ext4 noatime 0 2
/var/lib/postgresql/8.3/main/pg_xlog ext4 noatime 0 2
тут винты пошустрей, всё стало хорошо. Видимо много очень зависит от дисковой подсистемы. Сейчас даже в пиках, когда запущен хаускипер и сидит 3-5 клиентов по вебу, загрузка не превышает 40%