Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
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. Что может быть? Откуда берется нагрузка? Что может происходить с базой? Что сделать чтоб понять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2008, 00:42 |
|
||
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
>>Что может быть? Откуда берется нагрузка? Ктото смотрит статистику по этому делу :). >>Что сделать чтоб понять? log_min_duration? select * from pg_stat_activity? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2008, 13:10 |
|
||
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2008, 01:18 |
|
||
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
Блокировки нагрузки не создают, поскольку транзакции просто ждут, когда их снимут, не производя при этом никаких операций. Вы не упомянули за счет чего растет нагрузка? Простейшее предположение в такой ситуации -- нагрузка растет за счет iowait, поскольку начинается checkpoint. Чтобы понять, верно ли это предположение, используйте iostat в моменты пиковой нагрузки + поиграйтесь руками с операцией CHECKPOINT + попробуйте поэкспериментировать с параметрами checkpoint_timeout и checkpoint_segments в postgresql.conf. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2008, 12:25 |
|
||
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
Блин, извелся весь. 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 никуда не делись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 14:33 |
|
||
|
Скачки быстродействия у Postgresql.
|
|||
|---|---|---|---|
|
#18+
скачок LA до 2х может всего лишь означать, что ваша система выполняет два процесса одновременно (у вас ведь SMP ядро?). попробуйте посчитать количество одновременно выполняющихся процессов при малых LA и при больших. Имхо до LA до 4 (2 выполняются, 2 в очереди) вполне нормальны для двух корной системы. LA - это не нагрузка на проц, это общая загрузка системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 14:56 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=53&tid=2004343]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 261ms |
| total: | 415ms |

| 0 / 0 |
