溫馨提示×

CentOS系統如何進行資源管理

小樊
49
2025-10-09 06:17:24
欄目: 智能運維

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:查看指定目錄的大?。ㄈ?code>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. 設置分區大?。ㄈ?code>+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_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)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女