Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.09.2007, 16:07
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
Заметил, что если в любой(!) и большой или маленькой таблице строчек примерно до 70 000, то операции insert/update/delete выполняются почти мгонвенно. Но вот если больше 70 000, то те же самые запросы начинают занимать все 100% ресурсов CPU и работают в десятки раз дольше. Пробовал на различных серверах. Запросов много - все они оч маленькие. Как только кол-во опускается менее 70 000 - то сново все летает. Подскажите, что можно почитать на эту тему. Может можно еще что то потюнить. Система: Linux 2.6.22-r5 SMP postgresql 8.1.9 8Gb Ram Кроме постгреса других процессов на серваке нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 17:35
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
Ну так большой или маленькой таблице в 70000 строк ? :) Ну и очевидно, что explain медленных и быстрых запросов в студию. Хотя причина "тормозов" тоже очевидна - вместо кеша ПГ лезет в диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 18:52
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
в том то и дело что к примеру оч простые запросы Код: plaintext 1. Код: plaintext 1. 2. до 70 000 летают - а после тормазят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 19:46
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
Конфиг сервера и статистику загрузки можно подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 20:00
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
Также хотелось бы увидеть explain analyze - т.е. фактические данные о выполнении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 20:20
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
postgresql.conf max_connections = 10000 shared_buffers = 65536 temp_buffers = 800 work_mem = 65536 maintenance_work_mem = 131072 max_stack_depth = 2048 fsync = on wal_buffers = 128 commit_delay = 1000 checkpoint_segments = 10 checkpoint_timeout = 900 effective_cache_size = 65536 random_page_cost = 4 redirect_stderr = on log_rotation_size = 10240 stats_start_collector = on stats_command_string = on stats_block_level = on stats_row_level = on stats_reset_on_server_start = off autovacuum = on autovacuum_naptime = 90 max_locks_per_transaction = 80 Остальное по дефолту База примерно 60 Gb 8Gb Ram (в свопе еще 214 кб) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2007, 20:46
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
Конфиг дисковой подсистемы? Контроллер? Размер кэша? Tablespaces? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.09.2007, 10:01
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
PostreSQL начинающий Конфиг дисковой подсистемы? Контроллер? Размер кэша? Tablespaces? диски 0+1 200Gb SATA 8mb кеш всего 4ре штуки контроллер интеловский набортный (!)Tablespaces? - это меня поставило в тупик - а как это смотреть? ps -пробовали и на других серверах - диски побольше/поменьше, SATA/PATA/SCSI все равно около 70 000 какие то тормаза - родилась идея может это наследие 12 битных систем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.09.2007, 10:34
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
nedbaв том то и дело что к примеру оч простые запросы Код: plaintext 1. Код: plaintext 1. 2. до 70 000 летают - а после тормазят. 1) SELECT count(*) FROM table не является для постгреса простым запросом 2) Вы так и не представили цифры (время выполнения запросов), которые считаете большими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.09.2007, 11:17
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
nedbaоперации insert/update/delete выполняются почти мгонвенно. ... и в качестве примера приводится select count(*) Хорошо бы уточнить формулировку вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.09.2007, 15:39
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
> диски 0+1 200Gb SATA 8mb кеш всего 4ре штуки > контроллер интеловский набортный Примерно это я и предполагал. Понятно, откуда берется загрузка процессора 100%. Пока размера кэша хватает, скорость приемлемая. Как только начинается активная работа с дисковой - затык: CPU работает и за себя и за процессор контроллера. > Tablespaces? - это меня поставило в тупик - а как это смотреть? Я не помню cli psql наизусть. Вопрос был к тому, чтобы понять, различаются ли правила кэширования для разных таблиц. > пробовали и на других серверах - диски побольше/поменьше, SATA/PATA/SCSI На других серверах есть смысл пробовать с другим конфигом и с другой дисковой (в первую очередь, с нормальным контроллером и нормальным количеством дисков). Если с дисковой проблемы, то различаться будет только количество данных в кэше (будет не 70000, а 100000 или 50000). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 13:31
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
возможно вы правы hdparm -t /dev/mapper/hhacaafe /dev/mapper/hhacaafe: Timing buffered disk reads: 8 MB in 3.76 seconds = 2.12 MB/sec и еще top - 13:15:39 up 1 day, 55 min, 2 users, load average: 20.22, 17.90, 17.06 Есть ли способ (возможно есть уже готовые тесты) проверить что система слаба для такой нагрузки. Похоже придется писать обоснование - по тому прошу помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 14:02
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
load average 20 - это огромное значение. Пытались определить откуда такая нагрузка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 14:25
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
ChameLe0nload average 20 - это огромное значение. Пытались определить откуда такая нагрузка? как это можно сделать? какие есть методы? я использую команду top ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 14:39
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
> load average: 20.22, 17.90, 17.06 Дикие значения. Должны быть меньше 1. iostat? > проверить что система слаба для такой нагрузки Для дисковой - iometer. Менять - это простой способ. Попробуйте сначала экстенсивные: версия, конфиг PostgreSQL. Надеюсь, система у вас - не Ubuntu? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 15:03
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
авторSearching... [ Results for search key : iometer] [ Applications found : 0 ] Gentoo (sync 06.09.07) kernel 2.6.22-r5 SMP Postgres postgresql-8.1.9 8Gb Ram Кроме постгреса других процессов на серваке нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 16:22
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
> iometer iometer.org > Gentoo (sync 06.09.07) Не могу ничего сказать, не сталкивался. Я использую либо CentOS, либо RHEL. Imho экзотические дистрибутивы для промышленных задач... в общем, я бы воздержался: хардваре вендоры не гарантируют совместимость со всеми возможными дистрибутивами и Gentoo я, если честно, никогда не встречал в CL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 16:49
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
nedba 1. ~70000 строк - это ваша эмпирическая оценка для размера кеша определяемого shared_buffers = 65536 относительно ваших объемов данных. 2. effective_cache_size = 65536 - мало, надо 1/2 - 2/3 от всего объема памяти на выделеном сервере. 3. uname -a - выдает SMP ? 4. очевидно, что у вас проблемы с дисковой подсистемой - нужен нормальный контроллер или его драйвер. PostreSQL авторНадеюсь, система у вас - не Ubuntu? У меня на Debian ПГ отлично живет с нагрузкой промышленых масштабов. Ubuntu от Debian ничем по сути не отличается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 19:34
|
|||
|---|---|---|---|
таблица 70 000 строк притормаживает |
|||
|
#18+
alex_v13 nedba 1. ~70000 строк - это ваша эмпирическая оценка для размера кеша определяемого shared_buffers = 65536 относительно ваших объемов данных. 2. effective_cache_size = 65536 - мало, надо 1/2 - 2/3 от всего объема памяти на выделеном сервере. Как раз за эти параметры я сейчас и бьюсь. При увеличении effective_cache_size - хотя бы в двое - система ведет себя так: после перезагрузки все запросы летают, через 20 минут начинают исполнятся дольше чем после перезагрузки раз в 10, через 4-5 часов система еле ворочает даже простой запрос типа SELECT * FROM tables1 LIMIT 1 . Помогает только перезапуск постгреса. Отсюда вопрос - effective_cache_size - как сказано в документации http://www.postgresql.org/docs/8.2/interactive/runtime-config-query.html отвечает за распределение кеша для одной квери исходя из доступности кеша дискового и распределяемого ядром. Значит при большом количестве маленьких запросов к разным таблицам в памяти будут сидеть не данные страниц таблиц, а индексы этих таблиц. и каждая новая квери будет пытатся сначала выкинуть LRU чужих индексов и засунуть туда свои индексы, а потом только уже искать среди них условия своего селекта. А так же не сказанно, что индексы твоей квери доступны другим потокам обращающимся к той же таблице в это же время (из-за версионности(?)). Вопрос первый - так ли я понял. Вопрос вторй - надо ли тогда его делать все-таки большим и появится ли прирост производительности через некоторое время большой нагрузки. Третий вопрос - как можно повлиять/настроить дисковый кеш, который управляется ядром (по тому, что постгрес не пытается брать на себя функции возложеные на операционку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 20:26
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
Если не вдаваться в особые подробности, то ситация такая: 1. Параметр shared_buffers отвечает за размер объема памяти используемого всеми потоками Постгреса для хранения/кэширования данных необходимых для выполнения запросов. Эта объем памяти не кешируется линуксом и не свапится. 2. effective_cache_size - это скорее не объем памяти, а некая оценка производительности связки "кэш-память + дисковая подсистема". Указанный оптимальный размер в 1/2 - 2/3 объема памяти выделенного сервера, исходит из того предположения, что вся свободная пямять кроме нужной самому северу + shared_buffers + work_mem на каждый обрабатываемый запрос - уйдет на кэш дисков, а это как раз и будет сколько указано, при нормальных настройках/параметрах. Из этого получается приблизительно так, как вы написали, т.к. по логике работы дискового кэша, он помещает туда страницы к которым были последние или массированные обращения, выталкивая старые или редко запрашиваемые. Ну точнее можно сказать если почитать про работу системы кэширования в юниксе. Вероятность же того, что у вас происходит именно так, надо оценить... Какой у вас размер таблиц и базы? Какая статистика по hit/read в pg_stat_database, pg_statio_user_tables, pg_statio_user_indexes, какое соотношение seq_scan/index_scan в pg_stat_user_tables, насколько они вообще использутся (в смысле индексы). Если не включен сбор статистики - включите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 11:08
|
|||
|---|---|---|---|
|
|||
таблица 70 000 строк притормаживает |
|||
|
#18+
nedbaОтсюда вопрос - effective_cache_size отвечает за распределение кеша для одной квери исходя из доступности кеша дискового и распределяемого ядром. Вопрос первый - так ли я понял.Нет. Effective_cache_size не влияет на распределение кеша. Он влияет только на выбор плана выполнения запроса. "Sets the planner's assumption about... This parameter has no effect on the size of shared memory allocated by PostgreSQL, nor does it reserve kernel disk cache; it is used only for estimation purposes." nedbaПри увеличении effective_cache_size - хотя бы в двое - система ведет себя так: после перезагрузки все запросы летают, через 20 минут начинают исполнятся дольше чем после перезагрузки раз в 10, через 4-5 часов система еле ворочает даже простой запрос типа SELECT * FROM tables1 LIMIT 1.Если скорость выполнения запросов меняется в зависимости от effective_cache_size, значит нужно разбираться с планами запросов. PS: ИМХО, разработчики плохо обозвали этот параметр. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=2005032]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 398ms |

| 0 / 0 |
