Performance da aplicação no tomcat

Pessoal, estou com o seguinte problema.

Tenho uma aplicação rodando no tomcat, em um servidor TOTALMENTE INTEL, ( vindo direto da fábrica ao consumidor heheh ), rodando UBUNTU SERVER 7.10, tomcat 6.
O server tem 4 GB de memória, intel core 2 duo 2.0Ghz e o caralho de asa, ou seja um puta servidor…

Vamos ao problema. Gostaria de saber o que fazer para que minha aplicação funcione sem problema.
As vezes a aplicação trava e só quando eu dou um killall no java, e subo o tomcat novamente ele voltar a funcionar. Eu não sei o que está acontecendo, já olhei log e tals.
Eu olho o gráfico de consumo de memória e processador e está tudo ok. Eu coloquei no catalina.sh um -Xmx2048 para que ele possa usar 2 GB, mas mesmo assim está dando esse travamento. Estou sem saber o que fazer. A aplicação rodava em um servidor menor e tinha o mesmo problema, claro mais frequente, mudei o servidor, dobrei a memória e nada. Separei o servidor de dados e nada. Já pensei em mudar para JBoss, mas acho que não é por ai.
Eu vou mudar meu link de 1MB Full para 4MB, claro isso é pq a aplicação está servindo 6 estados e até o fim do ano a empresa tem planos de colocar uma filial em cada estado nas capitais, então vou precisar de qualquer jeito de aumentar o link.

Então pessoal o que posso estar fazendo para resolver isso?

obrigado.

Sua aplicação utiliza banco de dados???

Vc já investigou se não são as conexões com o BD que estão travando a aplicação???

Em tempo de desenvolvimento, este problema não foi constatado?

Debuga o sistema e procure o gargalo! Mas com certeza não é problema de hardware!

Abraços

Jason, será que é o banco, estou usando um pool do próprio mentawai. Agora não sei onde definir qtde de conexões e tals, vou olhar no forum do framework e ver como fazers.

Cara, eu tive esse problema por muitos anos, usei todas as versões do mod_jk, todos são uma merda. Trava pra carai…
Fiz turning no JDK, reconfigurei o tomcat de tudo que foi maneira e nada.
Pensei que fosse memory leak nas aplicações, até que tem um pouco, mas não justificaria a travada do tomcat 4,5,6 vezes por dia.

OBS: O acesso aos servidores é grande, usuários na intranet e Internet… sendo que os usuários em geral, logam-se no sistema e ficam horas conectados trabalhando.

Solução do Problema:

Vou tentar explicar o que fiz:
Software Instalados:

  • Fedora 9 (tambem fiz no F2,F4,F7,F8 e funcionou normal)
  • jdk1.6.0_01
  • apache-2.2.9 (USANDO MOD_PROXY)
  • apache-tomcat-6.0.14

A compilação do apache-2.2.9

#./configure --prefix=/www/apache-2.2.9 --enable-so --enable-ssl --with-mpm=worker --enable-rewrite --enable-proxy --enable-proxy-ajp --enable-proxy-balancer --enable-cache --enable-disk-cache --enable-deflate --enable-headers
#make
#make install

Obs: Não esqueça de habilitar o httpd-vhosts no httpd.conf, é só descomentar uma linha

Configuração do Apache

#vi /www/apache-2.2.9/conf/extra/httpd-vhosts.conf

ExtendedStatus On
<VirtualHost *:80>
ProxyStatus On
ServerName www.seudominio.com.br
ServerAdmin suporte@seudominio.com.br
DocumentRoot /www/sistemas # Caminho dos seu sistemas(contextos)
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/exemplo.error_log
TransferLog logs/exemplo.access_log
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all

<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
AuthType basic
AuthName “TESTE”
AuthUserFile conf/htpasswd.status
Require valid-user

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
AuthType basic
AuthName “TESTE”
AuthUserFile conf/htpasswd.status
Require valid-user

<Location “/”>
Allow from all

ProxyPassMatch ^(/..jsp|/..do)$ balancer://cluster #Obs: aqui voce pode mapear seus servlets e extensões para o tomcat gerenciar… Fora essa lista,
#quem vai receber as requisições é o apache

Membros do Cluster

<Proxy balancer://cluster stickysession=JSESSIONID> # Para mater o usuário no servidor que ele se logou
BalancerMember ajp://tomcat1.seudominio.com.br:6651 route=tomcat1 smax=5 max=20 ttl=120 retry=300 loadfactor=2 # Obs: No meu caso, essa Máq. é melhor
BalancerMember ajp://tomcat2.seudominio.com.br:6651 route=tomcat2 smax=5 max=20 ttl=120 retry=300 loadfactor=1

=========================== Configuração do server.xml no TOMCAT1 =====================
OBS: Mudei as portas do tomcat por motivos proprios, voce pode deixar a porta padrão
OBS2: Não esqueça de trocar nome dos jvmRoute nos dois tomcat conforme abaixo

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="6651" protocol="AJP/1.3" maxThreads="150" minSpareThreads="10" maxSpareThreads="150" connectionTimeout="80000" />

<Engine name="catalina" defaultHost="www.seudominio.com.br" jvmRoute="tomcat1">

  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>

  <Host name="www.seudominio.com.br"  appBase="/www/sistemas"
        unpackWARs="true" autoDeploy="false"
        xmlValidation="false" xmlNamespaceAware="false">
  </Host>
</Engine>

=========================== Configuração do server.xml no TOMCAT2 =====================

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="6651" protocol="AJP/1.3" maxThreads="150" minSpareThreads="10" maxSpareThreads="150" connectionTimeout="80000" />

<Engine name="catalina" defaultHost="www.seudominio.com.br" jvmRoute="tomcat2">

  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>

  <Host name="www.seudominio.com.br"  appBase="/www/sistemas"
        unpackWARs="true" autoDeploy="false"
        xmlValidation="false" xmlNamespaceAware="false">
  </Host>
</Engine>

Pronto, com isso o seu tomcat vai parar de travar… e voce opde ficar tranquilo, só toma cuidado com o seu chefe, pois não vai ter mais reclamação dos servidores. Dai ele pode achar que voce não tem mais serventia… :slight_smile:

Espero ter ajudado,
qualquer dúvida, mande um email para sandovalcp@gmail.com

Olá amigo!

Venho enfrentando um problema parecido com o teu e segui todos os passos de configuração do httpd-vhosts.conf e server.xml de cada um dos meus servidores (tomcat)

Porém ao digitar http://www.faespsenar.com.br/sicp ele apresenta a tela Apache Tomcat Manager e não a minha aplicação.

Você poderia me ajudar com algumas orientações ?

Minhas configurações estão assim:

Arquivo Apache2: httpd-vhosts.conf

        &lt;Proxy *&gt;
                Order deny,allow
                Allow from all
        &lt;/Proxy&gt;
 
        &lt;Location /balancer-manager&gt;
                SetHandler balancer-manager
                Order Deny,Allow
                Deny from all
                Allow from all
                #AuthType basic
                #AuthName "TESTE"
                #AuthUserFile conf/htpasswd.status
                #Require valid-user
        &lt;/Location&gt;
 
        #&lt;Location "/"&gt;
        #        Allow from all
        #&lt;/Location&gt;
 
        #Obs: aqui voce pode mapear seus servlets e extensões para o tomcat gerenciar...
        #Fora essa lista, quem vai receber as requisições é o apache
        ProxyPassMatch ^(/.*\.jsp|/.*\.tag)$ balancer://cluster
        ProxyPass /sicp balancer://cluster
        ProxyPassReverse /sicp balancer://cluster
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyStatus On
 
        ###### Membros do Cluster #####
        # Para mater o usuário no servidor que ele se logou
        #&lt;Proxy balancer://cluster stickysession=JSESSIONID&gt;
        &lt;Proxy balancer://cluster&gt;
                # Obs: No meu caso, essa Máq. é melhor
                BalancerMember ajp://mail1.faespsenar.com.br:8009 route=mail1 smax=5 max=20 ttl=120 retry=300 loadfactor=1
                BalancerMember ajp://mail2.faespsenar.com.br:8009 route=mail2 smax=5 max=20 ttl=120 retry=300 loadfactor=2
                ProxySet lbmethod=bytraffic
        &lt;/Proxy&gt;

Arquivo Tomcat: server.xml

 &lt;Service name="Catalina"&gt;
 
    &lt;Executor name="tomcatThreadPool"
              namePrefix="catalina-exec-"
              maxThreads="150"
              minSpareThreads="40"/&gt;
 
    &lt;Connector port="8080"
               protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /&gt;
    &lt;Connector port="8009" protocol="AJP/1.3" maxThreads="150" minSpareThreads="10" maxSpareThreads="150" connectionTimeout="20000" /&gt;
 
    &lt;Engine name="Catalina"
            defaultHost="www.faespsenar.com.br"
            jvmRoute="mail1"&gt;
            
    &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/&gt;
 
    &lt;Host name="www.faespsenar.com.br"
          appBase="webapps"
          unpackWARs="true"
          autoDeploy="true"
          xmlValidation="false"
          xmlNamespaceAware="false"&gt;
    &lt;/Host&gt;
    &lt;/Engine&gt;
  &lt;/Service&gt;

Obrigado!

Dennys