Ограничение размера для набора результатов в запросе SELECT через туннель ssh - postgresql - PullRequest
1 голос
/ 02 января 2012

У меня возникают проблемы при выполнении запросов SELECT и получении больших (> 550 МБ данных) наборов результатов по туннельному соединению ssh.Запрос SELECT работает локально, т. Е. На том же сервере, где находится сервер PostgreSQL.

Сообщения об ошибках на стороне клиента:

server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
connection to server was lost

Сообщение об ошибке на стороне сервера (postgresql.log)

08006: could not receive data from client: Connection reset by peer

Когда я сделал журнал сервера более подробным, многие из них появились, но я думаю, что они не связаны с рассматриваемой проблемой:

LOG:  08P01: SSL error: unsafe legacy renegotiation disabled

Я не нашел ни одного postgresопция или аналог управления «максимальный размер удаленного набора результатов».

Максимальный объем памяти, использованный до возникновения ошибки, составляет около 519 МБ (VmData из / proc / PID / status), затем запрос выполняется в течение 1 минуты.и 55 секунд.В конфиг-файле postgres не задано значение Statement_timeout.

Для этой цели мне нужно иметь все данные в памяти одновременно, поэтому курсор или что-то другое не подходит.

Сервер Postgres версия 8.3

1 Ответ

2 голосов
/ 02 января 2012

Похоже, Пересмотр SSL является корнем вашей проблемы. По умолчанию каждые 512 МБ пересматриваются, что подозрительно близко к вашему описанию.

В частности, некоторые older библиотеки SSL не способны пересмотреть SSL - в качестве защиты от (старых) ошибок в протоколе.

Попробуйте отключить ssl_renegotiation_limit в вашем postgresql.conf.

ssl_renegotiation_limit = 0

Подробнее об этом см. В руководстве (ссылка на версию 8.3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...