1. Introdução
Muitas configurações do E3 relacionadas ao gerenciamento de conexões de rede podem não ser adequadas para uma rede qualquer. Em geral, as configurações padrão do E3 funcionam bem numa rede local (LAN) Ethernet (10Mbps) ou superior.
Este artigo lista os ajustes usuais (muitas vezes até obrigatórios) que devem ser feitos nas configurações do aplicativo e do computador (via E3Tweak) para o melhor funcionamento do E3 em redes não locais. No caso das configurações feitas no E3 Server via E3Tweak, seu efeito será global, aplicando-se a todas as conexões recebidas pelo E3 Server, sejam elas de uma rede local (LAN) ou de uma remota (WAN), e seja a conexão do Viewer/WebViewer, do Studio, ou de outro E3 Server (hot-standby e Domínios Remotos).
No caso do Viewer/WebViewer, é possível fazer ajustes diretamente no objeto Viewer do aplicativo, de dentro do Studio.
No caso de Domínios Remotos, algumas configurações podem ser feitas na janela de configuração dos domínios remotos no E3 Admin e se aplicam separadamente a cada conexão.
2. Configurações do E3Tweak
As configurações do E3Tweak relativas às características da rede encontram-se no subitem E3 Server e no subitem REC. Note que em geral elas se aplicam aos diversos tipos de conexões que o E3 Server pode receber. Ou seja, não são configurações seletivas.
2.1 REC
2.1.1 Nível de compressão (Elipse Software\E3\REC\CompressionLevel)
Sempre que banda for reduzida (ex: menos de 10Mbps), é recomendável habilitar a compressão. Em geral pode ser melhor simplesmente usar a compressão máxima, através do valor 9.
Esta configuração deve ser feita em todos as máquinas servidoras (onde rodar o E3 Server), e opcionalmente pode haver um ganho (menor) em fazer isto também nas máquinas que rodam o Viewer/WebViewer (clientes), caso essas máquinas sejam pré determinadas.
Esta opção se aplica a todas as conexões do E3 Server, sendo mais importante seu uso no caso do Viewer/WebViewer e Domínios Remotos.
2.1.2 Timeout da conexão (Elipse Software\E3\REC\ConnectionTimeout)
Eventualmente, se a rede tiver latência muito alta (ex: > 500 ms), pode ser necessário ajustar o tempo limite da conexão.
Esta configuração deve ser feita nas máquinas que rodam Studio (o hot-standby tem este tempo configurado automaticamente de acordo com tempo de troca configurado, os domínios remotos tem uma configuração separada e o Viewer/WebViewer não usa este tempo limite).
Outra utilidade é permitir um tempo maior esperando o E3 Server encontrar a hardkey, caso o E3 Server esteja sendo recentemente iniciado. Isto se aplica ao Studio rodando na mesma máquina que o E3 Server.
NOTA: Esta configuração não afeta as conexões de Viewer/WebViewer, Domínios Remotos e Hot-standby.
2.2 E3 Server
2.2.1 Timeout para o ping (Elipse Software\E3\E3Server\PingTimeout)
Esta configuração serve para que o E3 Server detecte mais cedo a falha de um cliente, de maneira que este então pare de enviar (e acumular) mensagens relativas àquela conexão.
Em redes com alta latência, pode-se simplesmente usar um valor maior que o padrão de 2 segundos (2000).
Se a versão do E3 for 3.2 ou inferior, em redes com banda muito limitada e/ou onde simplesmente ocorra perda de pacotes, o ideal pode ser desligar este recurso, utilizando o valor 0 (zero). Se for utilizada a versão 3.5 do E3 ou superior é recomendável também utilizar a configuração a seguir (PingRetries).
Esta configuração deve ser feita em todos as máquinas servidoras (onde rode o E3 Server).
NOTA: Caso o E3 Server receba conexões (sejam elas de Viewer/WebViewer, Domínios Remotos, etc.) de redes diversas, esta configuração deve contemplar o pior caso, ou seja a rede com maior latência e/ou que tenha maior perda de pacotes.
2.2.2 Número de retentativas caso o ping falhe (Elipse Software\E3\E3Server\PingRetries)
Esta configuração funciona em conjunto com a configuração anterior (PingTimeout).
Em redes congestionadas (banda limitada) e/ou onde ocorra a perda de pacotes, a falha do ping pode ocorrer mesmo com tempos limites muito altos.
Na verdade, o ideal é utilizar retentativas para diferenciar uma simples perda de pacote de uma falha “real” da rede. Utilize em conjunto com o ajuste correto do PingTimeout de maneira que uma perda ocasional de pacote de ping não provoque a desconexão de um cliente (Viewer, Domínio Remoto, etc). Por exemplo, se no uso normal da rede a latência medida pelo ping do Windows for de 700 ms, o PingTimeout pode ser usado em 2800 ms, em conjunto com o PingRetries de 2 ou 3.
Esta configuração deve ser feita em todos as máquinas servidoras (onde rode o E3 Server).
NOTA: Como o descarte dos pacotes de PING (protocolo ICMP) pode depender de diversas características de rede, o ideal é sempre testar a pior situação possível e ver como o PING se comporta. Eventualmente, pode ser o necessário deixar PingTimeout em 0 mesmo com a versão 3.5 do E3.
2.2.3 Heartbeat da licença (Elipse Software\E3\E3Server\LicenseHeartBeat)
Esta configuração estabelece uma verificação da presença do cliente na rede, após estabelecida a conexão REC. Isto permite ao E3 Server detectar mais rapidamente a falha de um cliente e desfazer a conexão com este, liberando a licença associada. Isto se aplica apenas às conexões que consomem licenças, ou seja Viewers, Studios e Domínios Remotos (o hot-standby tem um heartbeat configurado automaticamente de acordo com tempo de troca configurado).
Esta configuração deve ser feita em todos as máquinas servidoras (onde rode o E3 Server).
Se a latência da rede entre o cliente o E3 Server for alta, este valor deve ser ajustado de acordo, de maneira que o E3 Server não desconecte o cliente sem necessidade.
NOTA: Caso o E3 Server receba conexões (sejam elas de Viewers, Domínios Remotos, etc.) de redes diversas, esta configuração deve contemplar o pior caso, ou seja a rede com maior latência.
3. Configurações do Viewer
O protocolo REC permite o uso de verificações de rede tanto do lado cliente quanto do lado servidor. No caso do Viewer, é possível configurar duas coisas:
3.1 PING
Através da opção /NOPING de linha de comando (ou opção NOPING na página do WebViewer), é possível fazer que o Viewer/WebViewer não dependa do PING para tentar conectar ao servidor. Isto pode ser útil se o PING (pedido de “eco” do protocolo ICMP) for bloqueado na rede e/ou ocorrerem perdas frequentes desse tipo de pacote. Também pode ser interessante desligar esta opção caso a latência da rede seja muito alta e valor fixo de 4 segundos utilizado pelo Viewer não seja adequado. Mas com uma latência tão alta, provavelmente o uso do Viewer ficará inaceitável de qualquer forma.
Esta configuração só tem efeito quando o Viewer conecta num servidor remoto (ou seja, não na mesma máquina do Viewer).
3.2 EnableHeartbeat, HeartbeatPeriodMs, HeartbeatTimeoutMs
Através das propriedades EnableHeartbeat, HeartbeatPeriodMs e HeartbeatTimeoutMs, é possível definir no aplicativo uma verificação de presença do servidor feita nas máquinas do Viewer/WebViewer. Isto permite ao Viewer detectar mais rapidamente a troca de servidores e/ou uma falha da conexão com o E3 Server.
EnableHeartbeat: o valor padrão dessa propriedade é False, mas deve ser colocado em True caso deseje-se que o Viewer responda mais rapidamente à troca de servidor, por exemplo.
HeartbeatPeriodMs: controla a frequência mínima com o que servidor deverá enviar mensagens para o Viewer. O valor padrão dessa propriedade é 2000 (2 segundos), mas deve ser aumentando se a latência da rede for grande. Note que o valor deve ser entre 200 e 30000, e não pode ser maior que o HeartbeatTimeoutMs.
HeartbeatTimeoutMs: controla o tempo máximo que o Viewer aceitará ficar sem mensagens do servidor. O valor padrão dessa propriedade é 5000 (5 segundos), mas deve ser aumentado se a latência da rede for alta, sendo que o recomendável é que seja de 2 a 3 vezes o valor da propriedade HeartbeatPeriodMs.
NOTA: Caso o Viewer/WebViewer possa ser aberto de redes diversas, esta configuração deve contemplar o pior caso possível, ou seja, a rede com maior latência.
4. Configurações de Domínios Remotos
Desde a versão 3.2 Build 106 do E3, as configurações dos parâmetros de rede das conexões clientes de domínios remotos são feitas individualmente, e assim permitem que os melhores valores sejam utilizados em cada caso de acordo as características específicas da rede entre o cliente e cada um dos diferentes servidores remotos. As configurações são acessadas através do botão “Avançado”, para cada conexão definida.
4.1 Tempo limite de conexão
Este tempo pode ser aumentado caso a latência da rede seja alta, de maneira a permitir que a conexão seja completada.
O valor deve ser algumas vezes maior que a latência da rede em uso real. Em uma rede local onde a latência é muito baixa (< 1 ms), é recomendável manter o valor padrão. Em geral, o ajuste deve ser apenas para contemplar uma latência de rede adicional.
4.2 Verificar PING / Tempo limite de PING
Através desta opção, é possível fazer com que o domínio remoto cliente não dependa do ping para tentar conectar-se ao servidor. Isto pode ser útil se o PING (pedido de “eco” do protocolo ICMP) for bloqueado na rede e/ou ocorrerem perdas frequentes desse tipo de pacote. Caso esta opção seja habilitada, a verificação do ping será feita antes e depois da conexão, de maneira a detectar a presença e falha da conexão de rede. O valor do tempo limite deve ser ajustado caso a latência da rede seja alta, sendo recomendável que este valor seja de duas a três vezes maior que latência. Note que o valor 0 irá desligar o uso do PING (equivale a desmarcar a opção).
4.3 Utilizar heartbeat na conexão / Período de heartbeat
É recomendável deixar esta opção sempre marcada, apenas aumentando o valor do período de heartbeat de maneira a ficar compatível com a latência da rede. Ou seja, o valor deve ser algumas vezes maior que a latência da rede em uso real. Caso esta opção seja desligada, é recomendável ao menos que seja utilizada a opção de Verificar PING, do contrário o cliente pode eventualmente ficar trancado por um longo tempo no caso da falha da conexão de rede. Note que o valor 0 desligará o uso do heartbeat (equivale a desmarcar a opção).
4.4 Utilizar criação assíncrona de links
É recomendável deixar esta opção sempre marcada, pois ela permite que a demora da resposta do domínio servidor não afete diretamente a navegação em telas ou outra operação que crie novos links em batelada. A exceção é feita se o domínio servidor for de uma versão 3.1 ou inferior; neste caso, ela deve ficar desligada para que conexão funcione, visto que a criação assíncrona de links não existia antes da versão 3.2 Build 106.