CentOS系统如何进行资源管理
导读:CentOS系统资源管理指南 一、CPU资源管理 1. 监控CPU使用情况 使用top(按%CPU排序)、htop(更直观的实时监控)、vmstat 1(查看CPU上下文切换、空闲率)、mpstat -P ALL 1(查看每个CPU核心的使...
CentOS系统资源管理指南
一、CPU资源管理
1. 监控CPU使用情况
使用top
(按%CPU
排序)、htop
(更直观的实时监控)、vmstat 1
(查看CPU上下文切换、空闲率)、mpstat -P ALL 1
(查看每个CPU核心的使用率)等命令,实时掌握CPU负载及进程占用情况。
2. 调整进程优先级
- nice命令:启动进程时设置优先级(
-20
最高,19
最低),例如nice -n 10 ./script.sh
(降低脚本优先级,避免占用过多CPU)。 - renice命令:修改已运行进程的优先级,例如
renice 15 -p 1234
(将PID为1234的进程优先级调整为15)。
3. 限制进程CPU使用
- cpulimit工具:限制进程的CPU使用率(如
cpulimit -l 50 -p 1234
,限制PID为1234的进程最多使用50%的CPU)。 - cgroups(控制组):通过内核功能精细化控制CPU资源,例如:
yum install libcgroup-tools # 安装cgroups工具 cgcreate -g cpu:/limited_group # 创建名为limited_group的cgroup echo 50000 > /sys/fs/cgroup/cpu/limited_group/cpu.cfs_quota_us # 限制为50% CPU(假设cfs_period_us为100000) echo < PID> > /sys/fs/cgroup/cpu/limited_group/tasks # 将进程加入cgroup
4. 优化CPU亲和性
使用taskset
命令将进程绑定到特定CPU核心,减少上下文切换,例如taskset -c 0,1 ./app
(将app进程绑定到CPU 0和1)。
5. 调整内核参数
修改/etc/sysctl.conf
文件,优化CPU相关参数:
vm.swappiness=10 # 减少对Swap的依赖(默认30,值越小越优先使用物理内存)
net.ipv4.tcp_syncookies=1 # 防止SYN Flood攻击,提升网络性能
kernel.sched_min_granularity_ns=10000000 # 调整调度粒度,提升多核性能
执行sysctl -p
使配置生效。
6. 优化服务与应用程序
- 关闭不必要的服务(如
firewalld
、postfix
):systemctl stop firewalld & & systemctl disable firewalld
。 - 调整服务配置(如Nginx的
worker_processes
设为CPU核心数,MySQL的innodb_buffer_pool_size
设为物理内存的70%~80%)。
二、内存资源管理
1. 监控内存使用情况
free -h
:查看物理内存和Swap的使用情况(-h
表示人类可读格式)。top
:按%MEM
排序,查看进程内存占用。/proc/meminfo
:查看详细内存信息(如MemTotal
、MemFree
、Buffers
、Cached
)。
2. 调整内核内存参数
修改/etc/sysctl.conf
文件,优化内存管理:
vm.swappiness=10 # 减少Swap使用(当物理内存充足时,设为10~20)
vm.vfs_cache_pressure=50 # 增加inode/dentry缓存的回收倾向(默认100,值越大回收越积极)
vm.dirty_ratio=10 # 当脏页占物理内存10%时,触发写回磁盘
vm.dirty_background_ratio=5 # 当脏页占物理内存5%时,后台进程开始写回
执行sysctl -p
使配置生效。
3. 清理内存缓存
- 清理Page Cache(页面缓存):
echo 1 > /proc/sys/vm/drop_caches
。 - 清理目录项和Inode缓存:
echo 2 > /proc/sys/vm/drop_caches
。 - 清理所有缓存:
echo 3 > /proc/sys/vm/drop_caches
(生产环境慎用,避免影响性能)。
4. 优化应用程序内存使用
- 调整Java应用(Tomcat)的JVM堆内存:修改
catalina.sh
中的JAVA_OPTS
,例如-Xms512m -Xmx1024m
(初始堆512MB,最大堆1024MB)。 - 调整MySQL的
innodb_buffer_pool_size
:设为物理内存的70%~80%(如innodb_buffer_pool_size=4G
),提升数据库缓存效率。
5. 使用cgroups限制内存
通过cgroups限制进程组的内存使用,防止内存泄漏导致系统崩溃:
cgcreate -g memory:/memory_limited # 创建内存限制cgroup
echo 2G >
/sys/fs/cgroup/memory/memory_limited/memory.limit_in_bytes # 限制为2GB
echo <
PID>
>
/sys/fs/cgroup/memory/memory_limited/tasks # 将进程加入cgroup
6. 处理内存泄漏
- 使用
valgrind
工具检测应用程序的内存泄漏(如valgrind --leak-check=full ./app
)。 - 定期重启长期运行的服务(如Redis、MySQL),释放内存。
三、磁盘资源管理
1. 监控磁盘使用情况
df -h
:查看磁盘分区的使用情况(-h
表示人类可读格式)。du -sh /path/to/dir
:查看指定目录的大小(如du -sh /var/log
查看日志目录大小)。iostat -x 1
:查看磁盘的I/O使用率、读写延迟等指标(需安装sysstat
包)。
2. 清理磁盘空间
- 清理临时文件:
rm -rf /tmp/*
(谨慎操作,避免删除正在使用的文件)。 - 删除无用软件包:
yum list installed | grep -i "unused" | awk '{ print $1} ' | xargs yum remove -y
(删除未使用的软件包)。 - 清理日志文件:
logrotate
(自动轮转日志,避免日志过大),或手动清空旧日志(如> /var/log/messages
)。
3. 磁盘分区与格式化
- 使用
fdisk /dev/sdX
(如fdisk /dev/sdb
)创建新分区:- 输入
n
创建新分区; - 选择分区类型(
p
主分区,e
扩展分区); - 设置分区大小(如
+100G
); - 输入
w
保存并退出。
- 输入
- 格式化分区:
mkfs.ext4 /dev/sdb1
(ext4文件系统)或mkfs.xfs /dev/sdb1
(XFS文件系统,适合大容量磁盘)。
4. 挂载与自动挂载
- 创建挂载点:
mkdir /mnt/newdisk
。 - 挂载分区:
mount /dev/sdb1 /mnt/newdisk
。 - 设置开机自动挂载:编辑
/etc/fstab
文件,添加一行:/dev/sdb1 /mnt/newdisk ext4 defaults 0 0
5. 使用LVM管理磁盘空间
LVM(逻辑卷管理)提供动态调整磁盘空间的能力,适合需要灵活扩展的场景:
- 创建物理卷:
pvcreate /dev/sdb1
。 - 创建卷组:
vgcreate vg_data /dev/sdb1
。 - 创建逻辑卷:
lvcreate -L 50G -n lv_data vg_data
(创建50GB的逻辑卷lv_data
)。 - 格式化并挂载:
mkfs.ext4 /dev/vg_data/lv_data
,mount /dev/vg_data/lv_data /mnt/datadir
。 - 扩展逻辑卷:若磁盘有剩余空间,可
lvextend -L +20G /dev/vg_data/lv_data
(扩展20GB),然后resize2fs /dev/vg_data/lv_data
(调整文件系统大小)。
6. 磁盘配额管理
限制用户或用户组的磁盘使用空间,防止个别用户占用过多空间:
- 启用配额:编辑
/etc/fstab
,在挂载选项中添加usrquota,grpquota
(如/dev/sdb1 /mnt/newdisk ext4 defaults,usrquota,grpquota 0 0
),然后mount -o remount /mnt/newdisk
。 - 初始化配额数据库:
quotacheck -cug /mnt/newdisk
。 - 启用配额:
quotaon /mnt/newdisk
。 - 设置用户配额:
edquota -u username
(编辑用户的磁盘限额,如blocks
(硬限制)设为10GB,soft
(软限制)设为8GB)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS系统如何进行资源管理
本文地址: https://pptw.com/jishu/721067.html