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. Estes limites de utilização de recursos em tempo de execução aplicam-se a suplementos em execução em clientes do Office no Windows e no OS X, mas não em aplicações móveis ou num browser.

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 utilização de recursos em tempo de execução aplicam-se a todos os tipos de Suplementos do Office. Estes limites ajudam a garantir o desempenho dos seus utilizadores e a mitigar ataques denial-of-service. Certifique-se de que testa o seu Suplemento do Office na sua aplicação de destino do Office através de um intervalo de dados possíveis e mede o desempenho em relação aos seguintes limites de utilização de 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 predefinido para um cliente do Office verificar a utilização do núcleo da CPU é de 5 em 5 segundos. Se o cliente do Office detetar que a utilização do núcleo da CPU de um suplemento está acima do valor de limiar, será apresentada uma mensagem a perguntar se o utilizador quer continuar a executar o suplemento. Se o utilizador optar por continuar, o cliente do Office não volta a perguntar ao utilizador 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 predefinição, quando um cliente do Office deteta que a utilização da memória física num dispositivo excede 80% da memória disponível, o cliente começa a monitorizar a utilização da memória do suplemento, ao nível do documento para suplementos de conteúdo e painel de tarefas e ao nível da caixa de correio para suplementos do Outlook. Num intervalo predefinido de 5 segundos, o cliente avisa o utilizador se a utilização da memória física para um conjunto de suplementos ao nível do documento ou da caixa de correio exceder os 50%. Este limite de utilização de memória utiliza memória física e não virtual para garantir o desempenho em dispositivos com RAM limitada, como tablets. Os administradores podem substituir esta definição dinâmica por um limite explícito ao utilizar a chave de registo MemoryAlertThreshold do Windows como uma definição global, ir ajustar o intervalo de alerta utilizando a chave AlertInterval como uma definiçã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.

    Isto afeta as experiências do utilizador do suplemento e da aplicação do Office. Quando isto ocorre, a aplicação do Office reinicia automaticamente todos os suplementos ativos de um documento ou caixa de correio (quando aplicável) e avisa o utilizador sobre o suplemento que deixou de responder. 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 um suplemento do Outlook exceder os limiares anteriores para utilização do núcleo da CPU ou da memória ou o limite de tolerância para falhas, o suplemento fica indisponível. O Centro de Administração do Exchange apresenta o estado do suplemento.

Observação

Apesar de apenas o Outlook no Windows (clássico) e no Mac monitorizarem a utilização de recursos, se um destes clientes tornar um suplemento do Outlook indisponível, esse suplemento também fica indisponível no Outlook na Web, em dispositivos móveis e no novo Outlook no Windows.

Além das regras de núcleo, memória e fiabilidade da CPU, os suplementos do Outlook 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.

    Ao utilizar uma política de grupo ou uma definição específica da aplicação no registo do Windows, os administradores podem ajustar este valor de limiar predefinido de 1000 milissegundos na definiçã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 três vezes ao exceder o limiar aplicável (que é a predefinição de 1000 milissegundos ou um valor especificado pelo OutlookActivationAlertThreshold, se essa definição existir no registo do Windows), o Outlook torna o suplemento indisponível. O Centro de Administração do Exchange apresenta o estado do suplemento e o suplemento não está disponível no Outlook na Web, no Windows (novo e clássico), no Mac e em dispositivos móveis.

    Ao utilizar uma política de grupo ou uma definição específica da aplicação no registo do Windows, os administradores podem ajustar este número de vezes para repetir a avaliação na definição OutlookActivationManagerRetryLimit .

Suplementos do Excel

Se estiver a criar um suplemento do Excel, tenha em atenção as seguintes limitações de tamanho ao interagir com o livro.

  • 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 está limitado a cinco milhões de células para operações de obtenção.

Se espera que a entrada do utilizador exceda estes limites, certifique-se de que verifica os dados antes de chamar context.sync(). Divida a operação em partes mais pequenas, conforme necessário. Certifique-se de que chama context.sync() cada sub-operação para evitar que essas operações sejam novamente agrupadas.

Estas limitações são normalmente excedidas por intervalos grandes. O seu suplemento poderá ser capaz de utilizar o RangeAreas para atualizar estrategicamente células num intervalo maior. Para obter mais informações sobre como trabalhar com RangeAreaso , consulte Trabalhar com vários intervalos em simultâneo nos suplementos do Excel. Para obter informações adicionais sobre como otimizar o tamanho do payload no Excel, veja Melhores práticas de limite de tamanho do payload.

Suplementos do painel de tarefas e de conteúdo

Se algum suplemento de conteúdo ou painel de tarefas exceder os limiares anteriores no núcleo da CPU ou na utilização da memória, ou o limite de tolerância para falhas, a aplicação do Office correspondente apresenta um aviso para o utilizador. Nesse momento, o usuário poderá executar uma destas ações:

  • Reiniciar o suplemento.
  • Cancele mais alertas sobre exceder esse limiar. Idealmente, o utilizador deve, em seguida, eliminar o suplemento do documento; continuar o suplemento correria o risco de problemas de desempenho e estabilidade adicionais.

Verificar problemas de utilização de recursos no Registo 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 tiver o Registo de Telemetria configurado, pode utilizar o Excel para abrir o Registo de Telemetria na seguinte localização predefinida na 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 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 pela aplicação do Office.
8 Manifesto de suplemento não baixado Crítico A aplicação do Office não conseguiu carregar o ficheiro de manifesto do Suplemento do Office a partir do catálogo do SharePoint, catálogo empresarial ou AppSource.
9 Não foi possível analisar a marcação do suplemento Crítico A aplicação do Office carregou o manifesto do Suplemento do Office, mas não conseguiu ler a marcação HTML da aplicação.
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 Ficheiro foi desativado pelo Outlook porque excedeu o tempo limite repetidamente ao tentar corresponder a uma expressão regular.
18 Suplemento fechado com êxito Não aplicável A aplicação 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, veja o registo alertas do Microsoft Office através do 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, veja o registo alertas do Microsoft Office através do 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 para a utilização da CPU e da memória, a tolerância a falhas e a capacidade de resposta da IU se apliquem aos Suplementos do Office em execução apenas em clientes de ambiente de trabalho do Office, a otimização da utilização destes recursos e da bateria deve ser uma prioridade se quiser que o 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 seguinte sugere algumas técnicas para dividir operações intensivas de CPU ou de utilização intensiva de dados em segmentos mais pequenos para que o seu suplemento possa evitar o consumo excessivo de recursos e a aplicação do Office possa continuar a responder.

  • 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. Pode fazê-lo através 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 é utilizar assíncrona para processar as 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 de 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 da aplicação

As sugestões de desempenho em Utilizar o modelo de API específico da aplicação fornecem orientações ao utilizar as APIs específicas da aplicação para Excel, OneNote, Visio e Word. Em resumo, deve:

Controlar objetos de 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 liberta o objeto da memória. Este método é implementado em muitos objetos de proxy de API específicos da aplicação. Chamar untrack() após o suplemento ser feito com o objeto deve gerar um benefício de desempenho notável ao utilizar 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 seguinte exemplo de código do Excel preenche um intervalo selecionado com dados, uma célula de cada 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();
});

Tenha em atenção que a necessidade de descontrolar objetos só se torna importante quando lida com milhares deles. A maioria dos suplementos não precisará de gerir o controlo de objetos proxy.

Confira também