CentOS系统资源管理指南
使用top(按%CPU排序)、htop(更直观的实时监控)、vmstat 1(查看CPU上下文切换、空闲率)、mpstat -P ALL 1(查看每个CPU核心的使用率)等命令,实时掌握CPU负载及进程占用情况。
-20最高,19最低),例如nice -n 10 ./script.sh(降低脚本优先级,避免占用过多CPU)。renice 15 -p 1234(将PID为1234的进程优先级调整为15)。cpulimit -l 50 -p 1234,限制PID为1234的进程最多使用50%的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
使用taskset命令将进程绑定到特定CPU核心,减少上下文切换,例如taskset -c 0,1 ./app(将app进程绑定到CPU 0和1)。
修改/etc/sysctl.conf文件,优化CPU相关参数:
vm.swappiness=10 # 减少对Swap的依赖(默认30,值越小越优先使用物理内存)
net.ipv4.tcp_syncookies=1 # 防止SYN Flood攻击,提升网络性能
kernel.sched_min_granularity_ns=10000000 # 调整调度粒度,提升多核性能
执行sysctl -p使配置生效。
firewalld、postfix):systemctl stop firewalld && systemctl disable firewalld。worker_processes设为CPU核心数,MySQL的innodb_buffer_pool_size设为物理内存的70%~80%)。free -h:查看物理内存和Swap的使用情况(-h表示人类可读格式)。top:按%MEM排序,查看进程内存占用。/proc/meminfo:查看详细内存信息(如MemTotal、MemFree、Buffers、Cached)。修改/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使配置生效。
echo 1 > /proc/sys/vm/drop_caches。echo 2 > /proc/sys/vm/drop_caches。echo 3 > /proc/sys/vm/drop_caches(生产环境慎用,避免影响性能)。catalina.sh中的JAVA_OPTS,例如-Xms512m -Xmx1024m(初始堆512MB,最大堆1024MB)。innodb_buffer_pool_size:设为物理内存的70%~80%(如innodb_buffer_pool_size=4G),提升数据库缓存效率。通过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
valgrind工具检测应用程序的内存泄漏(如valgrind --leak-check=full ./app)。df -h:查看磁盘分区的使用情况(-h表示人类可读格式)。du -sh /path/to/dir:查看指定目录的大小(如du -sh /var/log查看日志目录大小)。iostat -x 1:查看磁盘的I/O使用率、读写延迟等指标(需安装sysstat包)。rm -rf /tmp/*(谨慎操作,避免删除正在使用的文件)。yum list installed | grep -i "unused" | awk '{print $1}' | xargs yum remove -y(删除未使用的软件包)。logrotate(自动轮转日志,避免日志过大),或手动清空旧日志(如> /var/log/messages)。fdisk /dev/sdX(如fdisk /dev/sdb)创建新分区:
n创建新分区;p主分区,e扩展分区);+100G);w保存并退出。mkfs.ext4 /dev/sdb1(ext4文件系统)或mkfs.xfs /dev/sdb1(XFS文件系统,适合大容量磁盘)。mkdir /mnt/newdisk。mount /dev/sdb1 /mnt/newdisk。/etc/fstab文件,添加一行:/dev/sdb1 /mnt/newdisk ext4 defaults 0 0
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(调整文件系统大小)。限制用户或用户组的磁盘使用空间,防止个别用户占用过多空间:
/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)。