若一台服务器内存使用率持续处于高峰值,可能会导致响应慢(如:ssh操作卡顿、用户访问失败或超时等)
1.查看系统内存使用情况
free -m
2.查看哪些进程内存占用比较高
top
或htop
观察进程PID和命令确认是哪一个进程占用内存较高
3.解决方法
- 情况一:
应用程序访问量小,但依然占用过高内存,通常是bug导致,需要检查代码调用有无及时释放,其中内存型应用程序,例如Java,自身管理内存,设置初始值内存2G,启动后Java自行管理回收,一直会被占用
- 情况二:
应用程序访问量较大,正常范围,需要增加服务器硬件配置或组建服务器集群
4.物理内存使用满时会发生的问题
- 情况一:
未启用swap分区,导致系统触发OOM,杀掉一或多个进程来释放内存,造成不好影响,用户无法访问,进程挂了,通过系统日志查看OOM触发信息
- 情况二:
启用了swap分区(物理内存不足,将内存中数据交换到swap分区处理),由于swap分区本身借助硬盘,性能比内存差几到几十倍,会降低系统处理性能,导致处理慢
目前企业中多关闭swap分区提高性能,需及时监控物理内存,不足时通过人工处理一些进程,或迁移个别服务至别的服务器,保证物理内存资源充足,方便调用