簡介
本文檔介紹針對sessmgr例項的解決方案,這些例項因高而進入WARN狀態 acsmgr_icsr_frwk_instance_chkpt_falied()
進程使用情況。
問題描述
平台ASR5500
軟體版本:21.27.4和21.19.10
會話管理器例項處於警告狀態,因為在 acsmgr_icsr_frwk_instance_chkpt_falied()
禁用會話恢復時的功能:
[local]ASR5500# show task resources | grep -v good
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
1/0 sessmgr 13 26% 100% 930.8M 900.0M 37 500 4643 12000 I warn
1/0 sessmgr 36 32% 100% 938.8M 900.0M 39 500 5155 12000 I warn
1/0 sessmgr 53 29% 100% 937.8M 900.0M 40 500 4916 12000 I warn
1/0 sessmgr 56 29% 100% 930.2M 900.0M 41 500 4649 12000 I warn
1/0 sessmgr 83 35% 100% 970.2M 900.0M 40 500 5382 12000 I warn
1/0 sessmgr 90 24% 100% 931.3M 900.0M 42 500 4621 12000 I warn
1/0 sessmgr 130 28% 100% 935.0M 900.0M 40 500 4907 12000 I warn
1/0 sessmgr 141 26% 100% 936.7M 900.0M 37 500 4917 12000 I warn
1/0 sessmgr 145 23% 100% 933.9M 900.0M 39 500 4883 12000 I warn
1/0 sessmgr 174 26% 100% 927.4M 900.0M 37 500 4620 12000 I warn
1/0 sessmgr 188 31% 100% 963.0M 900.0M 40 500 5305 12000 I warn
1/0 sessmgr 223 26% 100% 933.5M 900.0M 38 500 4631 12000 I warn
Aggregate consumption per proc:
-------- ------------------------------------------ -------------- -------------- -------------- --------- ---------
| Nr | Process | Similar | Total Bytes | Human Bytes | Percent | % Acum |
======== ========================================== ============== ============== ============== ========= =========
| 1 | acsmgr_icsr_frwk_instance_chkpt_falied() | 757 | 108301860 | 103.3 MB | 13.95% | 13.95% |
| 2 | egtpc_allocate_peer_rec() | 89 | 77599472 | 74.0 MB | 10.00% | 23.95% |
| 3 | sn_slist_dnode_alloc() | 471 | 64427392 | 61.4 MB | 8.30% | 32.25% |
| 4 | sessmgr_allocate_callline() | 156 | 48601944 | 46.4 MB | 6.26% | 38.51% |
| 5 | sn_aaa_buffer_alloc_more_type() | 45 | 34836120 | 33.2 MB | 4.49% | 43.00% |
[local]ASR5500# show task resources | grep -v good
Session Recovery Status:
Overall Status : Not Enabled
Last Status Update : 8 seconds ago
分析
為了隔離總使用者數過高是否觸發該進程 acsmgr_icsr_frwk_instance_chkpt_falied()
要過度使用,將執行sessmgr例項忙出,並確認未降低sessmgr記憶體利用率:
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 20% 100% 981.8M 900.0M 43 500 4142 12000 I warn
Total 1 20.20% 981.8M 43 4142
[local]ASR5500> task sessmgr instance 10 busy-out
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 19% 100% 979.7M 900.0M 42 500 3946 12000 B warn
Total 1 19.35% 979.7M 42 3946
[local]ASR5500> task sessmgr instance 10 enable
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 17% 100% 979.8M 900.0M 40 500 4141 12000 I warn
Total 1 17.33% 979.8M 40 4141
從日誌中,當對受影響的sessmgr例項之一執行忙碌退出時,會減少已使用的會話數,但已使用的記憶體分配仍保持較高水準,並顯示這會導致sessmgr例項處於WARN狀態。
經過進一步調查, acsmgr_icsr_frwk_instance_chkpt_falied()
在處理檢查點資訊時呼叫函式。禁用會話恢復時,此函式中存在一些清單新增/更新/刪除操作,這些操作無法按預期工作,這是記憶體消耗增加的原因。此處使用的記憶體是此場景中一段時間的累積。此行為僅在以下情況下發生: require session recovery
未配置。要處理的累積記憶體 acsmgr_icsr_frwk_instance_chkpt_falied()
不會釋放任何時間(否 require session recovery
),該操作可能會導致memleak。」
解決方案
實施會話恢復以解決此問題。
程式
步驟 1. 在執行模式提示符下,驗證會話恢復功能是否已通過系統上的會話和功能使用許可證啟用,並使用 show license info
指令。 如果會話恢復功能的當前狀態為「已禁用」,則在系統中安裝許可證金鑰之前,您無法啟用此功能。
步驟 2. 使用以下配置示例啟用會話恢復。
configure
require session recovery
end
此功能只有在重新啟動系統後才能生效。
步驟 3. 按照驗證和儲存配置中的說明儲存配置。
步驟 4. 執行系統重新啟動 reload
指令。顯示的提示如下:
重新啟動後,系統將啟用會話恢復並建立所有映象的「備用模式」任務,自動執行資料包處理卡保留和其他操作。
步驟 5. 重新啟動系統後,必須驗證系統的準備情況以支援此功能,如檢視會話恢復狀態中所述。 更多高級使用者可以選擇插入 require session recovery
命令語法輸入已使用文本編輯器或其他方式存在的配置檔案中,然後手動應用配置檔案。執行此操作時請務必小心,以確保此命令位於任何已存在的配置檔案的前幾行中;它必須在建立任何非本地上下文之前顯示。