Na edição do SQL Server 2012 Standard, eu sei que o número máximo de conexões de usuários é 32.767. O que devo fazer como DBA se estiver indo para esse número?
Atualmente, existem 30.000 conexões de usuários e esse número deve aumentar.
Na edição do SQL Server 2012 Standard, eu sei que o número máximo de conexões de usuários é 32.767. O que devo fazer como DBA se estiver indo para esse número?
Atualmente, existem 30.000 conexões de usuários e esse número deve aumentar.
Respostas:
O número máximo de conexões nas versões e edições do SQL Server é 32.767.
Você pode determinar quantas conexões o SQL Server possui atualmente observando:
Se a proporção entre conexões usadas e não utilizadas da consulta acima for preocupante, é provável que o pool de conexões seja ativado pelos aplicativos clientes conectados ao servidor e essas conexões não estejam sendo usadas com eficiência. Convém que os desenvolvedores modifiquem a cadeia de conexão desses aplicativos para limitar o tamanho do pool de conexões e garantir que eles estejam descartando corretamente as conexões. Se as conexões não estiverem sendo descartadas corretamente, elas permanecerão abertas enquanto o aplicativo cliente estiver em execução.
Se você estiver se sentindo particularmente raivosos, e precisa se livrar de todas as conexões que não realizaram nada recentemente (independentemente de se eles são realmente atualmente realizando o trabalho), você pode executar o seguinte código, que irá gerar uma lista de sessões que pode ser morto. Você precisaria copiar e colar os comandos gerados em uma nova janela do SSMS para realmente executar os comandos. Eu também recomendo ter seu currículo up-to-date apenas no caso .
É possível dimensionar linearmente o número de conexões além de 32.767, dividindo os dados em vários nós do SQL Server. No entanto, na minha opinião, usar o sharding como uma maneira de contornar o limite no número de conexões é semelhante a usar uma bomba atômica para matar uma aranha. Ele vai matar a aranha, mas você só pode ter problemas maiores no final do dia. Sem mencionar que é muito difícil construir uma bomba atômica, sem mencionar o sharding de implementação corretamente.
fonte
is_user_process
qualificador e certamente não faria mal excluir sessões que tenhamlast_request_start_time
algo recente. Quão recente? Outra boa pergunta.Eu tive um comportamento estranho com o pool de conexões no passado e seu cenário se alinha bem a uma dessas situações. Se seu aplicativo estiver usando o pool de conexões (e isso ainda é especulação, até o momento em que você confirmar ou negar isso), você terá muitas conexões que permanecerão abertas. Isso ocorre por design.
O pool de conexões visa reduzir a sobrecarga da criação de uma conexão com o banco de dados. Vamos considerar, por exemplo, um conjunto de conexões de 3. Até onde eu sei, o ciclo de vida é algo assim (a partir de um cache de conjunto de conexões frio):
sp_reset_connection
no encadeamento 1Essa é uma simplificação excessiva, mas os pontos mais importantes incluem:
sp_reset_connection
é chamado.Aqui está o material de referência que eu costumava chegar a essas conclusões.
Pool de conexão para DBA do SQL Server
O caso de transação órfã
fonte