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
Adicionado por Nei Jobson da Costa Carneiro
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?
Adicionado por Carlos Vieira
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'.
Adicionado por Guilherme Andrade Del Cantoni
Adicionado por Guilherme Andrade Del Cantoni
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.
Adicionado por Guilherme Alonso
Enviarei o resto das informações solicitadas assim que estiver com elas disponíveis. Obrigado a todos pelo suporte.