{"id":8411,"date":"2019-08-12T07:30:35","date_gmt":"2019-08-12T10:30:35","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8411"},"modified":"2019-08-12T08:27:57","modified_gmt":"2019-08-12T11:27:57","slug":"ajuste-de-desempenho-no-geoserver","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2019\/08\/12\/ajuste-de-desempenho-no-geoserver\/","title":{"rendered":"Ajuste de desempenho no GeoServer"},"content":{"rendered":"<p>Como j\u00e1 deve ser sabido por voc\u00eas, a <a href=\"http:\/\/geoserver.org\/release\/stable\/\" rel=\"noopener noreferrer\" target=\"_blank\">vers\u00e3o bin\u00e1ria do GeoServer<\/a> traz consigo um servlet container, o Jetty, que possui por default configura\u00e7\u00f5es que possibilita uma r\u00e1pida inicializa\u00e7\u00e3o, por\u00e9m isso n\u00e3o garante uma alta performance.<\/p>\n<p>Para aumentar a performance \u00e9 necess\u00e1rio definir algumas <a href=\"http:\/\/www.petefreitag.com\/articles\/gctuning\/\" rel=\"noopener noreferrer\" target=\"_blank\">configura\u00e7\u00f5es de desempenho<\/a> na M\u00e1quina Virtual Java (JVM) para o seu container. Vale ressaltar que estas configura\u00e7\u00f5es n\u00e3o s\u00e3o para um container espec\u00edfico, desta forma voc\u00ea pode usar para o Jetty, para o Tomcat, para o JBoss, entre outros.<\/p>\n<p>Abaixo, vou listar algumas das <a href=\"https:\/\/www.oracle.com\/technetwork\/articles\/java\/vmoptions-jsp-140102.html\" rel=\"noopener noreferrer\" target=\"_blank\">op\u00e7\u00f5es de configura\u00e7\u00f5es<\/a> que voc\u00ea pode utilizar e onde voc\u00ea deve inserir esses comandos. Lembrando que foi testado com o GeoServer 2.15.1 rodando no Java 11.<\/p>\n<p><strong>-Xmn2048m<\/strong> : Define o tamanho inicial e m\u00e1ximo do novo heap<br \/>\n<strong>-Xms1024m<\/strong> : \u00c9 o espa\u00e7o na mem\u00f3ria que est\u00e1 comprometido com a VM na inicializa\u00e7\u00e3o. A JVM pode crescer at\u00e9 o tamanho de Xmx<br \/>\n<strong>-Xmx2048m<\/strong> : Determina o tamanho do heap a ser reservado na inicializa\u00e7\u00e3o da JVM.<br \/>\n<strong>-XX:+ScavengeBeforeFullGC<\/strong> : Atua no Garbage Collection (GC)<br \/>\n<strong>-XX:ParallelGCThreads=4<\/strong> : Define o n\u00famero de threads usados \u200b\u200bdurante as fases paralelas do GC<br \/>\n<strong>-XX:+CMSParallelRemarkEnabled<\/strong> : Habilita o paralelismo do coletor CMS<br \/>\n<strong>-XX:MinHeapFreeRatio=30<\/strong> : Porcentagem m\u00ednima de heap livre ap\u00f3s atua\u00e7\u00e3o do GC, para evitar expans\u00e3o.<br \/>\n<strong>-XX:SurvivorRatio=8<\/strong> : Rela\u00e7\u00e3o entre eden\/survivor (tamanho do espa\u00e7o). O valor padr\u00e3o \u00e9 8.<br \/>\n<strong>-XX:MaxTenuringThreshold=15<\/strong> : Valor m\u00e1ximo para o Tenuring Threshold. O valor padr\u00e3o \u00e9 15<br \/>\n<strong>-XX:+DisableExplicitGC<\/strong> : Desativa as chamadas para System.gc(). Observe que a JVM ainda executa o GC quando necess\u00e1rio.<br \/>\n<strong>-XX:ThreadStackSize=256k<\/strong> : Tamanho da thread (em Kbytes)<br \/>\n<strong>-Duser.timezone=America\/Sao_Paulo<\/strong> : Define o timezone<br \/>\n<strong>-Duser.language=pt<\/strong> : Define a lingua<br \/>\n<strong>-Duser.country=BR<\/strong> : Define o pa\u00eds<br \/>\n<strong>-Dfile.encoding=ISO-8859-1<\/strong> : Define o encoding<br \/>\n<strong>-Dsun.rmi.dgc.client.gcInterval=3600000<\/strong> : Especifica o funcionamento do GC uma vez por hora, em vez da taxa padr\u00e3o \u00e9 de uma vez por minuto.<br \/>\n<strong>-Dsun.rmi.dgc.server.gcInterval=3600000<\/strong> : Especifica o funcionamento do GC uma vez por hora, em vez da taxa padr\u00e3o \u00e9 de uma vez por minuto.<\/p>\n<p>Para adicionar estas op\u00e7\u00f5es de configura\u00e7\u00f5es voc\u00ea deve alterar a linha abaixo no arquivo startup (dentro da pasta bin):<\/p>\n<pre>\r\n\"%RUN_JAVA%\" %JAVA_OPTS% -DGEOSERVER_DATA_DIR=\"%GEOSERVER_DATA_DIR%\" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar\r\n<\/pre>\n<p>Por:<\/p>\n<pre>\r\n\"%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\r\n<\/pre>\n<p>Feito isso, salve o arquivo. Lembrando que se voc\u00ea 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 &#8220;voar&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como j\u00e1 deve ser sabido por voc\u00eas, a vers\u00e3o bin\u00e1ria do GeoServer traz consigo um servlet container, o Jetty, que possui por default configura\u00e7\u00f5es que possibilita uma r\u00e1pida inicializa\u00e7\u00e3o, por\u00e9m isso n\u00e3o garante uma alta performance. Para aumentar a performance&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2019\/08\/12\/ajuste-de-desempenho-no-geoserver\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8412,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[208],"class_list":["post-8411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geoserver"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=8411"}],"version-history":[{"count":11,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8411\/revisions"}],"predecessor-version":[{"id":8423,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8411\/revisions\/8423"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8412"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}