目錄

簡介

問題描述

分析

解決方案

程式

簡介

本文檔介紹針對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 指令。顯示的提示如下：

Are you sure? [Yes|No]:

確認您希望執行系統重新啟動並輸入 Yes.

重新啟動後，系統將啟用會話恢復並建立所有映象的「備用模式」任務，自動執行資料包處理卡保留和其他操作。

步驟 5. 重新啟動系統後，必須驗證系統的準備情況以支援此功能，如檢視會話恢復狀態中所述。 更多高級使用者可以選擇插入 require session recovery 命令語法輸入已使用文本編輯器或其他方式存在的配置檔案中，然後手動應用配置檔案。執行此操作時請務必小心，以確保此命令位於任何已存在的配置檔案的前幾行中；它必須在建立任何非本地上下文之前顯示。