Travamento servidor OpenFire

Na empresa em que trabalho utilizamos o OpenFire como servidor Jabber, para quem não sabe e de uma maneira bem grossa, Jabber é um servidor para “MSN Interno” que feio dizer isso mas é fácil de todos compreenderem, utiliza Extensible Messaging Presence Protocol (XMPP), também conhecido como Jabber, é um protocolo aberto, baseado em XML para sistemas de mensagens instantâneas.

Bom, não vim aqui para ensinar sobre OpenFire ou o Jabber mas sim um problema que estava enfrentando, que depois da atualização do OpenFire para a versão 3.7.0, em um dia tivemos mais de 5 travamentos do servidor, no caso apenas o serviço OpenFire, a solução era dar um restart no serviço e tudo se normalizava.

Acessando a página via web do servidor notei algo estranho, segue na imagem abaixo:

Em “Memória do Java” estava com 100% sendo usando. Isto me deixou muito curioso.

Durante o dia não tive tempo mas a noite em casa, tranquilo e algumas horas com o “pai dos burros“, vi em fóruns e principalmente do OpenFire pessoas com o mesmo problema ou semelhante até que vi um ser ilustre com o mesmo problema que o meu, e ele comentou sobre esta Memoria do Java, e disse que depois que aumentou o tamanho da memória acabou-se os problemas.

Maravilha! Resolvido? Sim! Mas, onde aumento a memória do Java do OpenFire?

Novamente google, e achei a solução.

Vou mostrar os dois caminhos possíveis, para servidores Windows e Linux.

Linux

Acesse o diretório raiz do Openfire (/opt/openfire), em seguida o diretório bin, agora edite o script openfire usando o vi mesmo e descomente a linha INSTALL4J_ADD_VM_PARAMS, como abaixo:

#!/bin/bash

#Uncomment the following line to override the JVM search sequence

#INSTALL4J_JAVA_HOME_OVERRIDE=

#Uncomment the following line to add additional VM parameters

#INSTALL4J_ADD_VM_PARAMS=

#——————————————————————————————-

INSTALL4J_ADD_VM_PARAMS=”-Xms512m -Xmx1024m”   
#Xms512m é o minimo e Xmx1024m é o maximo de memória#——————————————————————————————
Salve o arquivo no caso, ESC e :wq e reinicie o OpenFire.

Windows

Acesse o diretório raiz do OpenFire no meu caso, C:Program Files(x86)Open Fire e acesse o diretório bin.

Se você usa o Openfire como um serviço Windows, crie um arquivo de texto chamado openfire-service.vmoptions. Cada parâmetro da VM deve ser uma nova linha no arquivo. Por exemplo para setar um mínimo de 512M e máximo de 1024M, você deve usar:

-Xms512m

-Xmx1024m

Se você não usar o Openfire como serviço crie o arquivo openfired.vmoptions (o conteúdo é o mesmo, só muda o nome do arquivo).
Reinicie o Openfire
Primeira impressão após a configuração e reiniciar o serviço.
Após 2h no ar:
Share Button

CC BY-NC-SA 4.0 Travamento servidor OpenFire by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • Cara,tentei fazer isso porem não fez diferença alguma,não mudou nada..pode me ajudar?

    • Qual SO está usando?
      Qual versão do seu OpenFire?

    • Versão do OpenFire esta beleza.
      Aqui eu uso no Windows Server 2008 pretendo migrar para Linux mas por enquanto ira ficar assim.

      No começo fiz estas mudanças e resolveu, depois de um tempo dava problema ainda.
      Debuguei varias coisas vamos ver se acho que passei aqui com o seu problema.

      Qual os clientes que você usa:
      ( ) Spark
      ( ) Pidgin
      ( ) Pandion
      ( ) Exodus

      • Eu uso o pandion
        Desde já obrigado pela atenção!

        • Hummm.
          Bom aqui eu usava Pidgin, Spark e Trillian eu acho.
          Quantos terminais clientes estão conectando?
          Aqui eu tenho por volta de 150 conexões, o que fiz que até li como recomendação em caso de programa em plataforma Windows, linux não comentaram nada, é centralizar um client só.

          Então eu estou com mais de 90% da minha rede com apenas Spark e configurações que mudei no C:Program Files(x86)Openfirebinopenfired.vmoptions e C:Program Files(x86)Openfirebinopenfire-service.vmoptions sendo que você pode estartar por service do Windows ou pelo App, eu comecei usar o App do Spark ae ele usa o openfired.vmoptions e na tela do OpenFire da App eu fiquei monitorando os logs quando travava.

          • Eu estou usando tudo com Pandion,conectados tenho por volta de 72 terminais.
            O meu problema na verdade é que fiz isso que você falou ae e que tb li no forum openfire,porem não surtiu efeito nenhum.Queria saber também a diferença de usar como cliente e serviço windows,não entendi muito bem esta questão.
            Cara se puder me add ae no msn,eu agradeceria muito. [email protected]

          • Aqui na empresa não usamos MSN.
            Se quiser meu e-mail é [email protected]

            Então como serviço do Windows na teoria você apenas estarta o serviço e ta rodando.
            Como app você executa na mão o serviço e na tela do OpenFire do App que fica minimizado ele tem uma especie de Debug no corpo e quando trava varios log “em vermelho” surgem nesta janela.

            Fui debugando e testando configurações assim.

            Lembrando que ou você usa um ou outro os dois não.

  • Bruno Zanicheli de Souza

    valeu pelo post amigo. funcionou perfeitamente aqui!!!!

  • Também tenho esse problema, porém só aumentar a memoria não adianta, pois ele vai lá e enche de volta. Qdo bate os 100% cai a rede do openfire e todas as conexão nao acessam mais. Como o openfire esta no proxy, em linux debian, tenho de reiniciar o servidor pra que “limpe” a memoria java e volte a funcionar.

    existe maneira de “limpar” a memoria java sem que eu precise reiniciar o servidor?

    a versão do meu openfire é 3.7.1 e o linux é o debian squeeze…

  • Eduardo faria

    ola saberia me ajudar para configurar no Openfire ( Windows ) apra gravar conversas?
    Ja instalei o Monitoring Service mas não rolou não apareceu nada para verificar as conversas dos usuarios. Estou utlizando OpenFire 3.7.1
    Caso possa me ajudar agradeço .

    Abrs

    Eduardo

    • Enviei um e-mail pra você com as configurações que uso.

  • Naylor Braga

    Caros fiz o procedimento de um novo arquivo com os parâmetros -Xms512 e -Xmx1024m em arquivo txt em branco so que na tela ainda continua com os 247,50 MB alguém sabe me informar se tenho que colocar mais algum parâmetro para dar certo.

    • Naylor você esta usando como serviço do Windows ou aplicativo para iniciar o OpenFire?

      Arquivo para usar como serviço do Windows:
      openfire-service.vmoptions

      Arquivo para usar como aplicativo:
      openfired.vmoptions

      Isso pode causar isso que você esta passando

      • Naylor Braga

        Cleiton estou usando o aplicativo para iniciar o OpenFire coloquei o nome do arquivo como openfire-service.vmoptions, ja coloquei vários valores e não funciona, continua do mesmo jeito. Alguma outra coisa que eu possa fazer?

        • “estou usando o aplicativo para iniciar o OpenFire coloquei o nome do arquivo como openfire-service.vmoptions”
          Se é iniciado pelo aplicativo então o nome do arquivo deve ser openfired.vmoptions tenho um servidor em produção assim.

          Caso queira se aprofundar em cima disso tem um doc no proprio site da Ignite Realtime mas depois que normalizou aqui eu não me aprofundei mais:

          http://community.igniterealtime.org/docs/DOC-1033

          • Naylor Braga

            Bom dia
            Cleiton tudo bom..
            cara atualizei a versão do Openfire para 3.8.0 não deu nenhum erro mas quando entro no pandion aparece somente o meu usuário e nenhum outro logado, sera que tenho que fazer alguma configuração?
            valeu abs

  • Naylor Braga

    Cleiton eu colocando apenas openfired.vmoptions ele da erro nos usuários ao acessarem , usuário ou senha inválidos. Estou com o servidor em produção vou tentar novamente e te falo se deu certo.

    • Naylor Braga

      Vou tentar colocar openfired.vmoptions, e da uma lida neste doc.
      valeu pelas dicas te informo se deu tudo certo..
      valeu.
      Naylor Braga

      • Naylor Braga

        E meu caro sem sucesso , mesmo com o nome do arquivo openfired.vmoptions ele ainda continua com o mesmo valor de memoria, tentei outros valores como;
        -Xms528m
        -Xms1024m

        -Xms1024
        -Xms1024
        e nada, tem alguma outra dica que possa funcionar?
        abs
        Naylor

        • Humm, bom vamos novamente.
          Qual Windows você esta usando para o OpenFire?
          E qual arquitetura: [ ]32bits [ ]64bits

          • Naylor Braga

            Cleiton uso o Windows server 2008R2 Standard 64

          • Ok, o caminho para o arquivo é:
            C:Program Files (x86)Openfirebin

            É neste diretorio que deve ser criado o arquivo openfired.vmoptions ou openfire-service.vmoptions

            Confere?

          • Naylor Braga

            Bom dia
            Cleiton
            confere isto mesmo e neste diretório que esta criado.

          • Tente instalar a nova versão do Openfire 3.8.0 e é bem recente saiu hoje.

          • Naylor Braga

            Sera que ja instalo assim de primeira, sempre tem alguns erros quando sai a versão, vou atualizar para ver se dar certo então.
            Obrigado

  • Leo Ramos

    Como apagar conversas de determinado usuario no servidor openfire? O mesmo está instalado no Win2003 Server e usando o banco de dados interno do openfire. Quebra essa pra mim, ja fui em varios foruns e ninguem ta sabendo como fazer. Abs!

    • Uma vez precisei fazer isso também e fiz como no método 1, mas caso não de certo o método 2 irá funcionar mas terá que tomar cuidado.

      Metodo 1

      java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

      ou

      java org.hsqldb.util.DatabaseManagerSwing

      Metodo 2 – Cuidado com este passo
      Configure o arquivo de acesso ao Banco, deve ser criado o arquivo embedded-db.rc e configurado com o seguinte conteúdo:

      # Openfire database.
      urlid embedded-db
      url jdbc:hsqldb:/var/lib/openfire/embedded-db/openfire
      username sa
      password

      Agora por linha de comando chame o gerenciador Gráfico.
      java -cp $CLASSPATH org.hsqldb.util.DatabaseManagerSwing –rcfile embedded-db.rc –urlid embedded-db

      Após acessar o GUI de gerenciamento do HSQLDB procura a seguinte tabela:
      Tabela OfMessageArchive – Guarda as mensagens das conversas.

      CONVERSATIONID – Identificador único de cada conversar
      FROMJID – Identificado do usuário que enviou a mensagem
      TOJID – Identificado do usuário que recebeu a mensagem
      SENTDATE – Data de envio no formato
      BODY – Corpo da Mensagem

      Caso tenha problemas procure estudar o funcionando do BD que o Openfire utiliza que no caso é o HSQLDB e explore as alternativas, não é muito difícil.

  • Taibi Nero

    Olá galera, estou com uma tarefa aqui, de passar todos os usuários do openfire do Linux para o Windows server 2008 R2 64 bits aqui utilizamos o “spark”. Preciso utilizar como banco de dados o MySQL porque somos mais de 200 usuários ativos incluindo funcionários e externos (fornecedores e etc). Não sei por onde começar galera, alguém pode me ajudar? Abraços, instalei aqui o MySQL Workbench.

    • Bom não sei o hardware que voce tem com o seu Windows Server mas pensaria bem antes de migrar de Windows para Linux o Openfire.

      Quando migrei mas foi para PostGre usei o proprio site do OpenFire como base:

      http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database.html

      Lá você irá encontrar tudo que precisa para migrar.

      • Taibi Nero

        Olá Cleiton, então, eu estou migrando do Linux para o Windows Server, acho que vc entendeu o contrário. Você acha que pode dar alguma incompatibilidade na hora que eu der um “append” para trazer as tabelas já criadas para o MySQL? Obrigado pelo help! ;)

      • Taibi Nero

        Uma pergunta mais urgente do que esta última que fiz ontem Cleiton: O que eu devo fazer primeiro? Criar o BD no MySQL e importar as tabelas, para depois na instalação do openfire indicar o caminho, ou devo fazer o contrário, primeiro intalar o openfire? Grato pela ajuda!

  • elizandro simioni

    Ola,eu tenho um servidor openfire e efunciona belezinha.mas o meu problema que estou enfrentando e o seguinte.Quando fica muito tempo sem mexer no servidor como por exemplo uma hora o openfire desloga ai tenho que logar no servidor para que tudo volte a funcionar .Como eu resolvo este problema , deixandoo openfire funcionando diretamente sem deslogar sozinho.Grato e estou gostando muito do site.

    • Qual versao do seu Openfire?
      Qual SO esta rodando o Openfire?

      Quem bom que gosto do blog.

  • alexandre

    Estou presisando aumentar a memória do java para 2048m mas quando coloco mais que 1500 o openfire não inicia,, da erro.
    Alguem consegue me ajudar

    • Você pode reportar o erro aqui no post para verificarmos? Quanto você tem de Memoria RAM no servidor?

      • alexandre

        No servidor tenho 6Gb
        este é o erro que aparece

        ETrror occurred during initialization of VMCh
        ould not reserve enough space for object heap
        e JVM could not be started. The main method may have thrown an exception.

        • Você esta usando Linux ou Windows como servidor?

          Recomendaria fora do horário você parar o Openfire e verificar quanto esta sobrando de memoria RAM, porque o que parece é que ele não esta conseguindo alocar memoria.

          • alexandre

            é um servidor windows server 2008 64bits e ele usa em torno de 2Gb a 3Gb o resto fica livre

      • Openfire foi instalado como 64bits ou esta como 32bits?

  • alexandre

    como que instalo o openfire como 64bits?

  • Jean Cesar Sales

    Boa tarde amigos uso o Open fire no XP e já aumentei a memoria do Java e ficou assim:

    -Xms512m

    -Xmx1536m
    Funcionava normalmente mas agora au logar dá login ou senha inválidos e fala que tem pouca memória. Tentei aumenta para -Xmx2048 mas não aceita. Alçguem tem dicas? Não quero sair do XP pois uso somente para o Openfire.

  • Jean Cesar Sales

    Boa tarde amigos uso o Open fire no XP e já aumentei a memoria do Java e ficou assim:

    -Xms512m

    -Xmx1536m

    Funcionava
    normalmente mas agora ao logar dá login ou senha inválidos e fala que
    tem pouca memória. Tentei aumenta para -Xmx2048 mas não aceita. Alçguem
    tem dicas? Não quero sair do XP pois uso somente para o Openfire.

    • Olá Jean, sim este problema parece ser com falta de memoria HEAP da aplicação. Tive um problema assim com um Openfire em um Linux, e a única solução foi a instalação da nova versão, não por causa do Openfire em si, mas sim, por causa da versão do Java que estava usando.

      Você pode ver os parâmetros para manipular com outras opções aqui:
      http://www.oracle.com/technetwork/java/performance-138178.html

      Tem muito documento para analisar aplicação, setar parâmetros para GC e testar combinações.

      Mas uma coisa que peca muito é ser Windows XP heim!

      Abraço.

      • Jean Cesar Sales

        Olá Cleiton desde já fico grsato por sua atenção. O problema é que o banco do Openfire a medida que vai crescendo ocorre isso. teria como eu apagar as conversas antigas e os arquivos enviados via Spark pro Openfire?

        • Sim, é verdade o banco cresce bastante e é uma exponencial conforme aumenta o numero de usuários e o trafego.
          Olha pra falar a verdade nunca mexi com o banco de dados dele diretamente que é o HSQLDB, já usei em outras aplicações mas nunca precisei manipular ele, o que já participei foi migrar do HSQLDB para PostgreSQL, e ae o banco de dados ficou em outro computador mais parrudo.

          Tem um tutorial em português sobre migrar para MySQL.
          https://community.igniterealtime.org/docs/DOC-2621

          • Jean Cesar Sales

            Cleiton não existe um maneira de aumentar essa memoria através do -Xms e -Xmx?
            Mais uma vez muito obrigado mesmo!

          • Jean Cesar Sales

            Estou com o Java 08_60

          • Jean Cesar Sales

            Bom dia Cleiton, instalei a versão do Openfire 3.10.2, cadastrei novamente todos os usuários e o plugin de monitoramento mas ele não grava as conversas, pode me ajudar?

          • Jean Cesar Sales

            Bom dia Cleito levei o banco do Openfire para outro servidor e quando entro no openfire dá login ou senhas invalidos.

          • A maneira é fazer como fiz no artigo, porém, em certo momento o serviço não sobe mais, tem varias relações entre as versoes, versão do java built-in dele e memoria física.