O que devo fazer se um erro for retornado quando eu usar o pool de conexão Jedis?
A mensagem de erro que possivelmente será exibida quando você usar o pool de conexão Jedis JedisPool é a seguinte:
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
Se essa mensagem de erro for exibida, verifique se a instância está sendo executada corretamente. Se estiver funcionando corretamente, execute as seguintes verificações:
- Verifique a rede.
- Verifique as configurações de endereço IP.
Verifique se o endereço IP configurado no cliente Jedis é o mesmo que o endereço de sub-rede configurado para sua instância de DCS. Se o acesso público estiver habilitado para sua instância, verifique se o endereço IP configurado no cliente Jedis é o mesmo que o EIP vinculado à sua instância. Se forem inconsistentes, modifique a configuração do endereço IP e tente novamente.
- Teste a rede.
Use o comando ping e telnet no cliente para testar a rede.
- Se não for possível fazer ping na rede:
- Para acesso dentro da VPC, verifique se o cliente e a sua instância do DCS estão na mesma VPC e se as regras de grupo de segurança ou a lista branca foram configuradas corretamente.
- Para acesso público com SSL, verifique se você configurou o grupo de segurança de sua instância de DCS, permitindo o acesso por meio da porta 36379, conforme instruído em Configurações de grupo de segurança.
- Para acesso público sem SSL, verifique se você configurou o grupo de segurança da instância do DCS, permitindo o acesso pela porta 6379, conforme instruído em Configurações de grupo de segurança.
- Se for possível fazer o ping do endereço IP, mas o telnet falhar, reinicie sua instância. Se o problema persistir após a reinicialização, entre em contato com o suporte técnico.
- Se não for possível fazer ping na rede:
- Verifique as configurações de endereço IP.
- Verifique o número de conexões.
Verifique se o número de conexões de rede estabelecidas excede o limite superior configurado para JedisPool. Se o número de conexões estabelecidas se aproximar do limite superior configurado, reinicie o serviço DCS e verifique se o problema persiste. Se o número de conexões estabelecidas estiver muito abaixo do limite superior, continue com as seguintes verificações.
No Unix ou Linux, execute o seguinte comando para consultar o número de conexões de rede estabelecidas:
netstat -an | grep 6379 | grep ESTABLISHED | wc -l
No Windows, execute o seguinte comando para consultar o número de conexões de rede estabelecidas:
netstat -an | find "6379" | find "ESTABLISHED" /C
- Verifique o código JedisPool.
Se o número de conexões estabelecidas se aproximar do limite superior, determine se o problema é causado pela simultaneidade do serviço ou pelo uso incorreto de JedisPool.
Ao usar o JedisPool, você deve chamar jedisPool.returnResource() ou jedis.close() (recomendado) para liberar os recursos depois de chamar jedisPool.getResource().
- Verifique o número de conexões TIME_WAIT.
Execute o comando ss -s para verificar se há muitas conexões TIME_WAIT no cliente.
Se houver muitas conexões TIME_WAIT, modifique os parâmetros do kernel executando o comando /etc/sysctl.conf da seguinte maneira:
##Uses cookies to prevent some SYN flood attacks when the SYN waiting queue overflows. net.ipv4.tcp_syncookies = 1 ##Reuses TIME_WAIT sockets for new TCP connections. net.ipv4.tcp_tw_reuse = 1 ##Enables quick reclamation of TIME_WAIT sockets in TCP connections. net.ipv4.tcp_tw_recycle = 1 ##Modifies the default timeout time of the system. net.ipv4.tcp_fin_timeout = 30
Após a modificação, execute o comando /sbin/sysctl -p para que a modificação tenha efeito.
- Se o problema persistir depois de executar as verificações anteriores, execute as etapas a seguir.
Capture pacotes e envie arquivos de pacotes juntamente com o tempo e a descrição da exceção ao suporte técnico para análise.
Execute o seguinte comando para capturar pacotes:
tcpdump -i eth0 tcp and port 6379 -n -nn -s 74 -w dump.pcap
No Windows, você também pode instalar a ferramenta Wireshark para capturar pacotes.
Para acesso público, altere o número da porta para 36379.
Substitua o nome da NIC pelo nome real.
Cliente e conexão de rede Perguntas frequentes
- Como configurar um grupo de segurança?
- O DCS suporta o acesso público?
- O DCS oferece suporte ao acesso entre VPCs?
- Serei cobrado pelo EIP usado para acesso público a uma instância do DCS Redis?
- Por que "(error) NOAUTH Authentication required" é exibida quando eu acesso uma instância do DCS Redis?
- O que devo fazer se o acesso ao DCS falhar após a desconexão do servidor?
- Por que as solicitações às vezes esgotam o tempo nos clientes?
- O que devo fazer se um erro for retornado quando eu usar o pool de conexão Jedis?
- Como acessar uma instância do DCS Redis por meio do Redis Desktop Manager?
- O que acontece se "ERR Unsupported CONFIG subcommand" é exibido na SpringCloud?
- O que posso fazer se não conseguir acessar uma instância de DCS usando seu endereço de nome de domínio?
- É necessária uma senha para acessar uma instância? Como definir uma senha?
- Posso acessar instâncias de DCS em um ambiente local?
- O que deve ser observado ao usar o Redis para Pub/Sub?
- Por que o acesso público à minha instância do DCS Redis foi desativado de forma não intencional?
- O que posso fazer se o erro "Cannot assign requested address" for retornado ao acessar o Redis usando o connect?
- Seleção de pool de conexão e configurações de parâmetro Jedis recomendadas
- O que fazer se um cliente Lettuce 6.x for incompatível com minha instância de DCS?
- Devo usar um nome de domínio ou um endereço IP para conectar-se a uma instância do DCS Redis?
- O endereço somente leitura de uma instância principal/em espera está conectado ao nó principal ou em espera?
Feedback
Esta página foi útil?
Deixar um comentáriomore