在 CentOS 下提到 extract 配置优化,通常是指 日志采集(如 rsyslog / journald / filebeat / logstash) 或 压缩解压(tar/zip) 场景。下面我按最常见的几种情况分别说明,你可以对照使用;如果指的是某个具体软件(如 Elasticsearch、Logstash、Filebeat、rsyslog),可以再告诉我。
默认 rsyslog 会做大量字符串解析,影响性能。
# 关闭 DNS 反向解析(非常重要)
echo '$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat' >> /etc/rsyslog.conf
echo '$PreserveFQDN off' >> /etc/rsyslog.conf
module(load="imuxsock")
module(load="imjournal")
$WorkDirectory /var/lib/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName rsyslog_queue
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
✅ 防止日志丢失
✅ 提高并发吞吐
❌ 避免复杂正则
✅ 使用字段匹配而不是全文解析
if $programname == 'nginx' then /var/log/nginx/access.log
& stop
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
scan_frequency: 10s
harvester_buffer_size: 16384
queue.mem:
events: 4096
flush.min_events: 512
flush.timeout: 1s
processors:
- drop_fields:
fields: ["agent", "ecs"]
✅ 减少 CPU
✅ 减少磁盘 IO
yum install pigz -y
tar -I pigz -xf file.tar.gz
tar -xf file.tar.gz -C /fast_disk/
setenforce 0
vim /etc/elasticsearch/jvm.options
-Xms4g
-Xmx4g
"refresh_interval": "30s",
"number_of_replicas": 0
systemctl disable firewalld
systemctl stop firewalld
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo 'fs.file-max=1000000' >> /etc/sysctl.conf
sysctl -p
| 场景 | 优化重点 |
|---|---|
| 日志量大 | rsyslog 队列 + 规则精简 |
| CPU 高 | 减少正则 / 减少字段 |
| IO 高 | 换 SSD / 解压到 tmpfs |
| 丢日志 | rsyslog 队列 + disk assistant |
你可以直接告诉我:
我可以给你一套 精准配置方案(可直接复制使用)。