# Guia de Desempenho Seu aplicativo de help desk pode ter a capacidade de armazenar uma grande quantidade de dados, mas isso também pode prejudicar o desempenho da sua ferramenta de help desk. Este guia fornece determinadas consultas para melhorar o desempenho do ManageEngine ServiceDesk Plus. Para executar a consulta, você precisa acessar o banco de dados MySQL. Clique no link do respectivo SO ([Windows](https://www.manageengine.com/products/service-desk/faq-general-modules.html#database2) ou [Linux](https://www.manageengine.com/products/service-desk/faq-general-modules.html#linux6)) para saber como acessar o banco de dados MySQL. **OBSERVAÇÃO:** Reinicie o ServiceDesk Plus após executar a consulta para que as alterações sejam aplicadas. --- A lista de dicas de desempenho discutidas neste guia é: - [Ajuste de Java](#java) - [Habilitando o modo Snapshot do MSSQL](#enable) - [Varredura distribuída de ativos](#distribute) - [Desativar contagem de solicitações](#reqcount) - [Desativar temporizador de atualização de solicitações](#reftimer) - [Desativar filtro Todas as solicitações](#allreq) - [Diminuir o número de solicitações na visualização em lista](#listview) - [Desativar pesquisa de descrição curta](#desc) - [Limpeza do limite de itens recentes](#recitem) - [Limpeza do limite do log de erros](#errorlog) - [Limpeza da sessão ACC](#acc) - [Excluir notificações geradas pelo sistema](#noti) - [Aumentar a contagem do cache de usuários](#cache) - [Aumentar a contagem do cache de técnicos](#techcache) - [Aumentar a contagem do cache de IDs de mensagens](#message) - [Aumentar a contagem do cache de IDs de e-mail / IDs de usuário](#email) - [Violação do limite de tamanho do arquivo de log (MSSQL): melhores práticas](#logfilesize) - [Registrar estatísticas de uso de CPU e memória](#record-cpu-and-memory-usage-statistics) --- ## Ajuste de Java É necessário ter um servidor de 64 bits. A configuração padrão definida em `wrapper.conf` é suficiente. No entanto, em um ambiente maior, defina o tamanho máximo do heap da seguinte forma: ```properties # Tamanho máximo do heap Java (em MB) wrapper.java.maxmemory=4096 ``` ## Habilitando o modo Snapshot do MS SQL Podemos habilitar o Read Committed Snapshot no ambiente MSSQL para aumentar o desempenho da aplicação. Ele cria um snapshot ou banco de dados somente leitura dos seus resultados atuais, separado do banco de dados ativo. Assim, quando você executa uma instrução `SELECT` para ler seus dados, você está lendo a partir de uma cópia somente leitura do seu banco de dados. Quando você altera seu banco de dados, isso acontece no banco ativo, e então uma nova cópia ou snapshot é criada para leitura. ### Como habilitar o isolamento de snapshot de leitura confirmada (RCSI) Todos os bancos de dados MSSQL geralmente têm problemas de bloqueio, o que pode afetar o desempenho ideal de uma aplicação. Para evitar esses problemas de desempenho no ServiceDesk Plus, habilite o read committed snapshot isolation (RCSI) seguindo estas etapas: > Isso pode levar algum tempo para ser concluído e também exige indisponibilidade, portanto programe-o para um fim de semana. 1. Pare a aplicação ServiceDesk Plus. 2. Faça login no SQL Management Studio. 3. Coloque o banco de dados do ServiceDesk Plus offline executando: ```sql USE master; GO ALTER DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE GO ``` 4. Habilite o read committed snapshot executando: ```sql ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE GO ``` 5. Coloque o banco de dados online usando: ```sql USE master; GO ALTER DATABASE SET ONLINE GO ``` 6. Verifique se você habilitou o RCSI com sucesso executando a seguinte consulta: ```sql SELECT is_read_committed_snapshot_on FROM sys.databases WHERE [name] = '' ``` > Se a saída dessa consulta for 1, você habilitou o RCSI com sucesso. Agora você pode iniciar a aplicação. Para mais informações sobre bancos de dados MSSQL e RSCI, acesse [aqui](https://technet.microsoft.com/en-us/library/ms189122(v=sql.105).aspx). ### Benefícios de habilitar o modo Snapshot do MS SQL - Consultas simultâneas de usuários ao banco de dados serão possíveis sem qualquer atraso ou interrupção (embora a carga na aplicação possa exceder os limites usuais). - Os registros consultados pelos usuários serão mantidos em um `tempdb` separado, que não será afetado por outras consultas de usuários ocorrendo em paralelo ou posteriormente. - As tabelas do banco de dados serão atualizadas somente após a conclusão de uma transação. ## Varredura distribuída de ativos Se você tiver muitos nós, digamos, mais de 1000, então escanear esses nós em intervalos regulares prejudicará o desempenho do ServiceDesk Plus. Para reduzir a carga no servidor, você pode escanear esses nós usando a [Varredura distribuída de ativos](https://www.manageengine.com/configurations/discovery/distributed-asset-scan.html). Tudo o que você precisa fazer é instalar servidores remotos do ServiceDesk Plus entre os departamentos. Esses servidores remotos escaneiam os nós em intervalos regulares e exportam os dados para o servidor central do ServiceDesk Plus. ## Desativar contagem de solicitações A contagem de solicitações exibe o número total de solicitações na página de visualização em lista de solicitações. Quanto maior o valor da contagem de solicitações, mais tempo leva para exibir as solicitações na página de visualização em lista. O valor da contagem de solicitações não pode ser removido. Em vez disso, você pode optar por visualizar a contagem de solicitações clicando em um botão **Contagem de linhas** na página de visualização em lista de solicitações. Para exibir o botão Contagem de linhas, use a consulta: ```sql update GlobalConfig set PARAMVALUE='FALSE' where CATEGORY='PERFORMANCE' and PARAMETER='SHOW_REQUEST_COUNT'; ``` ## Desativar temporizador de atualização de solicitações O temporizador de atualização atualiza a página de visualização em lista de solicitações em intervalos regulares. Mas isso pode reduzir o desempenho do ServiceDesk Plus. Você pode desativar a opção Temporizador de atualização usando a consulta: ```sql update GlobalConfig set PARAMVALUE='FALSE' where CATEGORY='PERFORMANCE' and PARAMETER='SHOW_WO_REFRESH_TIME'; ``` ## Desativar filtro Todas as solicitações O filtro 'Todas as solicitações' na visualização em lista de solicitações exibe todas as solicitações criadas até o momento, independentemente do status. Mas, à medida que o número de solicitações aumenta, o desempenho do ServiceDesk Plus diminui gradualmente. Nesse caso, você pode remover a opção 'Todas as solicitações' da lista suspensa do filtro usando a consulta: ```sql update GlobalConfig set PARAMVALUE='FALSE' where CATEGORY='PERFORMANCE' and PARAMETER='SHOW_ALL_REQUEST_VIEW'; ``` ## Diminuir o número de solicitações na visualização em lista Na página Visualização em lista de solicitações, você encontrará um menu suspenso para selecionar o número de solicitações a serem visualizadas por página. Limitar esse número a 25 ou 50 eliminará o carregamento excessivo de solicitações e melhorará o desempenho do ServiceDesk Plus. ## Desativar pesquisa de descrição curta Descrição curta refere-se à descrição que aparece quando você passa o cursor sobre o link do assunto da solicitação na visualização em lista de solicitações. Por padrão, ao executar uma operação de pesquisa, a descrição curta de uma solicitação será pesquisada. Mas quando você tem uma grande quantidade de dados, o desempenho do ServiceDesk Plus eventualmente diminui. Você pode desativar esse recurso usando a consulta: ```sql update GlobalConfig set PARAMVALUE='false' where CATEGORY='SearchShortDescription' and PARAMETER='Status'; ``` ## Limpeza do limite de itens recentes Por padrão, a lista de itens recentes é excluída uma vez a cada 15 dias. Mas você pode melhorar o desempenho do ServiceDesk Plus aumentando a frequência da limpeza. **Exemplo:** Se você quiser limpar a lista de itens recentes a cada 5 dias, use a consulta: ```sql update GlobalConfig set PARAMVALUE=5 where CATEGORY='CLEANUP_TASK' and PARAMETER='CLEANUP_RI_LIMIT'; ``` O limite máximo para limpar a lista de itens recentes é 90. Se você quiser desativar a limpeza, defina o valor do parâmetro como -1. ## Limpeza do limite do log de erros Por padrão, a lista de logs de erro é excluída uma vez a cada 180 dias. Mas você pode aumentar a frequência da limpeza para acelerar o processo de backup. **Exemplo:** Se você quiser limpar a lista de logs de erro a cada 30 dias, use a consulta: ```sql update GlobalConfig set PARAMVALUE=30 where CATEGORY='CLEANUP_TASK' and PARAMETER='CLEANUP_ERROR_LOG_LIMIT'; ``` O limite máximo para limpar a lista de logs de erro é 365. Se você quiser desativar a limpeza, defina o valor do parâetro como -1. ## Limpeza da sessão ACC Esta é uma tabela que contém os detalhes da sessão, ou seja, as informações de login e logout. Essas entradas não são usadas pela aplicação e podem ser removidas periodicamente para um melhor desempenho do banco de dados. Por padrão, os detalhes da sessão são excluídos uma vez a cada 90 dias, mas para melhor desempenho, você pode aumentar a frequência da limpeza. **Exemplo:** Se você quiser limpar a sessão ACC a cada 30 dias, use a consulta: ```sql update GlobalConfig set PARAMVALUE=30 where CATEGORY='CLEANUP_TASK' and PARAMETER='CLEANUP_ACC_SESSION_LIMIT'; ``` O limite máximo para limpar os detalhes da sessão ACC é 365. Se você quiser desativar a limpeza, defina o parâmetro como -1. ## Excluir notificações geradas pelo sistema Notificações geradas pelo sistema são notificações geradas e enviadas pelo sistema. Você pode excluir todas as notificações do sistema ou verificar manualmente as notificações para excluir. Se você quiser excluir todas as notificações do sistema, execute a consulta: ```sql delete from notification where senderid=1; ``` Para obter a lista de títulos de notificações e excluir notificações indesejadas, execute a consulta: ```sql select notificationtitle from notification limit 100; ``` **Exemplo:** Se o `notificationtitle` for `has been added to the group`, use a consulta para excluir notificações sob esse título: ```sql delete from notification where notificationtitle like '%has been added to the group%'; ``` ## Aumentar a contagem do cache de usuários Por padrão, o número de objetos de dados do usuário que serão armazenados em cache é **500**. Mas, no caso de máquinas de alto desempenho com melhores configurações de RAM, esse valor pode ser aumentado para armazenar mais dados em cache para uma resposta rápida. **Exemplo:** Se você quiser aumentar a contagem do cache para 1000, use a consulta abaixo. Para build 11000 ou mais recente: ```sql update GlobalConfig set PARAMVALUE='1000' where PARAMETER='USER_DO_COUNT'; ``` Para builds mais antigos: ```sql update GlobalConfig set PARAMVALUE='1000' where PARAMETER='USER_CACHECOUNT'; ``` ## Aumentar a contagem do cache de técnicos Por padrão, o número de objetos de dados de técnicos que serão armazenados em cache é **300**. Mas, no caso de máquinas de alto desempenho com melhores configurações de RAM, esse valor pode ser aumentado para armazenar mais dados em cache para uma resposta rápida. **Exemplo:** Se você quiser aumentar o cache para 1000, use a consulta abaixo. Para build 11000 ou mais recente: ```sql update GlobalConfig set PARAMVALUE='1000' where PARAMETER='USER_DO_COUNT'; ``` Para builds mais antigos: ```sql update GlobalConfig set PARAMVALUE='1000' where PARAMETER='TECHNICIAN_CACHECOUNT'; ``` ## Aumentar a contagem do cache de IDs de mensagens Por padrão, o número de IDs de mensagens que serão armazenados em cache é **1000**. Mas, no caso de máquinas de alto desempenho com melhores configurações de RAM, esse valor pode ser aumentado para armazenar mais dados em cache para uma resposta rápida. **Exemplo:** Se você quiser aumentar a contagem do cache para 2000, use a consulta: ```sql update GlobalConfig set PARAMVALUE='2000' where PARAMETER='MESSAGEID_CACHECOUNT'; ``` ## Aumentar a contagem do cache de IDs de e-mail / IDs de usuário Por padrão, o número de IDs de e-mail / IDs de usuário que serão armazenados em cache é **1000**. Mas, no caso de máquinas de alto desempenho com melhores configurações de RAM, esse valor pode ser aumentado para armazenar mais dados em cache para uma resposta rápida. **Exemplo:** Se você quiser aumentar a contagem do cache para 2000, use a consulta: ```sql update GlobalConfig set PARAMVALUE='2000' where PARAMETER='EMAIL_USERID_CACHECOUNT'; ``` ## Violação do limite de tamanho do arquivo de log (MSSQL): melhores práticas O modelo de recuperação de um banco de dados define como as transações são registradas e retidas. Há 3 modelos de recuperação em uso: **Simple**, **Full** e **Bulk Logged**. Aqui, discutiremos apenas os modelos **Simple** e **Full**. No SQL Server, os arquivos de log de transações, quando não são submetidos a backup regularmente, podem crescer e causar uma falha no banco de dados porque o modelo de recuperação, por padrão, é Full. Para evitar esse cenário, os administradores de banco de dados podem realizar: a) Modelo de recuperação Full com backups regulares do log de transações ou b) Definir o modelo de recuperação do banco de dados como Simple. ### Modelo de recuperação Full com backup do log de transações No modelo de recuperação Simple, a recuperação pontual não é possível, enquanto no modelo de recuperação Full ela é possível. Portanto, em um ambiente de produção, configure seu banco de dados com o modelo de recuperação Full, para que uma opção de recuperação pontual esteja facilmente disponível. Siga estas etapas para criar um arquivo de backup de log: - No SQL SERVER Management Studio, execute a seguinte consulta: ```sql BACKUP LOG [] TO DISK = N'\sdp-backup.trn' WITH NOFORMAT, NOINIT, NAME = N'-Full Log Backup' ``` **Saída:** ![Saída do backup de log](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_331.png) - No SQL SERVER Management Studio, clique com o botão direito no banco de dados que você deseja fazer backup e clique em **Tasks >> Back Up**. ![Back Up Database](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_332.png) - Na caixa de diálogo Back Up Database, selecione o **tipo de backup como Transaction Log**, em **Name**, digite o nome do conjunto de backup, e então clique em **Add**. - Em **Destination**, selecione **Disk**, escolha o caminho clicando em **Add**, e clique em **Ok**. ![Destino do backup](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_333.png) - Na lista Script, clique em **Script Action to Job**. ![Script Action to Job](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_334.png) - Forneça um nome. ![Nome do Job](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_335.png) - No painel esquerdo, clique em **Schedules**, e depois clique em **New**. ![Novo Schedule](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_336.png) - Na caixa de diálogo Job Schedule Properties, digite o nome do trabalho na caixa Name e forneça os seguintes valores: - Em Frequency, selecione Occurs daily e Recurs 1 day. - Em Daily frequency, selecione Occurs every 10 minutes e Starting at 12:00AM e Ending at 11:59PM. - Em Duration, selecione a data de início como a data atual e escolha sem data de término. ![Configuração do agendamento](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_337.png) ### Modelo de recuperação Simple - No SQL SERVER Management Studio, execute a seguinte consulta: ```sql USE [master] GO ALTER DATABASE SET RECOVERY SIMPLE WITH NO_WAIT GO ``` **Saída** ![Saída Recovery Simple](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_338.png) - No SQL SERVER Management Studio, clique com o botão direito em **Database >> Properties**. ![Database Properties](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_339.png) - Escolha **Options** em select page e altere o modelo de recuperação. ![Alterar modelo de recuperação](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_02_26_11_57_3310.png) > No modelo de recuperação Simple, a recuperação pontual não é possível. Isso ocorre porque o log de transações do SQL Server é truncado automaticamente (limpo) após cada transação concluída. Isso significa que os registros do log são removidos assim que a transação é confirmada e as alterações são gravadas no banco de dados. Consequentemente, backups do log de transações não são suportados nesse modelo. ### Redução do arquivo de log No SQL Server Management Studio: - Clique com o botão direito no seu banco de dados e vá para **Tasks -> Shrink -> Files**. ![Shrink Files](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_04_24_11_51_481.png) - Na caixa de diálogo Shrink File: - Em Database files and filegroups, escolha **File type** como **Log**. - Em Shrink action, escolha **Release unused space**. ![Shrink File Log](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_04_24_11_51_482.png) - Clique em **OK** para iniciar a redução do arquivo de log. > **Observação:** Observe que isso terá sucesso somente quando o backup do log de transações (mencionado na Etapa 1) for bem-sucedido. Isso também pode ser agendado como um trabalho. ## Registrar estatísticas de uso de CPU e memória Cada vez que o servidor da aplicação apresentar problemas de desempenho, as estatísticas de uso de CPU e memória serão monitoradas de perto e documentadas. Isso se aplica apenas ao Windows. Habilite o script de monitoramento para registrar as estatísticas de uso de CPU e memória. Execute os seguintes comandos no PowerShell. 1. Vá para `ServiceDesk Home/tools/monitoring/CPU_Memory_Monitoring.ps1` e desbloqueie o script do PowerShell localizado no diretório da aplicação. ```powershell Unblock-File -Path "C:\ServiceDesk Home\tools\monitoring\CPU_Memory_Monitoring.ps1" ``` 2. Defina a política de execução para executar o script personalizado. Você pode usar uma das seguintes políticas de execução: Bypass, Unrestricted ou RemoteSigned. ```powershell Set-ExecutionPolicy RemoteSigned ```