Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скачки быстродействия у Postgresql. / 6 сообщений из 6, страница 1 из 1
18.05.2008, 00:42
    #35319041
Mike Patutin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
CentOS Linux + Tomcat + PgSQL 8.2.6

На данный момент работает под нагрузкой ~12 HTTP запросов в секунду что трансформируеся .~ в 50 SQL запросов в секунду к базе.
Таблицы не велики. 100 штук. 1 == 400000 записей, парочка по 100000 остальные максимум 5000 записей + таблица геотаргертинга 1600000 записей.

В течение часа можно нагрузку считать постоянной

Все запросы оформлены в виде function на pgplsql.
Часть таблиц менятся непрерывно, точнее ежеминутно (регистры обращений), часть наполняется за счет регистров (кумулятивная статистика), а регистры, в свою очередь полностью очищаются после заполнения статистики.

Ежеминутно в лог выводится количество запросов, оно приблизительно постоянное.

средняя нагрузка в обычном состоянии ~0.35 - 0.5
запросов дольше 40 миллисекунд практически нет.
памяти отдано 512 мег
fsync выключен
сбор статистики включен
автовакуум включен

Проблема следующая: в совершенно произвольное время, РЕЗКО поднимается нагрузка на проц. с 0.35 до 2.5 все это счастье длится что то в районе 2 минут, после этого пропадает. Все приходит в норму минут на 10 - 15 потом опять.
в логе, в это время - количество запросов не меняется ( чаще даже становится меньше ), т.е. с внешней стороны, никаких авралов не происходит.
Нагрузка генерируется постгресом. Это видно в top и sa.


Что может быть? Откуда берется нагрузка? Что может происходить с базой? Что сделать чтоб понять?
...
Рейтинг: 0 / 0
18.05.2008, 13:10
    #35319201
Stat222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
>>Что может быть? Откуда берется нагрузка?
Ктото смотрит статистику по этому делу :).

>>Что сделать чтоб понять?
log_min_duration?
select * from pg_stat_activity?
...
Рейтинг: 0 / 0
19.05.2008, 01:18
    #35319720
Mike Patutin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
Stat222>>Что может быть? Откуда берется нагрузка?
Ктото смотрит статистику по этому делу :).

>>Что сделать чтоб понять?
log_min_duration?
select * from pg_stat_activity?

log_min_duration_statement = 15 в данный момент уменьшение до 5 мало что дает.
еще раз повторюсь - длинных запросов просто нет. Выше 40 мс очень редко что то проскакивает.

pg_ stat_activity просто пустой. в момент пиковой нагрузки - максимум что появляется, это в ожидании 1 или 2 транзакции, да стандартные процедуры выбора данных, ну и в лог, соответственно при высокой нагрузке выводится немного больше запросов, повторюсь немного, относительно спокойного режима. Но, мне кажется, что это скорее последствия чем причина.

В целом я грешу на автовакуум. Должно ли отображаться что либо при его работе в pg_stat_activity?

И еще, если у меня несколько транзакций находятся в ожидании блокировки таблицы это может давать эффект нагрузки?
Поясню:
Может ли давать эффект резкого роста load average взаимные блокировки такого вида при выполении их в количестве 20 запросов в секунду(сумма времен всех транзакций > чем 1 сек)?

START TRANSACTION
SELECT somefield FROM critical_table .... FOR UPDATE
регистрации и обновления из нескольких select && insert && update общей длиной во времени под 50-100 ms
COMMIT TRANSACTION
...
Рейтинг: 0 / 0
19.05.2008, 12:25
    #35320295
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
Блокировки нагрузки не создают, поскольку транзакции просто ждут, когда их снимут, не производя при этом никаких операций. Вы не упомянули за счет чего растет нагрузка? Простейшее предположение в такой ситуации -- нагрузка растет за счет iowait, поскольку начинается checkpoint. Чтобы понять, верно ли это предположение, используйте iostat в моменты пиковой нагрузки + поиграйтесь руками с операцией CHECKPOINT + попробуйте поэкспериментировать с параметрами checkpoint_timeout и checkpoint_segments в postgresql.conf.
...
Рейтинг: 0 / 0
22.05.2008, 14:33
    #35328661
Mike Patutin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
Блин, извелся весь.
3 дня воюю, так просвящения и не получилось.

Почему может прыгать LA?

Core 2 Duo 2.4, 2048MB RAM, 2x 320gig SATA
Нагрузка на проц ( средняя ) 10% с дельтой в в 5%

Средний вывод iostat:

avg-cpu: %user %nice %system %iowait %steal %idle
13.87 0.00 1.02 0.00 0.00 85.11
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
md2 32.09 0.00 128.38 0 380

с минимальными отклонениями.
На checkpoint - подскакивает iowait, но нагрузка одномоментная, и отношения к проблеме, судя по всему, не имеет

Ethernet 100mb. Загрузка канала - смешная 80 кб/с в пиках до 500 кб/с

Работает связка Tomcat 5.5 + PostgreSQL 8.2.6
process accounting включен. sa говорит что 18% нагрузки с tomcat и 81% нагрузки с Postgresql

В лог постгреса выводится все что дольше 10ms
Нагрузка - порядка 15 запросов в секунду.

В логе проскакивают запросы к таблице геотаргетинга (5-6 в минуту).
duration: 15.439 ms execute <unnamed>: SELECT * FROM adv_sp_get_geo_target($1)

И ОЧЕНЬ РЕДКО что то еще. В любом случае, запросов длиннее чем 40 ms я вообще не вижу.

Автовакуум включал, выключал, но это ровным счетом ничего не дает.

select * from pg_stat_activity;
пуст за РЕДЧАЙШИМИ исключениями вне зависимости от нагрузки.



Я, откровенно говоря - в тупике. Даже не знаю что думать. Броски LA до 2.00-2.5 никуда не делись.
...
Рейтинг: 0 / 0
22.05.2008, 14:56
    #35328744
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачки быстродействия у Postgresql.
скачок LA до 2х может всего лишь означать, что ваша система выполняет два процесса одновременно (у вас ведь SMP ядро?). попробуйте посчитать количество одновременно выполняющихся процессов при малых LA и при больших. Имхо до LA до 4 (2 выполняются, 2 в очереди) вполне нормальны для двух корной системы.
LA - это не нагрузка на проц, это общая загрузка системы.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скачки быстродействия у Postgresql. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]