Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Configuração server.xml
  3. Configuração context.xml
  4. Configuração catalina.properties
  5. Protocolos (APR e NIO)


01. VISÃO GERAL

Esse documento tem por objetivo mostrar como configurar o Tomcat para uso otimizado com o produto Datasul. Para mais informações sobre configurações e performance Tomcat acesse https://tomcat.apache.org/

Como o Tomcat possui uma estrutura de pastas padrão as configurações realizadas nesse documento são sempre feitas nos arquivos encontrados na pastas $CATALINA_HOME\conf.

02. CONFIGURAÇÃO SERVER.XML

Primeiramente faça um backup do arquivo server.xml e altere o arquivo conforme abaixo:

Threads vs Cores

Importante ressaltar que a propriedade maxThreads e o acceptCount pode ser considera por Core da máquina. No exemplo abaixo a configuração foi feita para uma máquina de 4 cores ou seja 200 threads para cada core e 100 acceptCount para cada core.

Essa conta deve ser levada em consideração no momento da definição das threads e acceptCount que o ambiente pode fazer uso. 

Alterar arquivo server.xml
...   
    <Connector port="8288" 
			   protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
			   maxThreads="800"
			   acceptCount="400"
			   enableLookups="false"/>
...
      <Host name="localhost"  appBase="webapps" startStopThreads="20"
            unpackWARs="true" autoDeploy="true">
...


03. CONFIGURAÇÃO CONTEXT.XML

Primeiramente faça um backup do arquivo server.xml e altere o arquivo conforme abaixo:

Alterar o context.xml
...
<Context crossContext="true" swallowOutput="true" sessionCookiePath="/">
 
	<JarScanner>
		<JarScanFilter	tldSkip="*.jar" tldScan="log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar,spring-webmvc*.jar,jstl*.jar"/>
	</JarScanner>
...

</Context>


04. CONFIGURAÇÃO CATALINA.PROPERTIES

Primeiramente faça um backup do arquivo catalina.properties e altere o arquivo conforme abaixo:

Atributo jarsToSkip - deve ficar apenas com uma linha (tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar), todas as demais linhas devem ser removidas:

Alterar o arquivo catalina.properties - jarsToSkip
#ANTES
...
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
annotations-api.jar,\
ant-junit*.jar,\
ant-launcher*.jar,\
ant*.jar,\
asm-*.jar,\
aspectj*.jar,\
bcel*.jar,\
...

#DEPOIS
...
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
...


Atributo jarsToScan - deve manter as linhas já existentes e adicionar 3 novas linhas ao final (spring-webmvc*.jar, totvs*.jar e jstl*.jar):

Alterar o arquivo catalina.properties - jarsToScan
#ANTES
...
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar
...

#DEPOIS
...
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar,\
spring-webmvc*.jar,\
totvs*.jar,\
jstl*.jar
...



05. PROTOCOLOS (APR E NIO)

Para uso em produção o uso do APR pode ser configurado no produto, o qual, possui implementações que são mais performáticas em relação ao NIO. O APR possui distribuição para Wnidows e Unix no entanto, para unix é preciso fazer a compilação e gerar o lib nativamente. 

Para mais informações sobre fontes e compilações acessar https://tomcat.apache.org/native-doc/

O arquivo tacnative-1.dll deve estar no bin do Tomcat para que funcione corretamente.

Uma vez com a lib no ambiente basta configurar o server.xml de acordo com a configuração abaixo. note o procotolo com a classe do APR

Alterar server.xml para Protocolo APR
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
...
    <Connector port="8288" 
			   protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443"
			   maxThreads="800"
			   acceptCount="400"
			   enableLookups="false"/>
...

Uma vez configurado o APR o sistema inicia informando a porta no modo APR de acordo com o log abaixo:

16-Jul-2022 15:55:29.519 INFORMAÇÕES [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8288"]
16-Jul-2022 15:55:29.551 INFORMAÇÕES [main] org.apache.catalina.startup.Catalina.start Server startup in [46476] milliseconds

A performance do produto depende dos ambientes, memória e core de cada servidor e os dados acima servem para a maioria dos casos. O uso do APR ou NIO também dependerá do uso do sistema e a carga de processamento. Na maioria dos casos o APR demonstrou um consumo de cpu menor do que o NIO, importante ressaltar que o NIO é a implementação default tomcat. Caso ainda exista dúvidas no uso do protocolo acesse o endereço abaixo e veja a tabela comparativa.

https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html#Connector_Comparison

Além disso, a configuração padrão da JVM para Garbage Collector atende à todos os cenários testados, porém caso seja necessário configurar esse item deve-se adicionar o diretiva -XX:+UseG1GC no start da VM java.