| Начало » Использование СУБД » PostgreSQL »  Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay Переход к форуму:
	| 
		
			|  Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3185] | Wed, 27 September 2023 15:32  |  
			| 
				
				
					|  xpg934 Сообщений: 3
 Зарегистрирован: September 2023
 | Junior Member |  |  |  
	| Коллеги, помогите разобраться - куда дальше копать. У нас огромные базы (10+ Tb, разбитые на базы по 100-500Gb).
 В части баз есть таблицы с постоянными update, т.е. dead tupples плодятся безбожно.
 И всё бы хорошо, пока работает autovacuum и дополнительно ночью ещё проходимся ручным vacuum (analyze, skip_locked) для таблиц, где dead_tupples > 5%.
 
 Сначала всё уперолось (по ощущениям) в дефолтный cost-based autovacuum - воркеры просто не запускаются после какого-то периода, и могут не работать 1-2 суток. Вчера отключили это, поставив autovacuum_vacuum_cost_delay = 0. Проблема сразу решилась, autovacuum стал работать четко 1 раз в минуту, согласно указанного autovacuum_naptime.
 
 Но вдруг это всё остановилось. Воркеры autovacuum перестали опять запускаться, dead tupples плодятся, что приводит к выборке по 100мс из таблицы, где всего 23 записи.
 
 Что смотреть? Почему оно опять перестало работать? Что проверить?
 
 Настройки кластера примерно такие:
 
 autovacuum = on
 log_autovacuum_min_duration = 1000
 
 autovacuum_max_workers = 4
 autovacuum_naptime = 1min
 autovacuum_vacuum_threshold = 50
 autovacuum_analyze_threshold = 50
 autovacuum_vacuum_scale_factor = 0.10
 autovacuum_analyze_scale_factor = 0.05
 
 autovacuum_vacuum_cost_delay = 0
 autovacuum_vacuum_cost_limit = 1000
 
 Ошибок в логе кластера - нет.
 
 
   |  
	|  |  |  
	|  |  
	|  |  
	|  |  
	| 
		
			| Re:  Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3192 является ответом на сообщение #3191] | Wed, 27 September 2023 20:49  |  
			| 
				
				
					|  xpg934 Сообщений: 3
 Зарегистрирован: September 2023
 | Junior Member |  |  |  
	| Там причина понятна - по умолчанию включен cost-based autovacuum и он заставляет спать воркеры из-за огромного кол-ва записей в таблицах. Но это не наш случай, т.к. у нас autovacuum_cost_delay = 0, т.е. любые задержки вроде как отключены.
 
 Более того, я бы понял если бы autovacuum не запускался для каких-то отдельных, больших, таблиц.
 Но он не работает и для совсем маленьких, которые постоянно изменяются.
 Например такие:
 
 relname: contact_pools
 n_live_tup: 11434
 n_dead_tup: 2064
 autovacuum_count: 16727
 last_autovacuum: 2023-09-26 18:13:21.612
 last_autoanalyze: 2023-09-26 18:47:11.530
 
 Или ещё веселее:
 
 relname: ods_storage_sync_queue
 n_live_tup: 8
 n_dead_tup: 180542
 autovacuum_count: 74167
 last_autovacuum: 2023-09-26 18:48:11.868
 last_autoanalyze: 2023-09-26 18:48:11.869
 
 Обе таблицы давно требуют autovacuum, но нет. Как и все другие в этой базе (в кластере много баз).
 
 |  
	|  |  | 
 
 
 Текущее время: Fri Oct 31 08:28:45 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00730 секунд |