Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os suplementos de qualidade devem atender aos requisitos específicos de uso do núcleo da CPU, uso de memória, confiabilidade e, para suplementos do Outlook, tempo de resposta de avaliação de expressão regular. Esses limites ajudam a garantir o desempenho para seus usuários e a mitigar ataques de negação de serviço. Teste o Suplemento do Office em seu aplicativo do Office de destino usando um intervalo de dados possíveis e meça seu desempenho em relação aos limites de uso do tempo de execução a seguir.
Limites de uso de recursos para suplementos
Observação
Os limites de recursos nesta seção se aplicam somente ao Excel, Outlook no Mac (clássico), PowerPoint e Word.
Os limites de recursos de runtime a seguir se aplicam a suplementos em execução em clientes Office no Windows e Mac, mas não em aplicativos móveis ou em um navegador.
Uso do núcleo da CPU - Um único limite de uso do núcleo da CPU de 90%, observado três vezes em intervalos de cinco segundos por padrão.
Se o cliente do Office detectar que o uso do núcleo da CPU de um suplemento está acima do valor limite, ele exibirá uma mensagem perguntando se o usuário deseja continuar executando o suplemento. Se o usuário optar por continuar, o cliente do Office não perguntará novamente durante a sessão de edição. O intervalo padrão para um cliente do Office marcar o uso do núcleo da CPU é a cada cinco segundos. Os administradores podem usar a chave do Registro AlertInterval para aumentar o limite a fim de reduzir a exibição dessa mensagem de aviso se os usuários executarem suplementos com uso intensivo de CPU.
Uso de memória: um limite de uso de memória padrão que é determinado dinamicamente com base na memória física disponível do dispositivo.
Por padrão, quando um cliente do Office detecta que o uso de memória física em um dispositivo excede 80% da memória disponível, o cliente começa a monitorar o uso de memória do suplemento. Isso é feito no nível do documento para suplementos de conteúdo e painel de tarefas e no nível da caixa de correio para suplementos do Outlook. Em um intervalo padrão de cinco segundos, o cliente avisa o usuário se o uso de memória física para um conjunto de suplementos no nível do documento ou da caixa de correio exceder 50%. Esse limite de uso de memória usa memória física em vez de virtual para garantir o desempenho em dispositivos com RAM limitada, como tablets. Os administradores podem substituir essa configuração dinâmica por um limite explícito usando a chave do Registro do Windows MemoryAlertThreshold como uma configuração global. Eles também podem ajustar o intervalo de alerta com a chave AlertInterval .
Tolerância a falhas - Um limite padrão de quatro falhas durante a sessão do documento.
Os administradores podem ajustar o limite para casos de falha usando a chave de registro RestartManagerRetryLimit.
Bloqueio de aplicativos - Um limite prolongado de falta de resposta de cinco segundos.
Isso afeta as experiências do usuário com o suplemento e o aplicativo do Office. Quando isso ocorre, o aplicativo do Office reinicia automaticamente todos os suplementos ativos de um documento ou caixa de correio (quando aplicável) e avisa o usuário sobre qual suplemento parou de responder. Os suplementos atingem esse limite quando não produzem processamento regularmente durante a execução de tarefas de longa execução. Há técnicas listadas posteriormente neste artigo para ajudar a garantir que o suplemento não bloqueie o aplicativo do Office. Os administradores não podem substituir esse limite.
Observação
Embora apenas o Outlook no Mac (clássico) monitore o uso de recursos, se o cliente tornar um suplemento do Outlook indisponível, o suplemento também ficará indisponível em outros clientes do Outlook com suporte.
Suplementos do painel de tarefas e de conteúdo
Se qualquer conteúdo ou suplemento do painel de tarefas exceder os limites anteriores no uso de núcleo da CPU ou memória ou limite de tolerância para falhas, o aplicativo do Office correspondente exibirá um aviso para o usuário. Nesse momento, o usuário poderá executar uma destas ações:
- Reiniciar o suplemento.
- Cancele alertas adicionais sobre como exceder esse limite. O ideal é que o usuário exclua o suplemento do documento. O uso continuado do suplemento arriscaria mais problemas de desempenho e estabilidade.
Tempo de resposta de avaliação para expressões regulares em suplementos do Outlook
Os suplementos do Outlook que usam expressões regulares e são executados no Outlook no Windows (clássico) ou no Mac (clássico) devem observar as seguintes regras de ativação.
Tempo de resposta de expressões regulares: um limite padrão de 1.000 milissegundos para que o Outlook avalie todas as expressões regulares no manifesto de um suplemento do Outlook. Exceder o limite faz com que o Outlook repita a avaliação posteriormente.
No Outlook clássico no Windows, os administradores podem ajustar esse valor limite padrão de 1.000 milissegundos usando uma política de grupo ou configuração específica do aplicativo para o
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\WEF\Outlook\ActivationAlertThresholdvalor DWORD no Registro do Windows.Reavaliação de expressões regulares: um limite padrão de três vezes para que o Outlook reavalie todas as expressões regulares em um manifesto. Se a avaliação falhar três vezes, o usuário deverá alternar para um item de email diferente e voltar para repetir a avaliação.
Os administradores podem ajustar esse número de vezes para repetir a avaliação usando uma política de grupo ou configuração específica do aplicativo. A localização da configuração depende da plataforma.
-
Windows: o
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\WEF\Outlook\ActivationRetryLimitvalor DWORD no registro do Windows. -
Mac: a
ActivationRetryLimitlista de propriedades em~/Library/Preferences.
-
Windows: o
Suplementos do Excel
Os suplementos do Excel têm limites importantes de transferência de dados ao interagir com a pasta de trabalho.
- O Excel na Web tem um limite de tamanho de conteúdo para solicitações e respostas de 5 MB.
RichAPI.Errorserá lançado se esse limite for excedido. - Um intervalo é limitado a 5.000.000 de células para operações de leitura. Quando uma leitura exceder esse limite, a API retornará
nullou lançará um erro. Para obter mais informações, consulte Práticas recomendadas de limite de tamanho de carga.
Se você espera que a entrada do usuário exceda esses limites, Marque os dados antes de chamar context.sync(). Divida a operação em partes menores, conforme necessário. Chame context.sync() cada suboperação para evitar que essas operações sejam agrupadas em lotes novamente.
Normalmente, esses limites são excedidos por intervalos grandes. Seu suplemento pode usar RangeAreas para atualizar estrategicamente as células em um intervalo maior. Para obter mais informações sobre como trabalhar com RangeAreaso , consulte Trabalhar com vários intervalos simultaneamente em suplementos do Excel. Para obter informações adicionais sobre como otimizar o tamanho da carga no Excel, consulte Práticas recomendadas de limite de tamanho de carga.
Verificar problemas de uso de recursos no Log de Telemetria
O Office fornece um Log de Telemetria que mantém um registro de determinados eventos (carregamento, abertura, fechamento e erros) para soluções do Office em execução no computador local. Isso inclui problemas de uso de recursos em um suplemento do Office. Se tiver o Log de Telemetria configurado, você poderá usar o Excel para abrir o Log de Telemetria no seguinte local padrão na sua unidade local.
%Users%\<Current user>\AppData\Local\Microsoft\Office\16.0\Telemetry
Para cada evento que o Log de Telemetria acompanha para um suplemento, há a data/hora de ocorrência, a ID do evento, a severidade e o título descritivo curto do evento, o nome amigável e a ID exclusiva do suplemento, e o aplicativo que registrou em log o evento. Atualize o Log de Telemetria para ver os eventos rastreados atuais.
A tabela a seguir lista os eventos que o Log de Telemetria rastreia para os Suplementos do Office.
| ID do Evento | Título | Severity | Descrição |
|---|---|---|---|
| 7 | Manifesto de suplemento baixado com êxito | Não aplicável | O manifesto do Suplemento do Office foi carregado e lido com êxito pelo aplicativo do Office. |
| 8 | Manifesto de suplemento não baixado | Crítico | O aplicativo do Office não pôde carregar o arquivo de manifesto para o Suplemento do Office do catálogo do SharePoint, do catálogo corporativo ou do Microsoft Marketplace. |
| 9 | Não foi possível analisar a marcação do suplemento | Crítico | O aplicativo do Office carregou o manifesto do suplemento do Office, mas não pôde ler a marcação HTML do aplicativo. |
| 10 | O suplemento usou CPU em excesso | Crítico | O suplemento do Office usou mais de 90% dos recursos da CPU em um período de tempo finito. |
| 15 | Suplemento desabilitado porque esgotou o tempo limite na pesquisa de cadeia de caracteres | Não aplicável | Os suplementos do Outlook pesquisam a linha de assunto e a mensagem de um e-mail para determinar se devem ser exibidas usando uma expressão regular. O suplemento do Outlook listado na coluna Arquivo foi desabilitado pelo Outlook porque atingiu o tempo limite repetidamente ao tentar corresponder a uma expressão regular. |
| 18 | Suplemento fechado com êxito | Não aplicável | O aplicativo do Office conseguiu fechar o Suplemento do Office com êxito. |
| 19 | O suplemento encontrou um erro de tempo de execução | Crítico | O suplemento do Office teve um problema que causou sua falha. Para obter mais detalhes, examine o log de Alertas do Microsoft Office usando a Visualizador de Eventos do Windows no computador que encontrou o erro. |
| 20 | Falha ao verificar a licença do suplemento | Crítico | As informações de licenciamento do suplemento do Office não puderam ser verificadas e podem ter expirado. Para obter mais detalhes, examine o log de Alertas do Microsoft Office usando a Visualizador de Eventos do Windows no computador que encontrou o erro. |
Saiba mais em Implantar o Painel de Telemetria e Solução de problemas de arquivos do Office e soluções personalizadas com o log de telemetria.
Técnicas de design e implementação
Embora os limites de recursos sobre uso de CPU e memória, tolerância a panes e capacidade de resposta da interface do usuário se apliquem aos Suplementos do Office executados somente em clientes de área de trabalho do Office, a otimização deve ser uma prioridade se você quiser que seu suplemento tenha um desempenho satisfatório em todos os clientes e dispositivos de suporte. A otimização é particularmente importante se o suplemento efetua operações de longa duração ou lida com grandes conjuntos de dados. A lista a seguir sugere algumas técnicas para dividir operações com uso intensivo de CPU ou com uso intensivo de dados em partes menores, para que o suplemento evite o consumo excessivo de recursos e mantenha o aplicativo do Office responsivo.
Se o suplemento precisar ler um grande volume de dados de um conjunto de dados não associado, você poderá aplicar a paginação ao ler os dados de uma tabela ou reduzir o tamanho dos dados em cada operação de leitura mais curta, em vez de tentar concluir a leitura em uma única operação. Você pode fazer isso por meio do método setTimeout do objeto global para limitar a duração da entrada e da saída. Também lida com os dados em blocos definidos, em vez dos dados não associados aleatoriamente. Outra opção é usar assíncrono para lidar com suas promessas.
Se o seu suplemento usa um algoritmo com uso intensivo de CPU para processar um grande volume de dados, você pode usar web workers para executar a tarefa de longa duração em segundo plano enquanto executa um script separado em primeiro plano, como exibir o progresso na interface do usuário. Os web workers não bloqueiam as atividades do usuário e permitem que a página HTML permaneça responsiva. Para obter um exemplo de Web workers, confira Noções básicas de Web workers.
Se o suplemento usa um algoritmo com uso intensivo de CPU, mas você pode dividir a entrada ou saída de dados em conjuntos menores, considere criar um serviço Web, passar os dados para o serviço Web para descarregar a CPU e aguardar um retorno de chamada assíncrono.
Teste o suplemento em relação ao maior volume de dados esperado e restrinja o suplemento a processar até esse limite.
Melhorias de desempenho com as APIs específicas do aplicativo
As dicas de desempenho em Usando o modelo de API específico do aplicativo fornecem diretrizes ao usar as APIs específicas do aplicativo para Excel, OneNote, Visio e Word. Em resumo, você deve:
- Carregue apenas as propriedades necessárias.
-
Minimize o número de chamadas sync().
Leia Evite usar o método context.sync em loops para obter mais informações sobre como gerenciar
syncchamadas em seu código. - Minimize o número de objetos proxy criados. Você também pode cancelar o rastreamento de objetos proxy, conforme descrito na próxima seção.
Cancelar o rastreamento de objetos proxy desnecessários
Os objetos proxy persistem na memória até serem RequestContext.sync() chamados. Grandes operações em lote podem gerar muitos objetos de proxy que são necessários apenas uma vez pelo suplemento e podem ser liberados da memória antes da execução do lote.
O untrack() método libera o objeto da memória. Esse método é implementado em muitos objetos proxy de API específicos do aplicativo. Chamar untrack() depois que o suplemento terminar com o objeto deve gerar um benefício de desempenho perceptível ao usar um grande número de objetos proxy.
Observação
Range.untrack() é um atalho para ClientRequestContext.trackedObjects.remove(thisRange). Qualquer objeto de proxy pode ser não-rastreado, removendo-o da lista de objetos rastreados no contexto.
O exemplo de código do Excel a seguir preenche um intervalo selecionado com dados, uma célula por vez. Depois que o valor é adicionado à célula, o intervalo que representa a célula é não-rastreado. Execute esse código em um intervalo selecionado de 20.000 de 10.000 células, primeiro, com a linha cell.untrack() e, em seguida, sem ela. Você deve observar que o código é executado mais rapidamente com a linha cell.untrack() do que sem ela. Você também poderá observar um tempo de resposta mais rápido posteriormente, porque a etapa de limpeza leva menos tempo.
Excel.run(async (context) => {
const largeRange = context.workbook.getSelectedRange();
largeRange.load(["rowCount", "columnCount"]);
await context.sync();
for (let i = 0; i < largeRange.rowCount; i++) {
for (let j = 0; j < largeRange.columnCount; j++) {
let cell = largeRange.getCell(i, j);
cell.values = [[i *j]];
// Call untrack() to release the range from memory.
cell.untrack();
}
}
await context.sync();
});
Observe que a necessidade de cancelar o rastreamento de objetos só se torna importante quando você está lidando com milhares deles. A maioria dos suplementos não precisa gerenciar o acompanhamento de objetos proxy.