Configurações de memória e servidor de páginas HTTP
O GlassFish é uma aplicação Java, logo, é necessário efetuar um ajuste fino nas configurações padrões da máquina Java para que ele funcione da melhor forma possível em um ambiente de produção.
É preciso ajustar as configurações de memória e o servidor de páginas HTTP embutido no GlassFish para atender a maior demanda de usuários, para realizar os ajustes, execute os seguintes procedimentos:
- Com o servidor iniciado, acesse o console de administração, por padrão é através da URL http://localhost:4848;
- Informe o usuário (User Name) e a senha (Password) para fazer login. Por padrão, o usuário e senha configurados são admin e adminadmin respectivamente;
- Acesse Configurations > server-config > JVM Settings > JVM Options:
- Altera as seguintes chaves conforme descrito abaixo:
Chave (Value) Novo Valor Descrição -XX:MaxPermSize=192m O valor recomendado é ¼ do valor configurado pela chave –Xmx, ou 512 MB (o que for menor). Indica a quantidade de memória alocada no PermGenSpace da VM. -client Altere para –server, pois esta aplicação é um servidor que deve ficar no ar por vários dias direto. Indica para a JVM que esta é uma aplicação client (como um aplicativo Java Swing, por exemplo). -Xmx512m Deve ser configurado conforme a quantidade de memória física disponível na máquina, de tal forma que não seja feito muito swap de disco pelo Windows. Valores típicos ficam de faixa de 1 a 3 GB (com portal, normalmente fica mais próximo dos 3 GB). Tamanho máximo alocado pelo Java para uso como HEAP de memória. Basicamente, é a área de trabalho da memória para o GlassFish.
- Utilize o botão Add JVM Option para incluir as chaves abaixo:
Chave (Value) Descrição -Xmn512m Indica a quantidade de memória reservada para a criação de novos objetos, que podem ter um ciclo de vida curto (variáveis locais de métodos, por exemplo) e são liberados rapidamente da memória. Esta configuração ajuda a não alocar muita memória permanente, o que é muito "caro" para o Java liberar mais tarde. Um valor típico ali é 512 MB (-Xmn512m). -Xrs Utilizado quando o GlassFish é instalado como serviço. Indica para a JVM para reter a sessão do Windows, caso o GlassFish esteja sendo executado como serviço do Windows e este parâmetro não estiver configurado, ele pode encerrar, sem registrar nenhum erro. -XX:+CMSParallelRemarkEnabled Aumenta a performance do coletor de lixo paralelo. -XX:SurvivorRatio=20 Indica a razão entre a área de survivor e a área de curta duração da memória. O valor recomendado é 20, desta forma a área de survivor é 1/20 da área disponível para novos objetos. -XX:+UseParNewGC Indica o algoritmo que o Garbage Collector do Java deve utilizar para limpar a memória de curta duração, destinada a novos objetos. Desta forma, objetos que duram pouco já são eliminados rapidamente da memória, sem consumir muito espaço. -XX:+UseConcMarkSweepGC Indica o algoritmo que o Garbage Collector (coletor de lixo) do Java deve utilizar para a limpeza da memória, neste caso o coletor de lixo chamado Mark Sweep. -Xms Utilizar o mesmo valor do parâmetro –Xmx descrito anteriormente, para melhor performance. Indica a quantidade inicial de memória alocada pelo Java. Esta chave foi adicionada manualmente no procedimento anterior -Dhk2.parser.timeout=300 Parametrização necessária para casos onde possa ocorrer lentidão na comunicação. Deve ser informado para utilização de web services.
-Dfile.encoding=ISO-8859-1 Utilizado quando o GlassFish é instalado em um servidor Linux. Importante
A memória alocada pelo GlassFish corresponde a soma do HEAP (-Xmx) e o PermGenSpace (-MaxPermSize). Para mais informações sobre o funcionamento da JVM em relação a memória, verifique a documentação Gerenciamento de memória em Java.
Em Sistemas Operacionais de 32 bits, a soma dos valores dos parâmetros MaxPermSize e Xmx não pode ultrapassar 2 GB RAM, pois este é o máximo que um aplicativo 32 bits suporta.
Particularidades por produto
BIPara o BI também é necessária a inclusão da chave:
- -Dfile.encoding=ISO-8859-1
- -Dfile.encoding=UTF-8 (se utilizar Glassfish 4)
Portal CorporativoPara o Portal, as determinadas chaves abaixo precisam ser alteradas da seguinte maneira:
- -XX:MaxPermSize=1g
- -Xmx6g
- -Xms2g
- Selecione a chave -XX:NewRatio=2 utilize o botão Delete para removê-la;
- Salve as alterações nas configurações de memória (botão Save);
- Acesse Configurations > server-config > Thread pools > http-thread-pool:
- Altere o valor do campo Max Thread Pool Size, o valor deve ser a quantidade de núcleos existentes na máquina, multiplicado por 8. Por exemplo, para um servidor com 4 núcleos o valor é 32 (4 * 8), para 8 núcleos é 64 (8 * 8);
- Salve as alterações nas configurações de requisições (botão Save);
- Acesse o menu Configurations > Server-config > Network Config > Network Listeners > Http-listener-X (O "X" deve ser o http-listener que será utilizado para acessar as aplicações publicadas no GlassFish);
- Acesse a guia HTTP;
- No campo Request Timeout, informe o valor "3600". Esta configuração é necessária pois o SeniorDeployTool pode demorar mais de 15 minutos para realizar o deploy. Quando o tempo de deploy exceder o timeout, o GlassFish interrompe a requisição;
- Salve as alterações nas configurações de requisições (botão Save);
- Reinicie o GlassFish para que as configurações sejam aplicadas.