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:查看指定目錄的大?。ㄈ?code>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擴展分區);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)。