Pergunta

Estamos com uma alta taxa de transferência do sistema que utiliza tibco ems JMS para passar grandes quantidades de mensagens para e a partir de nosso servidor principal para o nosso conexões de cliente.Fizemos algumas estatísticas e determinou que o JMS é causando uma série de latência.Como podemos fazer tibco JMS mais alto desempenho?Existem recursos que dão uma boa discussão sobre este tema.

Foi útil?

Solução

Usar mensagens não persistentes é uma opção se você não precisar de persistência. Observe que, mesmo que você precise de persistência, às vezes é melhor usar mensagens não persistentes e, no caso de um acidente, executar uma ação de recuperação diferente (como reenviar todas as mensagens)

Isso é relevante se:

  • acidentes são raros (como a recuperação leva tempo)
  • Você pode facilmente detectar um acidente
  • Você pode lidar com mensagens duplicadas (você pode não saber exatamente quais mensagens foram entregues antes do acidente

    EMS também fornece alguns mecanismos que são persistentes, mas menos prova de bala, então a entrega garantida clássica Estes incluem:

    • em vez de "exatamente uma vez" entrega de mensagem, você pode usar "pelo menos uma vez" ou "até uma vez" entrega.
    • Você pode usar o mecanismo de pré-busca que faz com que o cliente busque mensagens para a memória antes que seu aplicativo solicite-os.

Outras dicas

EMS não deve ser o gargalo da garrafa.Eu fiz o teste e nós tivemos uma porrada de taxa de transferência no nosso servidor.

Você precisa tentar determinar onde o gargalo da garrafa é.É o problema do produtor da mensagem ou o consumidor.São mensagens de se acumulando na fila.

Que tipo de cenário você está fazendo.

Pub/sup ou solicitação de resposta?você está tendo fila temporária acumular.Muitas filas temporárias podem causar problemas de desempenho.(Principalmente quando eles ficam mais tempo porque você não fechar, algo corretamente)

Você está publicando um tópico com durável assinantes se assim.Tentar colmatar o tópico para a fila e a leitura daqueles.Durável assinantes podem causar um pouco de soluço desempenho muito desde que ele precisa para controlar quem tem cópias de todas as mensagens.

Certifique-se de que o seu processo de envio tem uma sessão e várias chamadas através de sessão.Não abra uma sessão completa para cada operação.Re-utilizar, sempre que possível.Faça o mesmo para o consumidor.

certifique-se de FECHAR quando tiver terminado.EMS não esclarecer as coisas.Portanto, se você fizer uma ligação e fechar o seu aplicativo a conexão ainda está lá e sugando recursos.

reveja a sua tolerância para a perda de mensagens no mesmo de um acidente.Se você estiver fazendo Cliente ack e não importa se você falhar, o processamento da mensagem, em seguida, alternar para o modo automático.Também acredito que se você estiver usando (TEMS - Tibco para o WCF) que há um problema com a sessão de reconhecer.De modo que uma mensagem é apenas quando a sua processadas em toda a mensagem, nós mudamos do Cliente ACK para o que tinha Dups ok, e ele funcionou melhor)

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