目录

简介

问题说明

分析

解决方案

步骤

简介

本文档介绍针对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)，从而可能导致内存泄漏。”

解决方案

实施会话恢复以解决此问题。

步骤

步骤1: 在执行模式提示符下，验证会话恢复功能是否已通过系统上的会话和功能使用许可证启用。 show license info  命令。 如果会话恢复功能的当前状态为Disabled，则只有在系统中安装了许可证密钥后，才能启用此功能。

第二步： 使用此配置示例启用会话恢复。

configure

require session recovery

end

重新启动系统后，此功能才会生效。

第三步： 按照验证和保存配置中所述保存配置。

第四步： 执行系统重新启动 reload  命令。出现以下提示：

Are you sure? [Yes|No]:

确认您希望执行系统重新启动并输入 Yes.

系统重新启动后，将启用会话恢复并创建所有镜像的“备用模式”任务，自动执行数据包处理卡保留和其他操作。

第五步： 重新启动系统后，必须验证系统的准备情况，以支持此功能，如查看会话恢复状态中所述。 更高级的用户可选择插入 require session recovery 命令语法输入已经通过文本编辑器或其它方式存在的配置文件中，然后手动应用配置文件。执行此操作时，请谨慎操作，以确保此命令位于任何已存在的配置文件的前几行中；它必须在创建任何非本地上下文之前显示。