目錄

簡介

必要條件

需求

採用元件

CSCvt73723 - WebRTC伺服器在伺服器上放置大量會話後洩漏會話

如何識別此錯誤？

如何避免此問題？

計畫何時修復此問題？

相關資訊

簡介

本檔案介紹在伺服器上放置大量作業階段後，針對WebRTC伺服器遺漏作業階段的Cisco錯誤id CSCvt73723進行偵測和解決方法。這最終可能會導致使用者無法登入或作為WebBridge上的訪客加入。

必要條件

需求

思科建議您瞭解以下主題：

- Cisco Meeting Server(CMS)（CallBridge和WebBridge元件）

採用元件

本檔案中的資訊是根據思科會議伺服器，尤其是WebBridge 2 / CMA WebRTC元件。本文檔不適用於2.9版中引入的新WebBridge 3/CMS Web應用元件。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

CSCvt73723 - WebRTC伺服器在伺服器上放置大量會話後洩漏會話

如何識別此錯誤？

從終端使用者的角度來看，症狀是一旦達到硬限制，其他使用者就無法加入會議。在日誌中，發現Webbridge統計資訊(如本常見問題)達到149並不一定意味著這些會話都是洩漏的。這僅表示Web橋已達到其硬性限制，不允許新連線。

"webbridge":資訊：[調試]統計資訊149,c:3477,d:3170

如果沒有CMA案頭客戶端或iOS客戶端，計算這些洩露的會話數會比較複雜，並且可以進行。從2.8版起，Call Bridge每5分鐘報告一次CMA會話數（CMA WebRTC + CMA案頭客戶端+ CMA iOS客戶端）。 請注意，此報告為「CMA」：「X/Y」，其中X是當前活動CMA會話數，Y是過去5分鐘內的峰值。

資訊：統計資訊：{"callLegsPS":1，「callLegs」："20/24"、"CMA":"14/17","sip":{"std":"0/1", "peer":"6/6"}}

僅僅因為Call Bridge報告14個當前會話，並不意味著位於同一位置的Web Bridge也報告14個會話。在單個組合伺服器上，此對映是1:1，但在集群部署中，Web網橋會話可以在不同的呼叫網橋上例項化呼叫（尤其是在啟用了負載平衡時，對於CMA預設情況下啟用負載均衡）。

因此，為了計算部署中洩漏的會話總數，您確實需要來自所有Web Bridge統計資訊的合併活動會話，並將其與報告的合併CMA呼叫網橋統計資訊進行比較。

如何避免此問題？

根據您的部署遇到此情況的頻率（每隔幾天或每隔幾週一次），必須建議您重新啟動其Web Bridge，這樣會清除所有洩漏的會話並將活動會話計數重置為0。可以理解的是，如果這變成每日繁瑣的工作，則此任務可能非常繁瑣，因此可以使用代碼塊中提供的指令碼來執行此任務。

################################################################

#### Cisco Meeting Server ####

#### Webbridge restart ####

#### Workaround for CSCvt73723  ####

#### feedback: willwoo@cisco.com ####

################################################################

#--------------------------------------------------------------

# ---------- DISCLAIMER ----------

#--------------------------------------------------------------

# Please note this script is NOT maintained or supported by Cisco.

# This is to be run at entirely your own risk.

# This script is not intended for redistribution

# Tested with python 3.7.4

#--------------------------------------------------------------

#--------------------------------------------------------------

# ---------- Libraries to import ----------

#--------------------------------------------------------------

import paramiko

import time

import datetime

#--------------------------------------------------------------

#--------------------------------------------------------------

# ---------- Deployment parameters to change ----------

#--------------------------------------------------------------

# WB Inventory - just extend or modify the below to match your deployment requirements.

# Enter the MMP IP of the server (can differ from interface webbridge service is running)

webbridges ={1:"127.0.0.1",2:"127.0.0.1",3:"127.0.0.1",4:"127.0.0.1"}

mmp_username = "admin" # MMP username

mmp_password = "password" # MMP password

#--------------------------------------------------------------

def mmp_webbridge_restart(mmp_address,uname,pword):

conn = paramiko.SSHClient()

conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

conn.connect(mmp_address, 22, uname, pword)

stdin, stdout, stderr = conn.exec_command('webbridge restart')

time.sleep(1)

conn.close()

print_log_message('Webbridge on server: ' + mmp_address + ' restarted successfully')

except Exception as error:

print_log_message('Failed to restart webbridge on server ' + mmp_address + '. Error:')

print_log_message(str(error))

pass

def print_log_message(message):

time_stamp = datetime.datetime.now(datetime.timezone.utc)

time_stamp = str(time_stamp)

file = open('webbridge_restart_logs.txt', 'a')

file.write(time_stamp + " " + message + "\n")

file.close()

if __name__ == '__main__':

for wb in webbridges:

mmp_webbridge_restart(webbridges[wb], mmp_username, mmp_password)

################################################################

指令碼需要進行一些小的編輯（第29-30行的憑證和第27行部署中的Web網橋的IP地址），並且只有在沒有預期負載或處於維護視窗期間，才能運行。該指令碼不檢查活動會話，只是在列出的所有伺服器上執行「webbridge restart」命令，該命令會終止任何活動WebRTC會話。

要自動執行此指令碼，可通過設定cron作業或在具有任務計畫程式的Windows 10 PC上執行該操作。假設Win 10 PC已安裝Python 3.4+，則可執行以下步驟：

1.開啟任務計畫程式

2.選擇「建立基本任務……」

2.1輸入此任務的名稱/說明

2.2選擇要運行此任務的頻率和時間（建議僅在非高峰時間運行，此處顯示每週六上午2點）

2.3要執行的操作，請選擇：'啟動程式'

2.4操作：

*程式/指令碼：  C:\<python.exe的路徑>

(如果您不知道python.exe的路徑，可以轉至cmd並鍵入： python -c "匯入系統；print(sys.executable)")

*新增引數（可選）：webbridge_restart.py（或python指令碼的名稱）

*起始位置（可選）：C:\<webbridge_restart.py>的路徑

請注意，運行cron作業的電腦必須能夠訪問已配置的CMS伺服器的MMP。指令碼運行後，將建立webbridge_restart_logs.txt檔案，該檔案包含有關不同WebBridge重新啟動以及任何潛在故障的詳細資訊。所示示例中有一個成功連線到10.48.79.194，還有一個失敗了一個連線到127.0.0.1（實際上是PC的環回地址）。

2020-06-08 14:53:18.149915+00:00 Webbridge on server: 10.48.79.194 restarted successfully 2020-06-08 14:53:19.165543+00:00 Failed to restart webbridge on server 127.0.0.1. Error: 2020-06-08 14:53:19.165543+00:00 [Errno None] Unable to connect to port 22 on 127.0.0.1

如何測試指令碼是否正常工作？

如果您安裝了Python來運行指令碼的PC，可以首先通過下一步在它上手動運行：

1. 開啟cmd並使用「cd」命令瀏覽到指令碼的位置

2. 使用命令「python webbridge_restart.py」運行python檔案

3. 如果您看到一個錯誤指示未安裝「paramiko」模組，則需要使用「pip install paramiko」命令安裝一些額外的庫

4. 完成後，您可以使用「python webbridge_restart.py」再次運行指令碼(注意：這會重新啟動webbridge並導致當前進行中的WebRTC連線斷開)

如果運行成功，您可以在webbridge_restart_logs.txt檔案中檢查運行結果。

計畫何時修復此問題？

這不是新錯誤，也沒有在Web Bridge 2 / CMA WebRTC上解決此問題的計畫。新的Web Bridge 3/CMS Web應用（從2.9開始提供）不受此錯誤的影響，因為它已經過完全重新設計。受到此問題嚴重影響的客戶必須考慮遷移到新的CMS Web應用（不過請注意，在2.9版本中，此功能尚未與Web Bridge 2完全相同）。請檢視CMS 2.9和cms web app發行說明以瞭解有關此內容的完整詳細資訊。)

相關資訊

- 缺陷註釋：https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvt73723

- 版本說明：https://www.cisco.com/c/en/us/support/conferencing/meeting-server/products-release-notes-list.html

- 常見問題

- https://meeting-infohub.cisco.com/faq/content/43/450/en/how-do-you-check-the-number-of-active-sessions-on-a-web-bridge.html