Boas práticas
Geral
-
Reutilizar sessões (se beneficiar do cache de sessões). Use o cache de sessões do HSM e ganhe performance reutilizando as sessões do HSM e HTTP. Neste caso recomenda-se abrir uma sessão, fazer as operações que deseja e logo após fechar; permitindo que a sessão possa ser reutilizada rapidamente, diminuindo assim o tempo ocioso.
-
Garantir o fechamento das sessões. O fechamento das sessões garante a liberação do recurso, tanto no HSM quanto no cliente. Certifique-se que as sessões sejam fechadas inclusive nas operações com código de retorno diferente de sucesso.
-
Utilizar sessões concorrentes. Usar sessões concorrentes/paralelas com o HSM ajuda a extrair o máximo de performance. Deve-se atentar para o excesso de sessões com os HSMs, para não causar um uso desnecessário de recursos. A curva de throughput tende a subir e encontrar um platô.
Requisições HTTP Pix
- Definir um intervalo de recarregamento de objetos de conexão. É possível otimizar a quantidade de vezes em que ocorre o carregamento das chaves e objetos do HSM definindo um intervalo de recarregamento de objetos do HSM. Como a atualização de chave/certificado/cadeia da instituição é feita poucas vezes e de forma programada, é vantajoso definir um intervalo de recarregamento desses objetos. Atentar para timeouts de ativos de rede menores do que esse valor, isto evita desconexões prematuras e erros desnecessários.
Veja mais detalhes e como configurar no tópico env vars.
Configurações Importantes
Geral
- Definir os timeouts de conexão com o HSM. Quando não definido o timeout do HSM o padrão é o do sistema operacional. Em casos de falha de conexão a aplicação pode ficar em espera excessiva. É importante SEMPRE definir o timeout de envio e recebimento do HSM (consulte o tópico env vars). Outros parâmetros de conexão também podem ser configurados.
Requisições HTTP Pix
- Definir os timeouts da operação HTTP. Quando não definido o timeout padrão da operação HTTP é sem limite. Em casos de falha de conexão HTTP a aplicação pode ficar em espera indefinidamente. É importante SEMPRE definir o timeout nas chamadas de requisições HTTP.