一、内存性能指标
二、内存性能工具
三、定位内存问题高效方法
1. 先用 free 和 top,查看系统整体的内存使用情况。
2. 再用 vmstat 和 pidstat,查看一段时间的趋势,从而判断出内存问题的类型。
3. 最后进行详细分析,比如内存分配分析、缓存 / 缓冲区分析、具体进程的内存使用分析等。
四、优化内存方法
1. 最好禁止 Swap。如果必须开启 Swap,降低 swappiness 的值,减少内存回收时 Swap 的使用倾向。
2.减少内存的动态分配。比如,可以使用内存池、大页(HugePage)等。
3.尽量使用缓存和缓冲区来访问数据。比如,可以使用堆栈明确声明内存空间,来存储需要缓存的数据;或者用 Redis 这类的外部缓存组件,优化数据的访问。
4.使用 cgroups 等方式限制进程的内存使用情况。这样,可以确保系统内存不会被异常进程耗尽。
5.通过 /proc/pid/oom_adj ,调整核心应用的 oom_score。这样,可以保证即使内存紧张,核心应用也不会被 OOM 杀死。