O processo do Apache que manipula o proxy Websocket também serve o mesmo cliente para http?

2

Ao optar por adotar o Websocket como a tecnologia em tempo real por trás de um aplicativo da web para minha empresa, estou tentando determinar qual será a carga de trabalho do servidor.

Tanto quanto eu entendo internals do Apache, eu acredito que um processo Apache ou thread será mantido vivo durante uma sessão Websocket inteira intermediando a conexão com mod_proxy_wstunnel; O mesmo processo também lidará com as solicitações tradicionais de http do cliente? Ou será que outro processo será "desperdiçado" ao encaminhar esses pedidos quando eles chegarem?

    
por Some Dude 01.09.2016 / 06:21

1 resposta

2

Tudo depende de como seu aplicativo da web é projetado. Você pode realmente passar "solicitações http tradicionais" através de um websocket estabelecido ... ou você pode processar a solicitação no método mais tradicional. Infelizmente (da perspectiva de um engenheiro de sistemas), os desenvolvedores são preguiçosos ... e raramente passam pelo esforço necessário para passar a maior parte do tráfego através de um websocket estabelecido. É mais comumente usado para anunciar "atualizações" para vários bits na página ... e o trabalho de extrair dados de imagem e qualquer outra coisa que seja deixada para os GETs e POSTs mais comuns.

Em suma ... sim ... você vai amarrar um processo durante o tempo de vida de cada websocket ... e uma conexão para cada solicitação. Você pode, no entanto, fazer uso de keep-alives de conexão para reciclar a mesma conexão através de & mais ... mas isso pode afetar o tempo total de carregamento da página, já que você deve esperar que cada item seja enviado em série em vez de em paralelo.

Este é o lugar onde o rubber-meets-the-road quando se trata de Apache. Você pode alterar o Módulo de Multiprocessamento (MPM) para alterar como essas conexões de manutenção são tratadas ... bem como muitas outras coisas para ajustar o desempenho geral.

Apesar de todo o ajuste que você pode fazer no Apache ... às vezes não é a ferramenta perfeita para o trabalho. Apache é o canivete suíço na caixa de ferramentas. Ele é projetado para ser a ferramenta mais dinâmica na caixa de ferramentas. O Nginx é mais simples, e não inclui as opções de pinça ou tesoura que você encontrará na apache-knife ... e o nodejs é apenas uma faca de manteiga. Às vezes (quando o ambiente permite) é melhor misturar & jogo para obter os benefícios de todos eles.

    
por 01.09.2016 / 07:03