Como já deve ser sabido por vocês, a versão binária do GeoServer traz consigo um servlet container, o Jetty, que possui por default configurações que possibilita uma rápida inicialização, porém isso não garante uma alta performance.

Para aumentar a performance é necessário definir algumas configurações de desempenho na Máquina Virtual Java (JVM) para o seu container. Vale ressaltar que estas configurações não são para um container específico, desta forma você pode usar para o Jetty, para o Tomcat, para o JBoss, entre outros.

Abaixo, vou listar algumas das opções de configurações que você pode utilizar e onde você deve inserir esses comandos. Lembrando que foi testado com o GeoServer 2.15.1 rodando no Java 11.

-Xmn2048m : Define o tamanho inicial e máximo do novo heap
-Xms1024m : É o espaço na memória que está comprometido com a VM na inicialização. A JVM pode crescer até o tamanho de Xmx
-Xmx2048m : Determina o tamanho do heap a ser reservado na inicialização da JVM.
-XX:+ScavengeBeforeFullGC : Atua no Garbage Collection (GC)
-XX:ParallelGCThreads=4 : Define o número de threads usados ​​durante as fases paralelas do GC
-XX:+CMSParallelRemarkEnabled : Habilita o paralelismo do coletor CMS
-XX:MinHeapFreeRatio=30 : Porcentagem mínima de heap livre após atuação do GC, para evitar expansão.
-XX:SurvivorRatio=8 : Relação entre eden/survivor (tamanho do espaço). O valor padrão é 8.
-XX:MaxTenuringThreshold=15 : Valor máximo para o Tenuring Threshold. O valor padrão é 15
-XX:+DisableExplicitGC : Desativa as chamadas para System.gc(). Observe que a JVM ainda executa o GC quando necessário.
-XX:ThreadStackSize=256k : Tamanho da thread (em Kbytes)
-Duser.timezone=America/Sao_Paulo : Define o timezone
-Duser.language=pt : Define a lingua
-Duser.country=BR : Define o país
-Dfile.encoding=ISO-8859-1 : Define o encoding
-Dsun.rmi.dgc.client.gcInterval=3600000 : Especifica o funcionamento do GC uma vez por hora, em vez da taxa padrão é de uma vez por minuto.
-Dsun.rmi.dgc.server.gcInterval=3600000 : Especifica o funcionamento do GC uma vez por hora, em vez da taxa padrão é de uma vez por minuto.

Para adicionar estas opções de configurações você deve alterar a linha abaixo no arquivo startup (dentro da pasta bin):

"%RUN_JAVA%" %JAVA_OPTS% -DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar

Por:

"%RUN_JAVA%" %JAVA_OPTS% -DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%" -Djava.awt.headless=true -Xmn1024m -Xms2048m -Xmx2048m -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -XX:+CMSParallelRemarkEnabled -XX:MinHeapFreeRatio=30 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:ThreadStackSize=256k -Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.country=BR -Dfile.encoding=ISO-8859-1 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar

Feito isso, salve o arquivo. Lembrando que se você estiver no Windows, deve alterar o arquivo startup.bat, e se estiver no Linux deve alterar o arquivo startup.sh. Reinicie o GeoServer, e deixe ele “voar”.