要解决系统资源占用高问题,需先明确是CPU、内存、磁盘I/O还是网络导致的瓶颈,常用工具如下:
top(按P键按CPU排序)、htop(更直观的进程监控)或pidstat -u 1(每秒刷新CPU使用率)查看占用最高的进程;free -h查看内存使用率(若available内存不足则需优化),top(按M键按内存排序)或vmstat 1(监控内存交换情况);iostat -x 1查看磁盘的%util(利用率,接近100%则瓶颈)、await(平均等待时间)指标,或iotop(监控进程级磁盘I/O);iftop(查看实时网络流量)、nload(监控带宽使用)或ss -s(查看连接数)定位。定期清理/tmp(临时文件)、/var/log(日志文件,可用logrotate配置自动轮转)中的旧文件,避免磁盘空间耗尽导致性能下降。例如:
# 清理/tmp下超过7天的文件
find /tmp -type f -mtime +7 -delete
# 清理/var/log下超过30天的.log文件
find /var/log -name "*.log" -mtime +30 -delete
禁用不使用的系统服务(如postfix邮件服务、firewalld防火墙(若用iptables替代)、NetworkManager(若用传统网络配置)),减少后台进程的资源消耗:
# 查看服务状态
systemctl list-unit-files --type=service
# 禁用并停止服务(以firewalld为例)
systemctl disable firewalld
systemctl stop firewalld
编辑/etc/sysctl.conf文件,添加或修改以下参数(优化后执行sysctl -p生效):
vm.swappiness=10(默认60,值越低越优先使用物理内存);net.ipv4.tcp_tw_reuse=1(允许重用TIME-WAIT状态的连接)、net.ipv4.tcp_fin_timeout=30(缩短TIME-WAIT状态的超时时间);net.ipv4.ip_local_port_range="1024 65535"(扩大可用端口范围,避免连接数耗尽)。若“Dolphin”指DolphinScheduler(常见于大数据场景),可从配置、调度、资源三方面优化:
根据作业类型(如MapReduce、Spark)合理分配CPU(task.cpu)、内存(task.memory)资源,避免过度分配(如小作业分配过多内存)或不足(导致任务排队)。
通过priority参数(如HIGH、MEDIUM、LOW)区分关键作业与非关键作业,确保核心任务优先获取资源。
减少不必要的作业依赖(如串行任务改为并行),避免因前置任务延迟导致后续任务等待,提升整体执行效率。
对频繁访问的数据库表或文件启用缓存(如Redis),减少重复查询次数,降低数据库压力。
将日志记录、状态更新等非实时操作改为异步(如使用消息队列),避免阻塞主流程。
若软件优化后仍存在瓶颈,可考虑硬件升级: