Compartilhar via


Limites de recurso e otimização de desempenho para Suplementos do Office

Para criar a melhor experiência para os usuários, verifique se o desempenho do Suplemento do Office está dentro dos limites específicos para uso de memória e núcleo de CPU, confiabilidade e, para suplementos do Outlook, tempo de resposta para avaliar expressões regulares. Esses limites de uso de recursos em tempo de execução se aplicam a suplementos em execução em clientes do Office no Windows e no OS X, mas não em aplicativos móveis ou em um navegador.

Também é possível otimizar o desempenho dos suplementos em dispositivos móveis e para área de trabalho aprimorando o uso de recursos no design e na implementação de suplementos.

Limites de uso de recursos para suplementos

Os limites de uso de recursos em tempo de execução se aplicam a todos os tipos de Suplementos do Office. Esses limites ajudam a garantir o desempenho de seus usuários e a mitigar ataques de negação de serviço. Certifique-se de testar seu Suplemento do Office em seu aplicativo office de destino usando um intervalo de dados possíveis e medir seu desempenho em relação aos seguintes limites de uso em tempo de execução.

  • Uso de núcleo de CPU: um limite de uso de núcleo de CPU único de 90%, observado três vezes em intervalos padrão de cinco segundos.

    O intervalo padrão para um cliente do Office marcar uso do núcleo da CPU é a cada 5 segundos. Se o cliente do Office detectar que o uso principal 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 solicitará ao usuário novamente durante essa sessão de edição. Os administradores podem querer usar a chave de registro AlertInterval para elevar o limite caso os usuários executem suplementos que consomem muita CPU, a fim de reduzir a exibição desta mensagem de aviso.

  • 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 da memória do suplemento, em um nível de documento para suplementos de conteúdo e painel de tarefas e em um nível de caixa de correio para suplementos do Outlook. Em um intervalo padrão de 5 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 e não virtual para garantir o desempenho em dispositivos com RAM limitada, como tablets. Os administradores podem substituir essa configuração dinâmica com um limite explícito usando a chave de registro do Windows MemoryAlertThreshold como uma configuração global, ir ajustar o intervalo de alerta usando a chave AlertInterval como uma configuração global.

  • Tolerância a falhas: um limite padrão de quatro falhas para um suplemento.

    Os administradores podem ajustar o limite para casos de falha usando a chave de registro RestartManagerRetryLimit.

  • Bloqueio de aplicativo: um limite prolongado de falta de resposta de cinco segundos para um suplemento.

    Isso afeta as experiências do usuário do suplemento e do aplicativo do Office. Quando isso ocorre, o aplicativo do Office reinicia automaticamente todos os suplementos ativos para um documento ou caixa de correio (quando aplicável) e avisa o usuário sobre qual suplemento ficou sem resposta. Suplementos podem atingir esse limite quando não têm rendimento do processamento regularmente ao realizar tarefas de execução demorada. Há técnicas para garantir que não ocorra bloqueio. Os administradores não podem substituir esse limite.

Suplementos do Outlook

Se qualquer suplemento do Outlook exceder os limites anteriores para uso de CPU core ou memória ou limite de tolerância para falhas, o suplemento ficará indisponível. O Exchange Administração Center exibe o status de suplemento.

Observação

Embora apenas o Outlook no Windows e no mac monitor use recursos, se um desses clientes tornar um suplemento do Outlook indisponível, esse suplemento também ficará indisponível em Outlook na Web, em dispositivos móveis e no novo Outlook no Windows (versão prévia).

Além das regras de CPU core, memória e confiabilidade, os suplementos do Outlook devem observar as regras a seguir sobre 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.

    Usando uma política de grupo ou uma configuração específica do aplicativo no registro do Windows, os administradores podem ajustar esse valor de limite padrão de 1.000 milissegundos na configuração OutlookActivationAlertThreshold .

  • 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 todas as três vezes excedendo o limite aplicável (que é o padrão de 1.000 milissegundos ou um valor especificado pelo OutlookActivationAlertThreshold, se essa configuração existir no registro do Windows), o Outlook tornará o suplemento indisponível. O Exchange Administração Center exibe o suplemento status e o suplemento não está disponível no Outlook no Windows (clássico e novo (versão prévia)), no Mac, na Web e em dispositivos móveis.

    Usando uma política de grupo ou uma configuração específica do aplicativo no registro do Windows, os administradores podem ajustar esse número de vezes para tentar novamente a avaliação na configuração OutlookActivationManagerRetryLimit .

Suplementos do Excel

Se você estiver criando um suplemento do Excel, esteja ciente das limitações de tamanho a seguir 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.Error será lançado se esse limite for excedido.
  • Um intervalo é limitado a cinco milhões de células para obter operações.

Se você espera que a entrada do usuário exceda esses limites, certifique-se de marcar os dados antes de chamar context.sync(). Divida a operação em partes menores conforme necessário. Certifique-se de chamar context.sync() cada sub-operação para evitar que essas operações sejam agrupadas em lote novamente.

Normalmente, essas limitações são excedidas por grandes intervalos. Seu suplemento pode ser capaz de usar RangeAreas para atualizar estrategicamente as células em um intervalo maior. Para obter mais informações sobre como trabalhar com RangeAreas, 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, confira Práticas recomendadas de limite de tamanho de carga.

Suplementos do painel de tarefas e de conteúdo

Se qualquer conteúdo ou suplemento de painel de tarefas exceder os limites anteriores no uso de memória ou núcleo de CPU 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 outros alertas sobre como exceder esse limite. O ideal é que o usuário exclua o suplemento do documento; Continuar o suplemento arriscaria problemas adicionais de desempenho e estabilidade.

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 (carregar, abrir, fechar e erros) de soluções do Office em execução no computador local, incluindo problemas de uso de recursos em um Suplemento do Office. Se você tiver o Log de Telemetria configurado, poderá usar o Excel para abrir o Log de Telemetria no local padrão a seguir em 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. Você pode atualizar o Log de Telemetria para ver os eventos atualmente acompanhados. A tabela a seguir mostra exemplos de suplementos do Outlook que foram acompanhados no log de Telemetria.

Data/Hora ID do Evento Severity Título Arquivo ID Application
8/10/2022 17:57:10 7 Não aplicável manifesto de suplemento baixado com êxito Quem é quem 69cc567c-6737-4c49-88dd-123334943a22 Outlook
8/10/2022 17:57:01 PM 7 Não aplicável manifesto de suplemento baixado com êxito LinkedIn 333bf46d-7dad-4f2b-8cf4-c19ddc78b723 Outlook

A tabela a seguir lista os eventos que o Log de Telemetria acompanha para os Suplementos do Office em geral.

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, catálogo corporativo ou AppSource.
9 Não foi possível analisar a marcação do suplemento Crítico O aplicativo do Office carregou o manifesto 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 ele acabou repetidamente ao tentar corresponder a uma expressão regular.
18 Suplemento fechado com êxito Não aplicável O aplicativo do Office foi capaz de 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 alertas do Microsoft Office usando o windows Visualizador de Eventos 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 alertas do Microsoft Office usando o windows Visualizador de Eventos 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 recursos limitem o uso de CPU e memória, a tolerância a falhas e a capacidade de resposta da interface do usuário se aplicam a suplementos do Office executados apenas em clientes da área de trabalho do Office, otimizar o uso desses recursos e bateria deve ser uma prioridade se você quiser que seu suplemento seja executado satisfatoriamente 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 interromper operações intensivas em CPU ou com uso intensivo de dados em partes menores para que seu suplemento possa evitar o consumo excessivo de recursos e o aplicativo do Office possa permanecer responsivo.

  • Em um cenário em que o suplemento precisa ler um grande volume de dados de um conjunto de dados não associado, você pode 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íncrona para lidar com suas Promessas.

  • Se o suplemento usa um algoritmo com uso intensivo de CPU para processar um grande volume de dados, você pode usar os web workers para executar a tarefa demorada em segundo plano enquanto executa um script separado em primeiro plano, como exibir o andamento na interface do usuário. Os Web workers não bloqueiam atividades do usuário e permitem que a página HTML continue respondendo. Para obter um exemplo de Web workers, confira Noções básicas de Web workers. Consulte Web Workers para obter mais informações sobre a API do Web Workers.

  • Se o suplemento usa um algoritmo com uso intensivo de CPU, mas é possível dividir a entrada ou a saída de dados em conjuntos menores, considere criar um serviço Web passando os dados para o serviço Web para aliviar a carga da CPU e aguarde 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 Usar 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:

Objetos proxy desnecessários não rastreados

Os objetos proxy persistem na memória até RequestContext.sync() serem 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. A chamada untrack() após o complemento ser feito 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 desmarcando objetos só se torna importante quando você está lidando com milhares deles. A maioria dos suplementos não precisará gerenciar o rastreamento de objetos proxy.

Confira também