O conteúdo desse portal pode ser acessível em Libras usando o VLibras
Ir para o conteúdo

 Voltar a Fórum Técnico
Tela cheia

Lentidão e instabilidades no SEI

31 de Julho de 2015, 16:14 , por Michele Cristina - | 1 Pessoa seguindo este artigo.
Visualizado 1836 vezes

Adicionado por Guilherme Alonso 14/04/2015 10:15 h

Prezados, bom dia.

Aqui na Prodam, destinamos nosso ambiente de homologação para treinar servidores da Prefeitura de São Paulo para utilização do SEI. Este treinamento é realizado em salas que possuem, em média, de 15 a 20 alunos por aula, e todas as ações previstas no roteiro do treinamento (criação de processos e documentos no sistema, por exemplo) são executadas pelos alunos no mesmo instante aproximado.

Há um certo tempo, começamos a notar lentidão em algumas funcionalidades do SEI neste ambiente - principalmente na criação de documentos e atribuição de processos - durante as sessões de treinamento. Em alguns casos ocorrem também travamentos e erros similares ao da imagem em anexo, após um longo período sem resposta do servidor. Antes do lançamento da versão 2.6.0, a ocorrência da lentidão já podia ser notada apenas com um único usuário realizando as ações acima; a atualização do sistema para essa versão provocou uma notável melhora na performance, porém ainda há lentidão e erros em casos onde pelo menos 15 usuários criam ou visualizam documentos no sistema simultaneamente, por exemplo.

Recentemente, também começamos a receber queixas de lentidão no ambiente de produção, cujo uso está aumentando gradativamente.
Quanto a isso, considero importante mencionar que a PMSP possui um total de 80 órgãos e mais de 3700 unidades cadastradas no SEI (apenas dois destes órgãos estão utilizando o sistema atualmente) - com uma quantidade considerável de usuários cadastrados em cada unidade - e existe a meta de que que todas essas unidades utilizem apenas o SEI para geração e trâmite de processos em um futuro próximo, com uma expectativa de milhares de usuários utilizando o sistema simultaneamente, o que se torna inviável levando em conta as condições atuais de desempenho relatadas.

Já tentamos otimizar configurações e procurar possíveis problemas nos servidores de aplicação, banco de dados e Solr, porém não obtivemos nenhuma melhora significativa.

Em decorrência desses acontecimentos, realizamos uma avaliação de desempenho ativando o "debug" no log do sistema e inserindo pontos de verificação temporários no código para algumas funcionalidades, com a finalidade de verificar o motivo exato da lentidão. O arquivo de texto em anexo mostra o log obtido para uma criação de documento interno que levou 47 segundos para ser concluída em nosso ambiente de homologação. Através deste log é possível observar que a quase totalidade das queries realizadas no processo são executadas em tempos de 1 a 3 milissegundos (a query de maior duração demorou 0.5 segundos), não contribuindo de forma significativa para a duração total da ação, o que nos levou a concluir que a lentidão ocorre em grande parte no âmbito da aplicação. Também é importante salientar que todos os nossos ambientes foram configurados seguindo à risca o manual de instalação que nos foi disponibilizado.
Esta avaliação foi feita ainda sobre a versão 2.5.2, porém, conforme já observado no caso do treinamento, a melhoria que notamos com a versão 2.6.0 ainda não está sendo suficiente para suprir a necessidade da Prefeitura.

Dadas essas informações, gostaria de saber se o código-fonte do SEI está planejado de forma a suportar cenários como o da PMSP descrito acima, e em caso positivo, o que podemos corrigir ou otimizar na arquitetura/configuração de nossos ambientes para resolver/mitigar estes problemas e permitir que o sistema se comporte da forma desejada para esta situação.

Muito obrigado a todos.

 

https://portal.softwarepublico.gov.br/social/sei/foruns/base-treinamento-09-04.png

https://portal.softwarepublico.gov.br/social/sei/foruns/log-criacao-documento.txt

 


55 comentários

  • 9dd6bb47d9e934b64f8a2a2630984b02?only path=false&size=50&d=mmMichele Cristina
    31 de Julho de 2015, 16:16

    Adicionado por Nei Jobson da Costa Carneiro

    Caro Guilherme,

    Para que o pessoal tenha uma ideia geral sobre seus ambientes de HM e PD, seria interessante especificar melhor as máquinas de cada ambiente.

    Quantos nós e qual a especificação de cada um (quantos cores de processador e RAM) do SEI foi instalado para o HM e para o PD?
    Qual banco estão utilizando, MySQL ou SQL Server?
    O banco está em Cluster e qual é a especificação das duas máquinas (quantos cores, RAM e HD)?
    Qual é o balanceador de carga utilizado, de mercado ou algum free?

  • 9dd6bb47d9e934b64f8a2a2630984b02?only path=false&size=50&d=mmMichele Cristina
    31 de Julho de 2015, 16:17

    Adicionado por Carlos Vieira

    Prezado Guilherme,

    Analisando o log superficialmente vi algumas coisas estranhas:

    O procedimento começa em:
    00008 - documento_cadastro.php (43): 15:39:18

    É feita um WHERE com id único que é bem mais lento que utilizando um igual e um índice.

    00060 - [InfraMySql->consultarSql] SELECT id_documento AS iddocumento FROM documento WHERE id_procedimento IN (1570)
    00061 - [InfraMySql->consultarSql] 0.007 s

    É feito vários inserts com valores 'null' em um único campo. Não sei se foi problema desses inserts ou isso é esperado/desejado.

    00082 - [InfraMySql->executar] INSERT INTO seq_acesso (campo) VALUES (null)
    00083 - [InfraMySql->executar] 1 registro(s) afetado(s)
    00084 - [InfraMySql->executar] 0.002 s

    00179 - [InfraMySql->executar] INSERT INTO seq_atributo_andamento (campo) VALUES (null)
    00180 - [InfraMySql->executar] 1 registro(s) afetado(s)
    00181 - [InfraMySql->executar] 0.001 s

    00218 - [InfraMySql->executar] INSERT INTO seq_secao_documento (campo) VALUES (null)
    00219 - [InfraMySql->executar] 1 registro(s) afetado(s)
    00220 - [InfraMySql->executar] 0.001 s

    00232 - [InfraMySql->executar] INSERT INTO seq_versao_secao_documento (campo) VALUES (null)
    00233 - [InfraMySql->executar] 1 registro(s) afetado(s)
    00234 - [InfraMySql->executar] 0.001 s

    Agora começa outra análise. Até aqui não foi utilizando nem um segundo para o processo e na linha 00256 é apresentado que passou 42 segundos. Então teriamos que concentrar esforços nessa parte do código. Não encontrei nada que fosse explicito aqui sobre o gasto do tempo.
    00186 - DocumentoRN.php (296): 15:39:18

    00256 - [InfraMySql->executar] ... 15:40:00
    Daqui até o final só se gasta mais 5 segundos que é ~10% do tempo total.

    00506 - documento_cadastro.php (244): 15:40:05

    Outras coisas estranhas é um SELECT gastar 0.012 segundos quando outros inserts com inner join estão bem mais rápidos. Verifica se tem índice nesse campo 'id_usuario'
    00196 - [InfraMySql->consultarSql] SELECT nome FROM usuario WHERE id_usuario=100001580
    00197 - [InfraMySql->consultarSql] 0.012 s

    Alguns índices não foram encontrados. Eles e os outros foram criados?
    00009 - [Infra->infraGerarExcecao] 20: Notice: /var/www/sistemas/SJ0937/sei/documento_cadastro.php linha:115.
    Undefined index: selTipoConferencia

    00010 - [Infra->infraGerarExcecao] 20: Notice: /var/www/sistemas/SJ0937/sei/documento_cadastro.php linha:155.
    Undefined index: selHipoteseLegal

    00011 - documento_cadastro.php (224): 15:39:18
    00012 - [Infra->infraGerarExcecao] 20: Notice: /var/www/sistemas/SJ0937/sei/documento_cadastro.php linha:233.
    Undefined index: selTextoPadrao

    É começado uma Procedure aqui mas não encontrei onde ela terminou. Não sei se não foi armazenada no LOG.
    00016 - [InfraMySql->executar] BEGIN
    00017 - [InfraMySql->executar] 0 registro(s) afetado(s)
    00018 - [InfraMySql->executar] 0.001 s

    Não encontrei a query com 0.5 segundos de duração no LOG. A maior que encontrei foi a '00025 - [InfraMySql->executar] 0.019 s'.

  • 9dd6bb47d9e934b64f8a2a2630984b02?only path=false&size=50&d=mmMichele Cristina
    31 de Julho de 2015, 16:17

    Adicionado por Guilherme Andrade Del Cantoni

    Prezados,

    Teremos que fazer uma investigação mais detalhada para identificar quais os motivos que estão gerando tal lentidão.

    Guilherme Alonso, como sugerido pelo Nei Jobson, seria interessante que você nos passá-se maiores detalhes da infraestrutura utilizada por vocês na montagem do ambiente de treinamento. Peço que envio esses dados diretamente para nossos e-mails por questão de privacidade (e-mails de Guilherme Andrade, Carlos Vieira e Nei Jobson, integrantes dessa discussão).

    Como indicado pelo Carlos Vieira, o passo 00256 gerou em tempo de processamento acima do esperado. Também acho importante você me informar qual banco de dados vocês estão utilizando e, em caso de utilização do MySQL, como os parâmetros do banco de dados estão configurados (Arquivo de configuração my.cnf). Outro insumo importante que você também poderia me passar é enviar o log de erro e acesso (error_log e access_log) dos servidores de aplicação.

    Possivelmente, pode ter alguma parametrização que está em conflitando com o seu ambiente. Em nosso ambiente de produção, estamos com uma taxa de desempenho muito boa e ainda utilizando a versão 2.5.2 do sistema.

  • 9dd6bb47d9e934b64f8a2a2630984b02?only path=false&size=50&d=mmMichele Cristina
    31 de Julho de 2015, 16:17

    Adicionado por Guilherme Andrade Del Cantoni

    Prezado Guilherme Alonso,

    Você obteve os dados de infra para nossa ajuda?
    Somente para te tranquilizar, não existe relatos de lentidão nos demais órgãos que estão utilizando o sistema. Isso com uma carga extremamente elevada de usuários, documentos e processos. A questão que você levantou deve ser algum problema de parametrização, problema de acesso ao Solr ou configurações de rede componente do sistema.

  • 9dd6bb47d9e934b64f8a2a2630984b02?only path=false&size=50&d=mmMichele Cristina
    31 de Julho de 2015, 16:18

    Adicionado por Guilherme Alonso

    Prezado Guilherme Cantoni,

    Enviei algumas informações sobre os dados de infra utilizados via e-mail a você, ao Nei Jobson e ao Carlos Vieira.
    Enviarei o resto das informações solicitadas assim que estiver com elas disponíveis.

    Obrigado a todos pelo suporte.


Conteúdo acessível em Libras usando o VLibras Widget com opções dos Avatares Ícaro, Hosana ou Guga. Conteúdo acessível em Libras usando o VLibras Widget com opções dos Avatares Ícaro, Hosana ou Guga.