소개
이 문서에서는 특히 CTI(Computer-Telephony Integration) 서버와 Finesse 서버 간의 메시지 지연으로 인해 Finesse 에이전트 데스크톱 환경에서 관찰된 대기열 또는 Skillgroup 통계 업데이트 문제에 대한 문제 식별 방법을 설명합니다. 이 문서에서는 로그 분석을 제공하며, 최적화되지 않은 지연 네트워크에서 이러한 통계 업데이트 메시지를 처리하는 과정에서 Finesse 서버 기능을 개선하기 위한 해결 방법으로 마무리합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco UCCE(Unified Contact Center Enterprise) CTISVR(CTI Server)
- Cisco Finesse 서버
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- CTISVR이 설치된 UCCE 에이전트 주변 장치 게이트웨이
- Finesse 서버 클러스터
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco Technical Tips Conventions를 참조하십시오.
배경 정보
CTI 클라이언트로 CTISVR에 가입하는 Finesse 서버는 CTIOS(Computer Telephony Integration Object Server) 및 CAD(Cisco Agent Desktop)가 제공할 수 있는 것과 유사한 에이전트 기능을 제공합니다. Finesse 에이전트/수퍼바이저는 CTIOS 및 CAD 에이전트가 직면한 몇 가지 문제를 경험할 수도 있습니다.
이러한 문제 중 하나는 Finesse 에이전트/수퍼바이저 데스크톱으로 업데이트되지 않는 Queue 또는 Skillgroup 실시간 통계입니다. CTIOS 및 CAD 환경에서 엔지니어는 일반적으로 설계 지침을 확인하고 에이전트당 skillgroup, 주변 장치당 총 skillgroup, 수퍼바이저당 팀 등과 같은 컨피그레이션 제한이 초과 서브스크립션되었는지 확인합니다. 엔지니어는 CTISVR에서 동시 CTI 클라이언트 연결 수를 확인할 수도 있습니다.
버전 10.5(x) 및 버전 11의 설계 가이드에서도 관련 정보를 참조할 수 있습니다.
Finesse 에이전트/수퍼바이저의 이러한 유형의 문제 해결은 앞서 언급한 설계 제한 확인에서 시작합니다. 그러나 Finesse 에이전트에는 Finesse 서버에만 있는 추가 제한 사항이 적용될 수 있습니다.
문제 증상
큐 또는 Skillgroup stats not updating issue는 일반적으로 다음 시나리오에서 발견됩니다.
- 현재 상담원 상태는 Finesse Agent Desktop의 개별 기술/대기열 가젯에 반영되지 않습니다. 그러나 에이전트 PG(주변 장치 게이트웨이)에서 la 명령과 함께 opctest를 사용하여 에이전트 상태를 확인하면 에이전트 상태가 skillgroup과 정확함을 알 수 있습니다.
- 잠시 동안 상담원 수가 통화 중 상태이지만 Finesse 상담원 또는 수퍼바이저 데스크톱은 통화 시간 동안 스킬/대기열에 여전히 0을 표시합니다.
- Finesse 서버를 다시 시작하면 시스템이 일시적으로 작동하지만 대개 몇 분 또는 몇 시간 내에 동일한 문제가 다시 발생합니다.
Finesse CTI 메시징 및 Finesse 대기열 통계 버퍼
Finesse 에이전트 대기열 통계 또는 기술 통계 업데이트는 Finesse 서버에서 이러한 요청 및 응답 CTI 메시지 쌍의 교환을 통해 수행됩니다.
Finesse의 getQueryQueueStatisticsReq() 메시지 요청 및 CTISVR 응답 결과의 QuerySkillGroupStatisticsConf 메시지.
기본적으로 Finesse는 지정된 10초 통계 새로 고침 간격 내에 751 직무 그룹 요청을 처리할 수 있습니다. 처리되지 않은 요청은 나중에 처리할 메시지 대기열에 버퍼링됩니다. Finesse는 기본적으로 5000개의 REQUEST 메시지를 보관하기 위해 이 메시지 버퍼 대기열을 사용하여 초기화됩니다.
그러나 버퍼가 가득 차서 초과되면 이러한 대기열 통계 요청 메시지 중 일부는 시간 초과되어 삭제됩니다.
Finesse 대기열 통계 버퍼 오버런의 가능한 원인
1. 설계/구성 초과 등록 상담원별 스킬, 주변 장치별 총 스킬 그룹, 수퍼바이저별 팀 등 권장 구성 제한은 설명서를 참조하십시오. 초과 서브스크립션은 통계 업데이트에 과도한 CTI 메시징을 초래할 수 있으므로 Finesse 대기열 통계 요청 버퍼를 오버실행합니다.
2. All Events(모든 이벤트) 연결 및 Monitored Mode(모니터링되는 모드) 연결을 포함하는 최대 동시 CTI 클라이언트 연결 수를 초과합니다. CTISVR 리소스 고갈로 인해 CTI 메시지 처리 속도가 크게 느려집니다.
3. PG 성능 예 CPU, 메모리 및 디스크 I/O etc..
4. Finesse 애플리케이션에 허용되는 CTI 메시징 지연(예: 62ms)을 지원하기 위한 네트워크 대역폭이 충분하지 않습니다.
권장 네트워크 대역폭을 할당하기 위해 현재 설계 사양과 함께 이 링크의 Finesse 대역폭 계산기가 제공됩니다. http://www.cisco.com/c/en/us/support/customer-collaboration/finesse/products-technical-reference-list.html
CTI 메시지 지연으로 인한 Finess 대기열 통계 버퍼 오버런
REQUEST 메시지 처리 속도 및 메시지 버퍼에 대한 이 Finesse 제한에 따라 평균 Finesse 구축의 경우 최대 평균 요청/응답 지연의 기본값은 62ms입니다. 평균 지연이 벤치마크 62ms를 크게 초과하면, 예를 들어. CTI 메시지 지연은 약 100ms입니다. 그런 다음 버퍼된 getQueryQueueStatisticsReq() CTI 메시지는 CTISVR로 보낼 수 없으며 10초 간격 내에 QuerySkillGroupStatisticsConf 메시지로 빠르게 응답될 수 있습니다. 나머지 시간 초과된 getQueryQueueStatisticsReq() 메시지는 대기열 통계 버퍼에서 삭제됩니다.
관련 Finesse 추적
대기열 통계 메시지는 webservices finesse 로그에서 확인할 수 있습니다. 자세한 대기열 통계 메시지를 표시하려면 DEBUG 추적 레벨이 필요합니다.
웹 서비스에 대한 DEBUG 추적 수준을 설정하는 단계는 이 docwiki 링크를 참조하십시오.
http://docwiki.cisco.com/wiki/Logging:_Enable_debug_level_logging
로그 분석
대기열 버퍼 오버런이 다음 로그를 따르는 경우 Webservices 로그에서 로그 조각을 관찰할 수 있습니다.
10초 간격 새로 고침 시작 시 751개 대기열 상태 요청 업데이트의 시작 부분을 찾습니다.
eg.
Sep 22 2014 14:34:59.878 -0700: %CCBU_pool-21-thread-1-6-QUEUE_STATISTICS_REQUEST: %[count=751]: Starting new round of querying active queue statistics
이것과 10초 후에 발생하는 다음 751 요청 사이에서, 텍스트 도구로 필터링하고 확인합니다. Notepad++ - 일치하는 751개의 QuerySkillGroupStatisticsConf 메시지가 있는 경우:
eg
Sep 22 2014 14:34:59.888 -0700: %CCBU_CTIMessageEventExecutor-0-6-DECODED_MESSAGE_FROM_CTI_SERVER: %[cti_message=CTIQuerySkillGroupStatisticsConf[peripheralID=5000, skillGroupNumber=28353, routerCallsQNow=0, longestRouterCallQNow=0, agentsNotReady=0, agentsReady=0, agentsTalkingIn=0, agentsTalkingOut=0, agentsTalkingOther=0, agentsWorkNotReady=0, agentsWorkReady=0]CTIMessageBean [invokeID=112223, msgID=115, timeTracker={"id":"QuerySkillGroupStatisticsConf","CTI_MSG_NOTIFIED":1411536082977,"CTI_MSG_RECEIVED":1411536082976}, msgName=QuerySkillGroupStatisticsConf, deploymentType=CCE]][cti_response_time=1]: Decoded Message to Finesse from backend cti server
예를 들어 이 라운드에 대해 Finesse에서 처리한 QuerySkillGroupStatisticsConf 메시지가 329개뿐인 경우 다른 말로 하자면 버퍼에 422개의 메시지가 대기되어 있어야 합니다. 물론, 10초마다 라운드 400개의 메시지를 대기시키면 버퍼가 3분 이내에 임계값 5000개에 도달할 수 있습니다.
3분 내에 발생하는 폴링 오류의 첫 번째 발생, 즉 버퍼 오버런의 징후를 검색합니다.
Sep 22 2014 14:37:29.883 -0700: %CCBU_pool-21-thread-1-3-QUEUE STATISTICS POLLING ERROR: %[ERROR_DESCRIPTION= maximum pool and queue capacity reached so discarding execution][error_message=Thread pool saturated, discarding execution ]: Error during queue statistics polling
CTISVR 처리 지연의 그림
- Finesse는 getQueryQueueStatisticsReq() 요청을 CTIISVR로 보냅니다. tracking invokeId=112223, queueId=28353:
Sep 23 2014 22:21:22.875 -0700: %CCBU_pool-19-thread-4-7-CTIWriter.getQueryQueueStatisticsReq(): {Thrd=pool-19-thread-4} params : invokeId=112223, queueId=28353
match InvokeID:0x1b65f with invoked=112223 in the Finesse request
and SkillGroupNumber:28353 with queueId in the Finesse request
22:21:22:921 cg1A-ctisvr SESSION 9: MsgType:QUERY_SKILL_GROUP_STATISTICS_REQ (InvokeID:0x1b65f PeripheralID:5000
22:21:22:921 cg1A-ctisvr SESSION 9: SkillGroupNumber:28353 SkillGroupID:N/A )
22:21:22:999 cg1A-ctisvr SESSION 9: MsgType:QUERY_SKILL_GROUP_STATISTICS_CONF (InvokeID:0x1b65f PeripheralID:5000
22:21:22:999 cg1A-ctisvr SESSION 9: SkillGroupNumber:28353 SkillGroupID:9431 AgentsLoggedOn:0 AgentsAvail:0 AgentsNotReady:0
22:21:22:999 cg1A-ctisvr SESSION 9: AgentsReady:0 AgentsTalkingIn:0 AgentsTalkingOut:0 AgentsTalkingOther:0
22:21:22:999 cg1A-ctisvr SESSION 9: AgentsWorkNotReady:0 AgentsWorkReady:0 AgentsBusyOther:0 AgentsReserved:0 AgentsHold:0
22:21:22:999 cg1A-ctisvr SESSION 9: AgentsICMAvailable:0 AgentsApplicationAvailable:0 AgentsTalkingAutoOut:0
22:21:22:999 cg1A-ctisvr SESSION 9: AgentsTalkingPreview:0 AgentsTalkingReservation:0 RouterCallsQNow:0
- Finesse가 CTISVR 응답을 받고 QuerySkillGroupStatisticsConf 메시지를 구성했습니다.
Sep 23 2014 22:21:22.977 -0700: %CCBU_CTIMessageEventExecutor-0-6-DECODED_MESSAGE_FROM_CTI_SERVER: %[cti_message=CTIQuerySkillGroupStatisticsConf[peripheralID=5000, skillGroupNumber=28353, routerCallsQNow=0, longestRouterCallQNow=0, agentsNotReady=0, agentsReady=0, agentsTalkingIn=0, agentsTalkingOut=0, agentsTalkingOther=0, agentsWorkNotReady=0, agentsWorkReady=0]CTIMessageBean [invokeID=112223, msgID=115, timeTracker={"id":"QuerySkillGroupStatisticsConf","CTI_MSG_NOTIFIED":1411536082977,"CTI_MSG_RECEIVED":1411536082976}, msgName=QuerySkillGroupStatisticsConf, deploymentType=CCE]][cti_response_time=1]: Decoded Message to Finesse from backend cti server
Finesse가 일치하는 QuerySkillGroupStatisticsConf 메시지를 수신하는 데 100ms가 넘게 걸렸습니다(평균 응답 시간인 경우). Finesse는 Buffer Queue Overrun(버퍼 큐 오버런) 문제로 실행될 수 있습니다.
해결 방법
aws.properties에는 Finesse 서버 측에서 새로 고침 간격을 설정하는 속성이 있습니다. 이는 기본적으로 Finesse에서 CTISVR로 전송되는 두 개의 대기열 통계 요청 라운드(이 구축에서는 하나의 라운드가 751개의 대기열 통계 요청) 사이의 간격입니다. Finesse는 기본적으로 10초마다 요청합니다. 이 속성은 잠재적으로 값이 더 높은 것으로 변경될 수 있으며, 이는 Finesse가 좀 더 많은 시간을 가질 것임을 의미합니다(예: 10초 대신 20초)를 사용하여 한 라운드의 대기열 통계 요청을 처리합니다. 또한 벤치마크 CTI 기술 통계 요청/응답 지연을 62ms에서 124ms로 효과적으로 확장합니다.
- Finesses OS 플랫폼에 대한 루트 액세스 획득
- VI를 등록 정보 파일 /opt/cisco/desktop/conf/webservices/aws.properties으로 이동
- 이 속성 값을 10에서 20으로 수정했습니다.
com.cisco.cc.webservices.reporting.core.queue_statistics_refresh_interval
참고: 대기열 통계의 새로 고침 간격(초)
- aws.properties 파일 저장
- finesse Tomcat 서비스 재시작
- Finesse 클러스터 내의 모든 Finesse 노드에서도 동일한 단계를 수행해야 합니다