O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve como as atividades do Unified Contact Center Express (UCCX), que exigem acesso ao banco de dados UCCX local, podem ser executadas lentamente. Faz com que as páginas AppAdmin sejam carregadas lentamente, que as atualizações no AppAdmin demorem muito para serem aplicadas, que o atraso na resposta a uma consulta no quadro de avisos, que o Workforce Manager não possa consultar os dados UCCX e outros problemas de desempenho e estabilidade.
O comando show process load, inserido na CLI, mostra que o uccxoninit consome uma grande quantidade de CPU. O processo uccxoninit representa a instância do banco de dados UCCX Informix executada no servidor UCCX.
Contribuído por Sridhar Chandrasekharan, Ryan LaFountain e Ben Wollak, engenheiros do TAC da Cisco.
O mecanismo de banco de dados que suporta o aplicativo UCCX é o Informix da IBM. As informações de configuração e histórico adicionadas à página AppAdmin do UCCX e produzidas pelo aplicativo UCCX são armazenadas na instância do UCCX Informix.
O aplicativo UCCX oferece três usuários que podem ser usados para acessar o banco de dados UCCX diretamente a fim de extrair informações para fins de aplicativos de quadro de parede, Quality Management, Workforce Management e relatórios de histórico personalizados.
As informações do usuário, as permissões de cada usuário e a finalidade de cada usuário são descritas aqui:
quadro - Este usuário tem permissões selecionadas somente nas tabelas de banco de dados em tempo real que contêm snapshots de estatísticas em tempo real gravadas na memória do Mecanismo UCCX. As permissões de seleção restritas às tabelas Resumo e Estatísticas de RTICDS significam que o usuário do uccxwallboard deve ser usado para consultar o banco de dados do UCCX frequentemente com consultas simples e não complexas destinadas a serem originadas por um aplicativo de wallboard.
No UCCX Versão 10.0 e posterior, insira o comando utils uccx database dbperf start <totalHours> <interval> para iniciar o rastreamento de desempenho no banco de dados UCCX. O argumento interval nesse comando determina a periodicidade da coleta de rastreamento e o argumento totalHours determina o tempo total que o rastreamento executa antes de ser desabilitado. Esses parâmetros são opcionais. Se não forem especificados quando o comando for executado, serão usados os valores padrão de 20 minutos e 10 horas.
Por exemplo, insira o comando utils uccx database dbperf start 24 30 para habilitar o rastreamento de desempenho no banco de dados e coletar dados sobre estatísticas de desempenho a cada 30 minutos por 24 horas.
As instruções para coletar os dados obtidos pelo comando CLI são impressas na saída do comando.
Após o total de horas fornecido, a coleta de dados é interrompida automaticamente. Para interromper manualmente a coleta de dados, insira o comando utils uccx database dbperf stop.
Se a versão do UCCX for 9.0(2) ou anterior e a utils uccx database dbperf não está disponível, entre em contato com o Centro de Assistência Técnica (TAC) para obter assistência.
O TAC executará o script dbperf.sh anexado ao Cisco bug ID CSCuc68413 manualmente com acesso à Conta de Suporte Remoto.
Quando você determina quando iniciar a execução do script manualmente ou por meio do comando CLI, a periodicidade e o tempo total garantem a CPU consumida pelo uccxoninit o processo oscila significativamente ou permanece alto durante esses períodos para coletar as informações necessárias para a análise da causa raiz.
Além disso, insira periodicamente o comando show process load para determinar quando a CPU flutua para correlacionar os registros coletados pelo script de rastreamento dbperf.
Os registros coletados pela execução do script dbperf de onstat -g ses 0 exibem consultas ativas que são emitidas em relação ao banco de dados UCCX. A alta CPU no processo uccxoninit é geralmente o resultado de consultas complexas que levam muito tempo para serem executadas. O objetivo é determinar as consultas que consomem a maioria dos recursos, determinar o cliente de origem para essas consultas, desativar as consultas do cliente para resolução imediata e otimizar as consultas de longa duração para resolução permanente.
Nos registros coletados pelo script dbperf, procure consultas que provavelmente causam grandes flutuações na CPU ou alto consumo sustentado de CPU pelo processo uccxoninit.
Consultas suspeitas:
Um exemplo com uma consulta complexa que envolve uma tabela de RH executada como uccxhruser é mostrado aqui:
session #RSAM total used dynamic
id user tty pid hostname threads memory memory explain
435050 uccxhrus WBBOX 836 10.16.5. 1 90112 80712 off
...................
Current SQL statement :
SELECT x.resourceName, t.eventType, x.datetime, x.extension FROM ( SELECT
t1.resourceID, t1.resourceName, t1.extension, MAX(t2.eventDateTime) AS
datetime FROM Resource AS t1, AgentStateDetail AS t2 WHERE t2.agentID
= t1.resourceID AND t1.assignedTeamID = 21 and t1.active GROUP BY
t1.resourceID, t1.resourceName, t1.extension ) AS x, AgentStateDetail AS
t WHERE t.agentID = x.resourceID AND t.eventDateTime = x.datetime
ORDER BY x.resourceName
O exemplo acima mostra uma consulta complexa, inserida pelo uccxhruser originada da WBBOX do host, que pode causar impacto no desempenho do banco de dados do UCCX se ela foi inserida com frequência ou foi inserida periodicamente antes da consulta anterior ter retornado resultados.
Embora raro, o desempenho do banco de dados UCCX também pode diminuir (e a utilização da CPU do uccxoninit o processo oscila ou permanece alto), como resultado do processo de limpeza incorporado. O processo de limpeza foi projetado para excluir dados da configuração e tabelas de histórico no banco de dados UCCX para manter o tamanho do banco de dados. A limpeza pode ser agendada com base no tamanho do banco de dados ou no registro mais antigo contido no banco de dados.
Quando o processo de limpeza é executado, os dados são removidos com uma consulta. Ele não é feito iterativamente com base na quantidade de registros a serem removidos. Isso significa que se a limpeza detectar uma grande quantidade de dados que deve ser removida, ela emitirá uma única consulta na tentativa de remover esses dados.
A modificação da agenda ou parâmetros de limpeza da página UCCX AppAdmin para agendar a limpeza para remover uma grande quantidade de dados pode fazer com que esta única consulta, na próxima limpeza agendada, leve um tempo significativo para ser concluída. Portanto, ele aumenta a utilização da CPU da instância do banco de dados.
Na saída do script dbperf, a consulta de limpeza pode ser vista. Deve ser a única consulta inserida pelo usuário uccxuser que chama o procedimento armazenado sp_purge.
session #RSAM total used dynamic
id user tty pid hostname threads memory memory explain
5628 uccxuser - -1 CC-EXPR- 1 544768 523408 off
Current SQL statement in procedure db_cra:sp_purge
proc-counter 0x0x4ccf9260 opcode SQL
delete from contactroutingdetail
where (exists
(select 1
from contactcalldetail as ccdr
where (and (and (and (and (and (= contactroutingdetail.sessionid,
ccdr.sessionid), (= contactroutingdetail.nodeid, ccdr.nodeid)),
(= contactroutingdetail.sessionseqnum, ccdr.sessionseqnum)),
(= contactroutingdetail.profileid, ccdr.profileid)), (>= ccdr.enddatetime,
p_purgefrom)), (< ccdr.enddatetime, p_purgeto))));
Com base na recente experiência do Cisco TAC e da Cisco Development Engineering, estes são os problemas mais comumente vistos que causam alta utilização da CPU no processo uccxoninit: