簡介
本文檔介紹在Finesse代理案頭環境中觀察到的隊列或技能組狀態更新問題識別問題的故障排除方法,特別是由電腦電話整合(CTI)伺服器和Finesse伺服器之間的消息延遲導致的問題。文章對日誌進行了分析,並總結出一種解決方法,以提高Finesse伺服器在次優延遲網路中處理這些Stats Update消息的能力。
必要條件
需求
思科建議您瞭解以下主題:
- Cisco Unified Contact Center Enterprise(UCCE)CTI Server(CTISVR)
- Cisco Finesse伺服器
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- 已安裝CTISVR的UCCE代理外圍網關
- Finesse伺服器群集
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
請參閱思科技術提示慣例以瞭解有關檔案慣例的資訊。
背景資訊
作為CTI客戶端訂購CTISVR的Finesse伺服器提供類似於電腦電話整合對象伺服器(CTIOS)和Cisco Agent Desktop(CAD)提供的代理功能。Finesse代理/主管還可以體驗CTIOS和CAD代理所面臨的一些問題。
其中一個問題是隊列或Skillgroup即時狀態未更新到Finesse代理/主管案頭。在CTIOS和CAD環境中,工程師通常會檢查設計手冊,並驗證配置限制(例如每個代理的技能組、每個外圍裝置的技能組和每個主管的團隊的總數等)是否已超額訂閱。 工程師還會檢查CTISVR上併發CTI客戶端連線的數量,請參閱
相關資訊也可從版本10.5(x)和版本11的設計手冊中參考。
對Finesse代理/主管上的此類問題進行故障排除時,也從上述設計限制驗證開始。但是,Finesse代理可能會受到其他限制的影響,這些限制專門在Finesse伺服器上找到。
問題症狀
在以下情況下,通常找到未更新問題的隊列或技能組統計資訊:
- 當前座席狀態不會反映在Finesse座席案頭上的單個技能/隊列小工具中。但是,在座席外圍裝置網關(PG)上使用opctest with la命令檢查座席狀態,表示技能組的座席狀態正確。
- 座席數暫時處於TALKING狀態,但Finesse座席或主管台式機的通話時間技能/隊列中仍顯示0。
- 重新啟動Finesse伺服器可使系統臨時工作,但通常相同的故障會在幾分鐘或幾小時內重新出現。
Finesse CTI消息傳送和Finesse隊列統計資訊緩衝區
Finesse代理隊列統計資訊或技能統計資訊更新通過在Finesse伺服器中交換這些請求和響應CTI消息對來執行。
由Finesse發出的getQueryQueueStatisticsReq()消息請求和作為CTISVR響應結果的QuerySkillGroupStatisticsConf消息。
預設情況下,Finesse可以在指定的10秒狀態刷新間隔內處理751技能組請求。未處理的請求被緩衝在消息隊列中,以便稍後處理。預設情況下,Finesse使用此消息緩衝區隊列初始化,以保留5000條請求消息。
但是,如果緩衝區已滿並且不堪重負,則其中某些隊列狀態請求消息將超時並被丟棄。
Finesse隊列統計資訊緩衝區溢位的可能原因
1.超訂用設計/配置。例如每個座席的技能、每個外圍裝置的技能組總數、每個主管的團隊等。請參閱,瞭解建議的配置限制。超訂用可能導致統計資訊更新上出現過多的CTI消息傳遞,從而超出Finesse隊列統計資訊請求緩衝區。
2.超過允許的最大併發CTI客戶端連線(包括所有事件連線和受監控模式連線)。CTISVR資源耗盡,導致CTI消息處理速度明顯減慢。
3. PG效能如CPU、記憶體和磁碟I/O裝置……
4.網路頻寬不足,無法支援Finesse應用程式允許的CTI消息延遲,即62ms。
連結中提供的Finesse頻寬計算器和當前的設計規格,用於分配推薦的網路頻寬。http://www.cisco.com/c/en/us/support/customer-collaboration/finesse/products-technical-reference-list.html
由於CTI消息延遲,Finess Queue Stats緩衝區溢位
基於此Finesse對REQUEST消息處理速度和消息緩衝區的限制,平均Finesse部署的最大平均請求/響應延遲的預設值為62ms。如果平均延遲大大超過62ms的基準,例如CTI消息延遲約100毫秒。然後,在這10秒的刷新間隔內,快取的getQueryQueueStatisticsReq()CTI消息永遠無法傳送到CTISVR,並以QuerySkillGroupStatisticsConf消息進行響應。其餘超時的getQueryQueueStatisticsReq()消息將從隊列狀態緩衝區中刪除。
相關Finesse跟蹤
可在webservices finesse日誌中找到隊列狀態消息。它需要DEBUG跟蹤級別來顯示詳細的隊列統計消息。
有關為Web服務啟用DEBUG跟蹤級別的步驟,請參閱此docwiki連結。
http://docwiki.cisco.com/wiki/Logging:_Enable_debug_level_logging
日誌分析
當隊列緩衝區溢位後,可以從Web服務日誌中觀察日誌片段
查詢751隊列stat請求更新一輪的開頭,刷新間隔為10秒:
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
在此次和下一輪751個請求(10秒後發生)之間,使用文本工具eg進行過濾和驗證。記事本++,如果存在匹配的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僅為此輪處理了329條QuerySkillGroupStatisticsConf消息,換句話來說,緩衝區中必須排隊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()請求傳送到CTISVR — 跟蹤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消息需要超過100毫秒。Finesse可能會遇到緩衝區隊列溢位問題。
因應措施
aws.properties中有一個屬性,用於設定Finesse伺服器端的刷新間隔。這基本上是從Finesse到CTISVR的兩輪隊列統計請求之間的時間間隔(一輪是此部署中的751個隊列統計請求)。預設情況下,Finesse每10秒請求一次。該屬性可能更改為更高值,這意味著Finesse將擁有更多時間(例如:20秒(而不是10秒),以便處理一輪隊列狀態請求。它還有效地將基準CTI技能狀態請求/響應延遲從62毫秒擴展到124毫秒。
- 已獲得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節點上執行相同的步驟