Pergunta

Este artigo dá uma boa visão geral sobre tratamento de exceção porque estruturado é ruim. Existe uma maneira de obter a robustez de parar seu servidor de deixar de funcionar, ao obter passado os problemas mencionados no artigo?

Eu tenho um software de servidor que corre cerca de 400 usuários conectados simultaneamente. Mas se houver um acidente todos os 400 usuários são afetados. Nós adicionado estruturado manipulação de exceção e apreciado os resultados por um tempo, mas eventualmente teve que removê-lo por causa de algumas falhas que causam todo o servidor para pendurar (o que é pior do que apenas tê-lo falhar e reiniciar-se).

Assim, temos o seguinte:

  • Com SEH: apenas 1 usuário do 400 obter um problema para a maioria acidentes
  • Sem SEH:. Se algum usuário recebe um acidente, todos os 400 são afetados
  • Mas às vezes com SEH:. Trava servidor, todos os 400 são afetados e os futuros usuários que tentam se conectar
Foi útil?

Solução

Quebre seu programa até em processos de trabalho e um único processo do servidor. O processo do servidor irá lidar com os pedidos iniciais e, em seguida, entregá-las aos processos de trabalho. Se um processo de trabalho falha, apenas os usuários desse trabalhador são afetados. Não use SEH para manipulação de excepção geral -. Como você descobriu, ele pode e vai deixar você bem abertos para impasses, e você ainda pode falhar de qualquer maneira

Outras dicas

Usando SEH porque o seu programa trava aleatoriamente é uma má idéia. Não é pó de pirlimpimpim mágico que você pode polvilhar em seu programa para torná-lo parar de bater. Rastrear e corrigir os erros que causam os acidentes é a solução certa.

Usando SEH quando você realmente precisa lidar com uma exceção estruturada é bom. Larry Osterman fez um post acompanhamento explicando que situações exigem SEH:. arquivos de memória mapeada, RPC, e segurança de fronteira transições

Corrigir os erros em seu programa? ;)

Pessoalmente eu manter os manipuladores SEH em, tê-los despejar uma pilha de chamadas de onde a violação de acesso ou o que aconteceu e corrigir os problemas. O 'às vezes os trava servidor' problema é provavelmente devido a impasses causados ??pelo fio que tinha a guarda exceção SEH algo bloqueado e por isso é pouco provável que seja relacionado ao fato de que você está usando SEH em si.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top