Você pode querer verificar se o cliente lento faz criptografia SSL ou não. Isso acontece por padrão quando está configurado no servidor e o cliente foi compilado com suporte a SSL.
Para consultas que recuperam grandes quantidades de dados, a diferença de tempo é significativa. Também algumas distribuições Linux como Debian/Ubuntu têm SSL ativado por padrão, mesmo para conexões TCP através de localhost.
Como exemplo, aqui está a diferença de tempo para uma consulta recuperando 1,5 M de linhas com um total de 64 Mbytes, com um cache quente.
Sem criptografia:
$ psql "host=localhost dbname=mlists sslmode=disable" Password: psql (9.1.7, server 9.1.9) Type "help" for help. mlists=> \timing Timing is on. mlists=> \o /dev/null mlists=> select subject from mail; Time: 1672.258 ms
Com criptografia:
$ psql "host=localhost dbname=mlists" Password: psql (9.1.7, server 9.1.9) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. mlists=> \o /dev/null mlists=> \timing Timing is on. mlists=> select subject from mail; Time: 7017.935 ms
Para desativá-lo globalmente, pode-se definir
SSL=off
em postgresql.conf
. Para desativá-lo para intervalos específicos de endereços de clientes, adicione entradas em
pg_hba.conf
com hostnossl
no primeiro campo antes do host
mais genérico entradas. Para desativá-lo no lado do cliente, depende de como o driver expõe o
sslmode
parâmetro de conexão. Caso contrário, o PGSSLMODE
variável de ambiente pode ser usada se o driver for implementado em cima de libpq
. Quanto às conexões através de soquetes de domínio Unix (
local
), o SSL nunca é usado com eles.