首页主机资讯CentOS系统如何进行资源管理

CentOS系统如何进行资源管理

时间2025-10-09 09:22:04发布访客分类主机资讯浏览1115
导读: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. 优化服务与应用程序

  • 关闭不必要的服务(如firewalldpostfix):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:查看详细内存信息(如MemTotalMemFreeBuffersCached)。

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)创建新分区:
    1. 输入n创建新分区;
    2. 选择分区类型(p主分区,e扩展分区);
    3. 设置分区大小(如+100G);
    4. 输入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_datamount /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
CentOS中env安全策略如何实施 CentOS中env权限设置要注意什么

游客 回复需填写必要信息