Если сервер находится позади туземного брандмауэра/маршрутизатора, необходимо сделать более, чем открытый порт в брандмауэре. Необходимо передать порт серверу.
Так, если внешний адрес Вашего маршрутизатора: 12.34.56.78 И внутренний адрес Вашего сервера 192.168.1.2
Затем Вам нужно к порту передачи 5900 на Вашем маршрутизаторе к 192.168.1.2:5900, который является Вашим сервером.
Ваше корректное в этом 12.34.56.78 не отвечает на соединения. Это фильтрует все входящие соединения.
Первое, что следует рассмотреть, - это увеличить shared_buffers
на порядок выше, по крайней мере, до 1 ГБ и, возможно, намного больше, до 25% от основной памяти. Это то, что говорится в документе .
При размере всего 32 МБ, из которых ~ 18 МБ уже будет использовано только для обработки max_connections
к 950, дочерние процессы имеют доступ к едва ли достаточному количеству общих память, чтобы поделиться чем угодно.
Это может смягчить, а может и не уменьшить проблему потребления памяти для вашей конкретной рабочей нагрузки и ситуации, но в любом случае это шаг в правильном направлении. Текущее значение безумно низкое.
В частности, что касается OOM, вы можете рассмотреть обходные пути, предлагаемые в разделе Linux Memory Overcommit документа. Однако обратите внимание, что это короткий абзац для сложной проблемы. Там' s больше, например в этом сообщении блога и его комментарии с указателями для понимания контекста и компромиссов, связанных с ограничением или отключением OOM.
Помимо этого, утечка памяти в Postgres всегда возможное. Убедитесь, что вы используете последнюю дополнительную версию, если она уже исправлена. В примечаниях к выпуску, которые поставляются с каждым выпуском исправлений, время от времени определенно упоминаются утечки памяти.