Ошибка при работе на PostgresQL out of memory for query result

1. Гость 26.02.17 19:43
Добрый день!

Перевожу клиента на клиент-серверный вариант работы 1С. В целях попытаться сэкономить на лицензиях в качестве движка БД выбрали (пробуем) PostgresQL.

Конфигурация:
Сервер 32G RAM, Intel Core i7-6700, 3.4Ghz
Windows Server 2012 x64
SSD RAID 256 Гб

1С-server 32бита
postgresql-9.4.2-1.1C(x64) - (дистрибутив скачан с сайта ИТС)

Базы: основная УТ 11 (11.2.3.185) с обменами в бухгалтерии (16! баз) с использованием универсального формата.

Базы перевожу постепенно, чтобы поймать все костыли на "тестовой" эксплуатации.

К производительности проблем нет, всё "летает", но при выполнении некоторых отчетов (произвольных) как в УТ, так и в бухгалтериях вылетает ошибка:

Ошибка СУБД: out of memory for query result.

По результатам опроса интернета, настройки постгрес, помимо стандартных, выставлены следующие:
shared_buffers = 8GB
temp_buffers = 256MB
work_mem = 256MB
fsync = on
enable_mergejoin = off
effective_cache_size = 8GB
autovacuum = on
autovacuum_naptime = 10min

Но ошибка всё равно периодически воспроизводится (на прошлой неделе словили 1 раз). Пока решаю перезапуском сервера 1С и Postgres при случае инцидента, ошибка уходит.

Нагрузка относительно не большая. В УТ в пике 10-13 пользователей, в бухгалтерских базах по 1-2 пользователей (пока на клиент-серверный варинт переведены 4 бухгалтерских базы из 16). rphost съедает максимум 2,5-3,5 ГБ. Процессы постгреса по 50-100 мб. От общего объема оперативки максимум используется 30% с учетом процессов пользователей.

Подскажите, в чем может быть дело, каких параметров не хватает, куда вообще смотреть?
По теме из базы знаний
Найденные решения
6. baakir 24 15.10.18 11:58 Сейчас в теме
Тоже была такая проблема. Мне помог перезапуск службы сервера 1С.
any__uta; Котяня; zonov; BigRig; Vovan58; +5 Ответить
9. mpeg1989 131 18.01.20 16:36 Сейчас в теме
(5) Не смущает, что ошибка идет от СУБД, а не от сервера 1С?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. ansh15 29.04.17 01:10 Сейчас в теме
(1)
1С-server 32бита

http://www.sql.ru/forum/434331/oshibka-out-of-memory-for-query-result
Последний пост в теме по ссылке (Да, это стоит денег...)
9. mpeg1989 131 18.01.20 16:36 Сейчас в теме
(5) Не смущает, что ошибка идет от СУБД, а не от сервера 1С?
10. ansh15 18.01.20 20:48 Сейчас в теме
(9) Нет.
Это СУБД такая заботливая, сообщает что ее клиенту(т.е. серверу приложений 1С) не хватает памяти для получения результатов запроса.
Представитель сообщества разработчиков PostgreSQL так и пишет:
"Process memory allowed to the client; this is not a server-side error."
3. Гость 27.02.17 09:40
Использование файла подкачки - автоматически.
Прикрепленные файлы:
4. gmtv 12 27.04.17 11:51 Сейчас в теме
Попробуйте увеличить количество рабочих процессов на сервере 1С.
Прикрепленные файлы:
6. baakir 24 15.10.18 11:58 Сейчас в теме
Тоже была такая проблема. Мне помог перезапуск службы сервера 1С.
any__uta; Котяня; zonov; BigRig; Vovan58; +5 Ответить
8. mpeg1989 131 18.01.20 16:29 Сейчас в теме
(6) Перезагружать сервер можно до тех пор, пока не уволят.
maksa2005; +1 Ответить
13. baakir 24 03.12.21 21:03 Сейчас в теме
(8) "Критикуешь - предлагай"
14. mpeg1989 131 07.12.21 19:40 Сейчас в теме
(13) неуместное предложение. Пользователи не будут особо вариантов предлагать, когда у них при наборе больших документов программа будет периодически вылетать. С каждым новым вылетом атмосфера будет накаляться. Это в общем случае. На следующей работе уже будете аккуратнее перезагружать сервер.

Конкретно в этом случае проблема в 32-битном сервере 1С. Если почитать mailing list постгри, то можно найти такую же ошибку, но только не связанную с 1С. Возникает эта ошибка тогда, когда приложение, запросившее данные из СУБД не может физически их получить, ибо упирается в ограничение по памяти.

Дальше смотрим ограничения по памяти. Опять-таки не 1С, а в целом. 2 гига для 32-разрядного приложения в 32-битной системе и 3,5 гига для 32-разрядного приложения в 64-битной системе. Цифры приблизительные, но суть понятна. Отсюда и наблюдения, что rphost больше 3.5 не отъедает. Он падает. Точнее не падает, а не может получить и отказывается, а постгря выдает ошибку.

А теперь почему помогает перезагрузка. Предположим объем данных из СУБД весит 1гб. Сервер только что после запуска, в него еще никто не зашел и rphost весит 500мб. Запрос отлично проходит, rphost начинает весить 1.5 гига. Другая ситуация - rphost запущен давно, пользователи работают, и rphost съел 3гб ОЗУ. И тут еще запрос на 1гб. Ошибка.
Nicholas; +1 Ответить
12. any__uta 22.11.21 09:25 Сейчас в теме
(6) Спасибо, помогло)
7. a.doroshkevich 1512 15.10.18 15:41 Сейчас в теме
Поставьте сервер PG 9.6
Покажите полный файл настроек PG
Ну и rphost 3,5ГБ это уже не влазит в 32 бита, нужно переходить на 64
11. any__uta 22.11.21 09:25 Сейчас в теме
Спасибо, помогло)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот