内存的作用 内存是连接CPU和其他设备(DISK)的通道,起到缓冲和数据交换作用。 内存的特点 存储数据速度快, 但是数据不是永久存放的, 断电则数据丢失。

1)如果内存里能查到则为HIT命中, 那么就直接从内存里取数据(【2】步骤)。 2)如果内存里查不到则为MISS(未命中), 那么就先从硬盘取数据到内存(cache中),再 给CPU(上图【1】【2】步骤)。
1)这种运算修改后的数据我们称为dirty data脏数据, 会先给内存(存到buffer中)(上图 中【3】步骤)。 2)内存中的脏数据达到一定的比率(此比率在后面可以通过内核参数优化调整)后会给 硬盘(上图中【4】步骤)。


共享内存允许两个或多个进程访问同一块内存区域,这样的进程通讯方式效率高。 buffer与cache都为缓存区,CPU从内存里取数据HIT命中就是在cache中找数据,CPU运算后的脏数据从buffer写回到磁盘。

echo 3 > proc/sys/vm/drop_caches

si 实时查看到的从虚拟内存swap到物理内存的值; so实时查看到的从物理内存到虚拟内存swap的值。



free命令看到的available值很小; vmstat命令看到的si,so较多; sar -B命令通过fault/s和majflt/s,算出命中率不高。
总之要多观察,多维度来证实是否真的是内存不够。
横向拓展 看是否将应用的一部分负载转移到其它服务器(LB,分表分库,读写分离等)。 纵向拓展 换更好的内存,加更大的内存。 微调 内存能微调的地方主要就是修改内核参数。

4. 修改内核参数
net.ipv4.ip_forward = 1
5. 与内存优化有关的内核参数

swappiness表示使用swap分区的使用程度, 可以适当调整; swappiness趋向于0表示尽可能使用物理内存空间; swappiness趋向于100表示积极使用swap。

将值调大的优点: 提高写入磁盘效率(因为一次写的数据量大,写的次数少)。 将值调大的缺点: 有可能一次写的数据量过大,造成磁盘IO峰值。


本文作者:贾 杰(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




