powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / асинхронные запросы в windows
5 сообщений из 5, страница 1 из 1
асинхронные запросы в windows
    #39997278
ghosterus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Работаю в связке Java Spring - Hibernate - PostgreSQL. К БД я отсылаю асинхронные запросы в нескольких потоках. В результате таких действий БД может ничего не вернуть на запрос, в случае, если какие-то запросы на получение одного и того же атрибута посылаются в один и тот же момент. Если же отказаться от потоков и отсылать все запросы последовательно, то все работает корректно.

Я покопался в файле конфигурации (postgresql.conf) и наткнулся на effective_io_concurrency, которое задаёт допустимое число параллельных операций ввода/вывода. Правильно ли я понимаю, что эта настройка работает только из-под линукса? В системе windows она может быть равна только нулю, а значит в данной ОС никаких параллельных операций с postgreSQL быть не может?
...
Рейтинг: 0 / 0
асинхронные запросы в windows
    #39997299
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
effective_io_concurrency вовсе не имеет никакого отношения к получению запросов. Это POSIX_FADVISE вызовы из bitmapscan для подсказок ОС какие блоки потребуются в page cache. Не в курсе есть ли под виндами этот define, да и в целом штука несколько спорной эффективности.

Дебажьте свои потоки, что именно и когда отправляется. Нет ли такого, что вы отправляете следующий запрос в коннект базы, уже занятый выполнением другого запроса.
...
Рейтинг: 0 / 0
асинхронные запросы в windows
    #39999003
ghosterus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Ваш ответ помог! Четко разделил потоки и теперь они не пересекаются.
...
Рейтинг: 0 / 0
асинхронные запросы в windows
    #39999023
ghosterus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И не могли бы подсказать еще с такой вещью: спустя некоторое время работы, в одном из потоков один раз появилась ошибка:

"org.postgresql.util.PSQLException: ОШИБКА: не удалось инициализировать параллельный исполнитель"

Я предположил, что это может быть связано с параметрами max_worker_processes и max_parallel_workers_per_gather в файле postgresql.conf. Изначально они были равны 8. Увеличил число до 20. После нового запуска такой ошибки не возникает. Но меня одолевают сомнения: эта ошибка была какой-то случайностью или действительно необходимо было увеличить число воркеров? Уже можно спокойно продолжать работу и не ожидать подвоха с этой стороны?
...
Рейтинг: 0 / 0
асинхронные запросы в windows
    #39999265
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ghosterus
"org.postgresql.util.PSQLException: ОШИБКА: не удалось инициализировать параллельный исполнитель"

git grep.... parallel worker failed to initialize
srcthe postmaster was
* unable to fork the worker or it exited without initializing
* properly.
Оба возможных источника ошибки возможны из parallel leader только, оба из разряда "что-то идёт не так", но что именно - надо смотреть в логе базы сообщения от самого parallel worker.

Да, это относится к параллельному исполнению запросов, но не относится к конфигурации max_worker_processes/max_parallel_workers_per_gather - если нет доступных воркеров - то база просто запустит меньше воркеров чем могла бы (вплоть до 0)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / асинхронные запросы в windows
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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