Eu estou querendo saber por que você executa tantas instâncias na mesma máquina, mas eu acho que você testou essa configuração e achou que ela estava oferecendo o mais alto desempenho. Além disso, como não há menção do backend do EAR (banco de dados?), Vamos supor que não há problema aqui.
Eu, portanto, abordaria esse irrelevante da configuração glassfish / mod_jk. Verifique o que realmente está acontecendo, quando 100 usuários acessam a mesma página. Quantas conexões paralelas estão sendo abertas pelos clientes, como elas se relacionam com os MaxClients do Apache? Os recursos estáticos estão sendo armazenados em cache pelos clientes; você está enviando cabeçalhos Etag / Last-Modified / Cache-Control? Você pode reduzir o número de solicitações (confira a página com YSlow )?
Em seguida, obtenha os recursos estáticos fornecidos pelo Apache, não pelos appservidores do Glassfish. Isso aliviará os appservers e o loadbalancer e liberará slots para a criação real de páginas dinâmicas. Para fazer isso, extraia os arquivos e imagens CSS / JS do EAR e coloque-os na raiz do documento do apache em um diretório (por exemplo, /static/
). Em seguida, verifique se os clientes solicitam os recursos dessa maneira ou use o RewriteEngine
para mapear as solicitações de acordo.
Se a criação de páginas for cara, mas o resultado for razoavelmente armazenável em cache, você pode considerar a colocação de uma instância de Verniz em frente ao Proxy do Apache. Você precisa ter os cabeçalhos de cache sob controle primeiro.
Boa sorte!