TAC 对错误的响应(%SYS-2-MALLOCFAIL:内存分配)

网络工程 路由器 故障排除 记忆
2021-07-07 07:27:41

我希望你能为我的案例提供一些帮助,我们有一个 Cisco 路由器 2800 系列,有错误(%SYS-2-MALLOCFAIL:内存分配),(如果重新启动路由器,它可以正常工作一段时间。

我们负责与TAC开案的管理员联系了他们,他们的回答如下,但我们不明白,你能解释一下吗?


显示进程内存通知(如果有)

信息:'show process memory' 的输出只显示与处理器相关的内存,不识别其他内存,如 I/O、Fast、VM 等。要接收对这些类型内存的统计分析,请提交第一个'show memory' 和 'show version' 命令输出到输出解释器的页面。注意:内存类型因路由器平台和安装的模块而异。

信息:处理器内存利用率为 11.22801%。信息:处理器内存或主内存存储运行配置和路由表。Cisco IOS 软件从主内存执行。信息:路由器所需的处理器内存量受所用 Cisco IOS 版本、网络大小和访问列表配置的影响。确保已选择最佳 IOS 版本。

信息:持有少于 1 MB 内存的前 3 个进程是: - 'Chunk Manager' 持有 964368 字节 - 'Exec' 持有 337640 字节 - 'LICENSE AGENT' 持有 37592 字节

错误消息通知(如果有)

错误:未找到错误消息。试试这个:确保错误消息具有以下格式:%FACILITY-SEVERITY-MNEMONIC:一些示例是:%SYS-2-MALLOCFAIL:%PIX-1-103001:根据需要重新提交输出。

3个回答

我见过的 alloc 失败的最常见原因是默认路由的严重配置错误——ip route 0.0.0.0 0.0.0.0 f0/0会导致这种情况,因为它是proxy-arp,并且 ARP 表将增长到一个疯狂的大小。

遥遥领先的动态路由协议会​​导致严重的内存碎片。

我们(和TAC)将需要大量的详细信息调试此。我建议查看的第一个地方是故障发生后show memory failures alloc的输出重启前

注意:因为内存相对便宜(如果不是从 Cisco 购买的),我倾向于为我的路由器加载尽可能多的内存。

我可以告诉你我上次处理 MALLOCFAIL 是由 IOS 错误引起的。我不得不升级到更高版本的IOS。但是,如果我没记错的话,那是在我的一台 2901 上。不过,在我尝试之前,您还必须进行更多故障排除。如果您想进行更多故障排除,请尝试显示技术显示内存显示缓冲区

导致此类错误的原因有很多,并且可能会影响处理器和 I/O 内存池,因此第一步是确定受影响的池。

Mallocs 可能是由于软件错误或错误配置导致的内存泄漏,由于功能和服务压倒路由器而导致的内存不足,或者也可能是由错误引起的内存碎片。

为了让 TAC 解决需要更多细节的问题,您可能需要多次迭代“show proc mem sorted, show memory stat, etc..”并且根据情况可能需要几天时间。

对于这种情况,我总是保留以下文档:) http://www.cisco.com/c/en/us/support/docs/ios-nx-os-software/ios-151m-t/116467-technote- ios-00.html