在CentOS操作系统中,内存占用情况的监控和管理是系统性能优化的重要环节,了解和掌握如何查看和分析内存使用情况,对于确保系统稳定运行、提高应用性能具有重要意义,以下是一些常用的方法和工具,用于查看CentOS服务器的内存占用情况:
一、free命令
free
命令是Linux系统中最常用的查看内存使用情况的命令之一,它可以显示系统的物理内存和交换内存的使用情况。
基本用法
free [选项]
常用选项
b
:以字节为单位显示内存使用情况。
k
:以KB为单位显示内存使用情况(默认选项)。
m
:以MB为单位显示内存使用情况。
g
:以GB为单位显示内存使用情况。
t
:在输出的最后一行显示总内存使用情况。
s <间隔时间>
:周期性地显示内存使用情况,间隔时间为指定的秒数。
c <次数>
:指定周期性显示内存使用情况的次数。
h
:以人类可读的方式显示内存使用情况,将数字转换为易于理解的单位(GB、MB、KB等)。
示例
以人类可读的方式显示内存使用情况 free h
输出示例如下:
total used free shared buff/cache available Mem: 7.8G 1.6G 5.5G 256M 413M 6.3G Swap: 0B 0B 0B
解释:
total
:总物理内存
used
:已经使用的内存
free
:没有使用的内存
shared
:多进程共享内存
buff/cache
:读写缓存内存
avAIlable
:应用程序可用的物理内存
二、top命令
top
命令是Linux系统中另一个非常强大的工具,用于实时监控系统的资源使用情况,包括CPU、内存、交换分区的使用情况,以及各个进程的详细信息。
基本用法
top [选项]
常用选项
d seconds
:设置top命令的刷新间隔时间,默认为3秒。
u username
:只显示指定用户名的进程信息。
p pid
:只显示指定进程ID的信息。
n iterations
:设置top命令的循环次数,即显示的次数。
s field
:按指定字段对进程进行排序,默认按CPU使用率排序,可选字段包括pid、user、pr、ni、virt、res、shr、s、%cpu、%mem、time+、time、command。
o field
:按指定字段对进程进行排序,与s参数不同的是,o参数可同时指定多个字段进行排序。
c
:显示完整的命令行信息。
示例
默认显示系统资源使用情况 top
按下“Shift + m”可以按照内存占用排序,按下“q”退出top命令。
三、ps命令
ps
命令用于显示当前系统的进程状态,提供了比top命令更为灵活的进程显示和过滤功能。
基本用法
ps [选项]
常用选项
a
:显示所有进程,包括其他用户的进程。
u
:以用户为主要输出格式,包括进程用户、进程ID、CPU使用率、内存占用等。
x
:显示没有控制终端的进程。
e
:显示所有进程。
f
:显示完整格式的进程信息。
o format
:自定义输出格式。
sort
:按照指定字段排序。
示例
按内存使用排序显示前5个进程 ps aux sort=rss | head n 5
输出结果将包含以下详细信息:
USER
:进程所属的用户
PID
:进程ID
%CPU
:%CPU占用率
%MEM
:%内存占用率
VSZ
:虚拟内存大小
RSS
:物理内存大小
TTY
:终端类型
四、htop命令
htop
是一个更加强大和易用的系统监控工具,可以实时查看系统的内存使用情况,并以图形化的方式显示。
安装方法
如果服务器没有安装htop,可以通过以下命令进行安装:
sudo yum install htop
使用方法
htop
在htop界面中,可以通过颜色直观地了解内存占用情况,按下“F6”可以按照不同的资源进行排序,按下“q”退出htop命令。
五、vmstat命令
vmstat
命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。
基本用法
vmstat [选项] [间隔时间] [次数]
常用选项
s
:显示统计摘要。
r
:显示内存相关统计信息。
n
:禁用名称解析。
a
:显示活动和非活动内存。
d
:显示磁盘相关统计信息。
p
:显示分页相关统计信息。
q
:显示队列相关统计信息。
w
:显示交换相关统计信息。
t
:显示跟踪标志。
示例
显示内存相关统计信息 vmstat r
输出示例如下:
procs memoryswapiosystemcpu r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 2097152 307200 1441920 0 0 32 128 30 15 0 0 0 0 0 0
解释:
procs
:进程数量。
memory
:内存使用情况。
swap
:交换分区使用情况。
io
:I/O操作统计。
system
:系统相关信息。
cpu
:CPU使用情况。
六、/proc/meminfo文件
查看/proc/meminfo
文件也是一种获取内存使用情况的方法,该文件列出了所有你想了解的内存的使用情况,进程的内存使用信息也可以通过/proc/<pid>/statm
和/proc/<pid>/status
来查看。
示例
cat /proc/meminfo | grep iE "HugePages_Total|Hugepagesize"
输出示例如下:
HugePages_Total: 1558 Hugepagesize: 2048 kB
解释:
HugePages_Total
:大页的总数量。
Hugepagesize
:每个大页的大小。
七、sar命令
sar
是一个系统性能分析工具,可以提供有关系统资源使用情况的详细信息。
基本用法
sar [选项] [间隔时间] [次数]
常用选项
u
:显示CPU使用情况。
r
:显示内存使用情况。
b
:显示I/O和传输速率。
q
:显示队列长度和平均等待时间。
v
:显示内核表格和任务信息。
d
:显示块设备活动。
n DEV
:显示网络接口流量。
W
:显示交换空间使用情况。
示例
显示内存使用情况的基本统计信息,如内存使用率、空闲内存等。 sar r
输出示例如下:
01:00:00 PM kbmemfree kbmemused %memused 01:10:00 PM 152000 648000 79.60 01:20:00 PM 152000 648000 79.60 Average: 152000K, 648000K 79.60%
解释:
kbmemfree
:空闲内存量(KB)。
kbmemused
:已使用内存量(KB)。
%memused
:内存使用率。
1、定期监控:建议定期使用上述工具监控CentOS服务器的内存使用情况,以便及时发现潜在的问题。
2、优化配置:根据监控结果,合理调整系统和应用的配置,以提高内存使用效率,调整MySQL等数据库的缓存设置,减少不必要的内存占用。
3、释放缓存:当发现cached区内存占用过高时,可以考虑手动释放缓存,但请注意,释放缓存可能会导致系统性能下降,因此应谨慎操作。
4、硬件升级:如果服务器内存长期处于高负荷状态,且无法通过优化配置解决,建议考虑升级硬件,增加物理内存。
5、日志记录:建议将重要的监控数据记录下来,以便后续分析和故障排查,可以使用脚本定期收集并存储这些数据。
6、自动化监控:为了减轻管理员的工作负担,可以考虑使用自动化监控工具(如Nagios、Zabbix等),实现对服务器资源的全面监控和管理。
7、文档记录:详细记录每次监控的结果和采取的措施,形成文档,便于后续参考和改进。