星途物语 星途物语
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)

星途物语

尚记时,记之
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)
  • 随手记录

    • QPS优化记录
    • 阿里云SLB演示
    • DDOS预防
    • Linux内核优化
    • rsync同步守护进程
    • NFS文件同步
    • Tomcat升级
    • 编译安装mysql后添加到systemd管理
    • 防火墙笔记
    • python自动化巡检服务器
  • 故障处理

    • 处理防MIME攻击后出现的问题解决
  • MySQL学习笔记

    • MySQL5.7安装
    • MySQL常用操作语句
    • MySQL主从架构实施
    • MySQL主主架构实施
    • MySQL MHA高可用实施
    • MyCat读写分离
    • MySQL创建用户时的授权
    • MySQL备份
    • MySQL通配符
  • Nginx学习笔记

    • 状态码含义
    • 匹配优先级
    • Nginx常用操作
    • 添加第三方模块
    • 关于路径匹配
    • 转发和重写
    • 内置变量
    • Nginx配置文件结构
  • Tomcat学习笔记

    • 部署Tomcat
    • 修改发布目录
    • Tomcat调优
  • Redis学习笔记

    • 通过 tar.gz 包安装部署 redis
    • redis 配置文件
    • 哨兵集群
    • redis常用命令
    • 虚拟机安装 redis.tar.gz 遇到的问题
  • Ansible学习笔记

    • 部署和使用 ansible
    • ansible 自带的密码认证参数
    • 批量免密操作:批量分发公钥
    • 配置主机清单
    • ansible 小知识
    • 模块介绍
    • 剧本
    • 一键部署 rsync 环境
    • 批量安装一个tomcat
    • 批量安装一个nginx
    • 批量安装 zabbix-agent
  • Zabbix学习笔记

    • 部署 zabbix 服务端、客户端
    • 自定义监控
    • 触发器
    • 监控项类型
    • 简单检查模式
    • zabbix web 界面结构信息
    • 邮件报警
    • 微信报警
    • snmp 监控网络设备
    • 部署 zabbix 服务端、客户端
    • jmx 监控 java 应用
    • ipmi 监控硬件
    • 自动化注册
    • 监控项的主要项和相关项
    • percona 监控 mysql
  • Git学习笔记

    • 配置 git
    • 常用命令
  • GitLab学习笔记

    • 环境准备
    • 安装 gitlab
    • gitlab 忘记 root 管理员密码的处理办法
  • Jenkins学习笔记

    • 安装部署
    • jenkins 使用脚本完成项目构建
    • jenkins 自动构建最新项目
    • 将 jenkins 自动部署的结果返回给 gitlab
    • jenkins 上线 java 项目
    • jenkins pipeline
  • Docker学习笔记

    • 安装 docker
    • 配置 docker 源
    • docker 中的常见名词
    • 镜像管理命令
    • 容器管理命令
    • 创建容器
    • 数据卷
    • docker network
    • 搭建 LNMP
    • Dockerfile
    • Dockerfile 搭建 tomcat
    • docker 镜像磁盘扩容
    • docker composer
    • Harbor 私有镜像仓库
    • docker 面试题
    • docker desktop 运行时与虚拟机冲突
    • docker离线安装
  • Nexus学习笔记
  • Prometheus学习笔记

    • 核心组件
    • 工作原理
    • 安装和配置
    • 启动 Prometheus
    • PromQL 使用
    • 数据模型
    • Exporter
    • 演示服务
    • Grafana 数据可视化
    • Prometheus 告警
  • Kubernetes学习笔记

    • K8S的介绍
    • K8S集群环境的搭建
    • K8S资源管理
    • K8S的实战入门
  • 运维
  • 随手记录
星途物语
2025-01-01

Linux内核优化

1.文件描述符限制

注意,此参数不能完全代替用户级别的 nofile 配置,后者仍需在 /etc/security/limits.conf 中进行设置。

fs.file-max = 2097152:设置系统级别的最大文件描述符数量(file-max),用于限制整个系统中打开的文件数量上限。较高的文件描述符限制可以支持更多并发连接和进程,特别适合高并发场景下的服务。

2.网络参数优化

net.ipv4.tcp_syncookies = 1:启用 SYN Cookie 机制,以防止 SYN Flood 攻击。当半连接队列(SYN 队列)满时,服务器会使用加密的 Cookie 来验证连接请求的有效性,防止大量伪造的连接请求导致资源耗尽。 net.ipv4.tcp_tw_reuse = 1:启用重用 TIME-WAIT 状态下的连接。启用该选项可以在服务器上迅速重用处于 TIME-WAIT 状态的端口,适合短时间内大量连接的高并发场景。 net.ipv4.tcp_tw_recycle = 1:快速回收 TIME-WAIT 连接。这个选项加快了 TIME-WAIT 状态下连接的回收速度,可以减少占用的系统资源。但在 NAT(网络地址转换)环境中可能导致问题,因此该设置要慎重使用。 net.ipv4.tcp_fin_timeout = 15:缩短 TCP 连接的 FIN-WAIT 状态等待时间,默认值通常较高(60 秒)。通过缩短此时间,可以加速资源的回收,适合高并发、频繁连接的应用场景。 net.core.somaxconn = 4096:设置全连接队列的最大长度,控制服务器的最大连接能力。增大该值有助于处理大量同时发起的连接请求。

3.TCP 缓冲区大小

net.ipv4.tcp_rmem = 4096 87380 16777216:设置 TCP 接收缓冲区大小。该值以三段式(最小值、默认值、最大值)指定。当系统的带宽或数据流量较大时,可以增大最大值以提升数据接收能力。 net.ipv4.tcp_wmem = 4096 65536 16777216:设置 TCP 发送缓冲区大小,同样为三段式配置。增大最大值可以在网络繁忙时提高发送性能。 net.core.rmem_max = 16777216:指定接收缓冲区的最大值,允许接收更大的数据包,减少拥塞带来的延迟。 net.core.wmem_max = 16777216:指定发送缓冲区的最大值,可以提高在高并发场景下的网络吞吐量和稳定性。

4.Swap 性能调整

vm.swappiness = 10:控制内存和 Swap 交换分区的使用倾向。值越小,系统越倾向于使用物理内存而非 Swap。通常设置为 10 左右,有助于在系统内存充足时减少对 Swap 的依赖,避免性能下降。 vm.dirty_ratio = 20:设置内存中脏页的比例上限,当脏页达到该比例时,系统会将其写回磁盘。降低这个比例有助于加速数据写入,减少内存占用。 vm.dirty_background_ratio = 10:设置后台写入的阈值比例,超过此比例时会自动触发后台写入。较低的比例有助于降低大数据写入时对系统性能的影响。

5.网络核心安全设置

net.ipv4.ip_forward = 0:禁用 IP 转发功能,防止服务器充当路由器。适合没有路由需求的服务器应用环境,提升安全性。 net.ipv4.icmp_echo_ignore_all = 1:禁用对所有 ICMP 请求的响应(如 ping 请求)。这样可以防止服务器响应 ICMP 攻击或被扫描探测,增强安全性。

6.半连接和全连接优化

net.ipv4.tcp_max_syn_backlog = 1024:设置半连接队列的长度上限,控制服务器在建立连接三次握手过程中可同时保持的未完成连接数量。较高的值可以提高处理并发请求的能力,适合高并发服务器。 net.core.somaxconn = 1024:限制全连接队列的长度上限,用于存放已经完成三次握手等待应用程序处理的连接请求。增大该值可以避免高并发情况下因队列溢出导致的连接丢失。

7.配置演示

完成以上配置后,使用以下命令使其生效:sysctl -p

这些参数调整综合作用于系统的资源分配、网络性能、安全性和连接稳定性,能够有效优化系统在高并发和重负载环境下的表现。

# 1. 文件描述符限制(仍需在 limits.conf 中配置,不支持在 sysctl.conf 中设置)
需在 /etc/security/limits.conf 中设置:
soft nofile 102400
hard nofile 102400
fs.file-max = 2097152

# 2. 网络参数优化
net.ipv4.tcp_syncookies = 1                # 启用 SYN Cookie 防止洪泛攻击
net.ipv4.tcp_tw_reuse = 1                   # 重用 TIME-WAIT 连接
net.ipv4.tcp_tw_recycle = 1                 # 快速回收 TIME-WAIT 连接
net.ipv4.tcp_fin_timeout = 15               # 缩短 FIN_WAIT 超时时间
net.core.somaxconn = 4096                   # 增加最大连接队列长度

# 3. TCP 缓冲区大小
net.ipv4.tcp_rmem = 4096 87380 16777216     # TCP 读取缓冲区
net.ipv4.tcp_wmem = 4096 65536 16777216     # TCP 写入缓冲区
net.core.rmem_max = 16777216                # 接收缓冲区最大值
net.core.wmem_max = 16777216                # 发送缓冲区最大值

# 4. Swap 性能调整
vm.swappiness = 10                          # 降低 Swap 使用倾向
vm.dirty_ratio = 20                         # 内存中脏页上限比例
vm.dirty_background_ratio = 10              # 内存中脏页达到比例时写回磁盘

# 5. 网络核心安全设置
net.ipv4.ip_forward = 0                     # 禁用 IP 转发
net.ipv4.icmp_echo_ignore_all = 1           # 禁用对 ICMP 响应

# 6. 半连接和全连接优化
net.ipv4.tcp_max_syn_backlog = 1024  # 根据需求调整,默认值在128~256之间
net.core.somaxconn = 1024  # 设置全连接队列长度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

sysctl -p

#随手记录
DDOS预防
rsync同步守护进程

← DDOS预防 rsync同步守护进程→

Theme by Vdoing | Copyright © 2025-2025 | 鄂ICP备2024086820号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式