powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Тормоза на Win2008 R2 x64
14 сообщений из 14, страница 1 из 1
Тормоза на Win2008 R2 x64
    #38558818
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У одного клиента в отличии от большинства остальных стоит не CentOS, а Win2008 R2 x64. Причем именно у него достаточно простая логика и относительно не сложные запросы. Так вот раз в месяц три процесса начинают серьезно тормозить сервер, из-за жесткого насилования веника на чтение. При этом как правило повисают надолго именно на командах типа DELETE FROM t_число где t_число временная таблица. В логах ничего особенного нет. Конфигурация достаточно стандартная:

Версия:
PostgreSQL 9.3.1, compiled by Visual C++ build 1600, 64-bit

Памяти всего 8Gb

Из дефолт настроек изменены только:
shared_buffers = 2Gb
temp_buffers = 256Mb
work_mem = 32Mb

При этом свободной оперативки минимум 2-3 Gb. Все три процесса насилуют следующие файлы:
C:\Program Files\PostgreSQL\9.3\data\base\16396\t19_347016 (у каждого свои циферки)

С чем все это может быть связано, в смысле как диагностировать и лечить такие явления природы.
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38559791
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверено (на 8.4) что чем больше shared_buffers под виндой , тем хуже.
Оптимум в районе где-то 256MB-512MB
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38559794
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, это как-то связано с переносом shmget под винду, не знаю уж...
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38564128
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonПроверено (на 8.4) что чем больше shared_buffers под виндой , тем хуже.
Оптимум в районе где-то 256MB-512MB

Что интересно через пару часов все приходит в норму. Но вообще да, похоже есть какой-то косяк с shared_buffers под виндой. Жаль пока не так много где проверить, везде CentOS в основном ставим :(
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38564737
Временные таблицы, да? Надо бы изучить вопрос как в 9.3 обстоят дела с взаимодействием автовакуума с ними.
Раньше он их просто игнорировал, возможно в 9.3 это уже не так и массовые удаления вызывают потребность в резком
пересчете статистики итп?
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38565398
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НезалогинившийсяВременные таблицы, да? Надо бы изучить вопрос как в 9.3 обстоят дела с взаимодействием автовакуума с ними.
Раньше он их просто игнорировал, возможно в 9.3 это уже не так и массовые удаления вызывают потребность в резком
пересчете статистики итп?

в 9.3 временные таблицы так и игнорируются автовакумом... и будут игнорироваться и дальше (если вдруг временные таблицы с 0 не перепишут).... там архитектурные причины почему автовакум с ними работать не может
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38571761
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрались. Проблема похоже во временных таблицах, которые pool'ся и при переиспользовании делается DELETE FROM, заполнение данных и ANALYZE, но не делается VACUUM. В результате через некоторое время они дорастают до огромных размеров на диске (правда непонятно почему через некоторое время работа восстанавливалась, видимо все же по какому то событию VACUUM все же trigger'ся).

Что касается винды это похоже просто совпадение.
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38571941
Жоао!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie,

У вас безусловный DELETE FROM времнных таблиц? Тогда по всем параметрам дешевле их TRUNCATE.
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38572292
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie(правда непонятно почему через некоторое время работа восстанавливалась, видимо все же по какому то событию VACUUM все же trigger'ся).

ни по какому.... просто в какой то момент коннект к базе отваливается.... и вместе с коннектом умирают его временные таблицы
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38573624
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жоао!Nitro_Junkie,

У вас безусловный DELETE FROM времнных таблиц? Тогда по всем параметрам дешевле их TRUNCATE.

TRUNCATE нельзя использовать в READ ONLY режиме. А его выключать ради временных таблиц не хочется.
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38573627
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

Там то, как раз не должно быть момента отваливания connection'а, так что дело в чем то другом.
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38573682
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieMaxim Boguk,

Там то, как раз не должно быть момента отваливания connection'а, так что дело в чем то другом.

Что значить не должно быть? даже при использованиии пулера коннекто у коннекта к базе есть TTL свой (максимальный возраст коннекта к базе после чего он принудительно закрывается)
что для pgbouncer
что для pgpool
что для любых java connnectoon pooler (Типа c3p0)
что для любых известных мне велосипедов
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38574480
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

Ну в данном случае, речь идет о собственном пулинге, и если в спецификации jdbc, в стандартном драйвере, и у самой СУБД TTL нет по умолчанию, то дело все же не в этом :)
...
Рейтинг: 0 / 0
Тормоза на Win2008 R2 x64
    #38574848
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieMaxim Boguk,

Ну в данном случае, речь идет о собственном пулинге, и если в спецификации jdbc, в стандартном драйвере, и у самой СУБД TTL нет по умолчанию, то дело все же не в этом :)

ttl есть всегда... в самом плохом случае ttl наступает когда процессы базы начинает операционка отстреливать по OOM
вечноживые коннекты к базе это очень плохо... 1-2-12 часов это разумно... больше нет...


и еще раз скажу что место во временных таблицах можно почистить только через:
1)disconnect процесса базы
2)truncate Этих таблиц
3)drop эти таблиц...

autovacuum с ними никогда не работал и работать не будет/может так как они существуют только в приватной памяти конкретного процесса базы и к их данным никто кроме этого процесса базы добраться не может.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Тормоза на Win2008 R2 x64
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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