9.3.1 及以前
ASA只支持lina 进程,不支持在ASA上运行其他进程。全局共享池使内存分配的唯一来源。lina为堆所需的内存都是在初始化期间为全局共享池保留的。
9.3.2 - 9.5.1
内存基础架构重新设计,以支持其他程序运行,因此在初始化旗舰不在为全局共享池保留内存,而是根据系统可用内存和全局共享池之间动态分配。系统内存只是运行lina允许使用最大地址空间,系统内存包含所有ASA可用内存。lina负责内存分配,因此一些内存将会从系统内存移动到全局共享池,然后全局共享池相应内存分配。随后内存释放时有可能被全局共享池保留,为了更快的相应分配请求,也可能会返回系统内润。
9.5.2 及以后
出于性能考虑添加了heapcache,heapcache始终是内润分配的首选,它是一个缓存,它预先分配并具有更好的性能,当heapcache耗尽时想从全局共享池进一步完成内存分配,全局共享池未预先分配,动态的从系统内存获取内存。heapcache池不向全局共享池获取或释放内存,因为它时预先分配的。
High Memory 询问故障
- 什么时候开始发生 High Memory
- 备机是否存在 High Memory (表明是否和流量相关/使用,与配置无关)
- 正常时内存消耗
- 是否更改配置或者进行拓扑重新设计
- ASA从正常情况到High memory需要多长时间
Memory 消耗
- 某些功能(威胁检测、VPN、web VPN)
- 容量(大量的并发连接、xlate、ACL)
Memory 泄漏解决流程
- show memory detail
- 查找消耗总内存最大的行,或计数特别高的行
- show memory binsize x
- ASA / FWSM Memory binsize Parser工具进行分析
- 查找相关内容
- 当内存已经很高的时候不要用内存跟踪。
memory-tracking
- 启用内存追踪 memory tracking enable
- show memory tracking 查看内存分配变化
- show memory tracking adress | i
PC-Counter时增长最快的进程 - 上步输出中随机选取任意内存地址进行输出 show memory tracking dump
内存问题导致的症状
- 无法发送数据包(SNMP、Syslog)
- 无法通过ASA处理流量和转发数据包
- 无法保存配置
- 无法同步故障转移
- 无法对Web Sense服务器执行URL过滤
- 控制台输出process_create:out of stack memory
- 无法通过ASA建立新的连接
- ASA将重新加载并编写crashinfo
- 无法管理设备(Telnet、SSH、ASDM)
- 无法添加新的ACL