揭秘Linux内核参数:性能问题根源与优化实战 你有没有碰到过, 服务器运转一阵子后, 性能急剧下降、连接个数莫名其妙被耗尽、应用频繁出现内存溢出等奇怪问题, 很多情况下, 根源隐匿于Linux内核的某一个参数之中。一、怎么会需要去明白内核参数呢? 不清楚诸位有没有碰到过这个样子的状况:为何nginx进行配置时, 其连接上限确定为了 511 , 然在高并发状况下, 却仍旧存在许多连接遭遇被拒绝的情况呢?为什么内存还很充足系统就开始用swap导致性能骤降短连接服务运行了一段时间之后, 为什么会报出“端口耗尽”, 进而无法去建立新的连接呢?那些问题的答案, 全都隐匿于Linux内核参数之中。就在今天, 我会依据实际情形去讲讲那些运维必定得知晓的内核“开关”。二、内核中网络相关参数1. 半连接队列net.ipv4.作用 控制tcp半连接队列的最大长度适用的场景是, 服务器遭受了 syn flood 攻击, 或者在正常处于高并发的情况下, 有大量的连接滞留在了某状态 , 对吧。典型症状 运行以下指令, 数值一直居高不下, 普通用户连接超时, 建立连接失败。netstat -ant | grep SYN_RECV | wc -l如何设置 #查看当前cat /proc/sys/net/ipv4/tcp_max_syn_backlog#临时调整重启失效echo 2048 /proc/sys/net/ipv4/tcp_max_syn_backlog#永久生效echonet.ipv4.tcp_max_syn_backlog 2048 /etc/sysctl.confsysctl -p通常情形下, 此参数需跟 net.core. 一同运用, 提议设置成大约 的两倍。2. 全连接队列net.core.作用是, 对tcp已完成三次握手的全连接队列最大长度予以控制, 它属于线上极易踩坑这类情况, 还是内核参数当中的一个。默认值 128对高并发的web服务器来说严重偏小典型症状 #增大到65535echo 65535 /proc/sys/net/core/somaxconnRecv-Q 已建立连接但尚未被应用层 取走的数量。3. time-wait复用net.ipv4.作用是, 复用处于 time - wait 状态的, 以此来解决短连接端口耗尽的问题。其所适用的场景为, api网关, 以及反向代理, 还有微服务短连接架构, 会产生数量众多的time - wait连接。症状 netstat -ant | grep TIME_WAIT | wc -l客户端出现这种在使用中的报错情况, 是因为数量达到了几千, 甚至达到了上万, 致使服务器本地端口被耗尽。配置要求一定要同时将时间戳开启, 全新的内核要彻底把它废弃掉, 绝对禁止再继续使用它。#需要同时开启tcp_timestampsecho 1 /proc/sys/net/ipv4/tcp_timestampsecho 1 /proc/sys/net/ipv4/tcp_tw_reuse三、内存篇OOM与性能的平衡术 4. 交换倾向vm.最大的误区 以为设为0就是最好的作用 控制内核使用swap的倾向程度0-100核心真相 业务方面的建议数值, 具体而言, 需要开发人员依据业务的实际状况来予以确定, 这是默认的推荐数值:#查看当前值cat /proc/sys/vm/swappiness#数据库服务器建议echo 10 /proc/sys/vm/swappiness5. 内存分配策略vm.三种模式的通俗解释0默认 启发式检查1总是允许 2严格检查 redis的推荐配置 echo 1 /proc/sys/vm/overcommit_memory普通的业务java程序保存默认0即可。6. 脏页控制vm. 和 vm.io先搞清楚两个概念 两个参数的区别 vm.io 比如10%vm. 比如20%典型问题 在数据库进行大批量更新之际, 以及消息队列写入之时, 业务忽然毫无征兆地卡顿了长达十几秒, 然而磁盘IO的数值却并非处于高位, 究其实际情况从 root 查找原因就是触发了同步刷脏阈值, 就这一情况造成业务卡顿。写密集业务优化建议 #降低阈值早点开始刷echo 5 /proc/sys/vm/dirty_background_ratioecho 10 /proc/sys/vm/dirty_ratio四、文件篇磁盘IO的优化开关7. 文件句柄数fs.file-max有着这样一种情况, 即呈现出 “Too many open files” 这般的症状表现, 而此情况属于我们运维日常当中高频出现的故障里面的其中一个。系统级限制予以修改, 用户级限制也需修改, 并且用户级限制的优先级是更高的。1. 系统级限制 #查看当前限制cat /proc/sys/fs/file-max# 增加限制echo 1000000 /proc/sys/fs/file-max2. 用户级限制这个更重要一般就修改这个

相关新闻

最新新闻

AI+费曼学习法实践:本地部署LLM与ASR构建智能学习辅助系统

AI+费曼学习法实践:本地部署LLM与ASR构建智能学习辅助系统

这次我们来看一个很有意思的项目:“AI费曼学习法🍄有没有懂的来配个字幕”。这个项目不是传统的图像生成或语音克隆,而是将费曼学习法(一种高效的学习方法)与AI技术相结合,旨在辅助学习过程,特别…

2026/8/12 14:02:52
5分钟快速上手Dhizuku:Android设备权限管理的终极解决方案

5分钟快速上手Dhizuku:Android设备权限管理的终极解决方案

5分钟快速上手Dhizuku:Android设备权限管理的终极解决方案 【免费下载链接】Dhizuku A tool that can share DeviceOwner permissions to other application. 项目地址: https://gitcode.com/gh_mirrors/dh/Dhizuku 你是否曾经遇到过这样的困扰?某…

2026/8/12 14:02:52
Java自定义校验注解:从原理到实战,解决复杂业务校验难题

Java自定义校验注解:从原理到实战,解决复杂业务校验难题

1. 项目概述:为什么我们需要自定义校验注解? 在Java后端开发,尤其是Spring Boot项目中,数据校验是保证业务逻辑健壮性的第一道防线。我们最熟悉的莫过于 NotNull 、 Size 、 Email 这些JSR 303/380(Bean Validat…

2026/8/12 14:02:52
为UE5引擎集成C++26模块支持:从原理到实战的编译加速指南

为UE5引擎集成C++26模块支持:从原理到实战的编译加速指南

1. 项目概述:为什么我们需要一个支持C26模块的UE5引擎? 如果你和我一样,长期在UE5(Unreal Engine 5)的C项目里摸爬滚打,那么“编译等待”绝对是你开发体验中最大的痛点之一。一个中等规模的项目&#xff0c…

2026/8/12 14:02:52
Java入门实战:从环境搭建到核心语法与OOP思想

Java入门实战:从环境搭建到核心语法与OOP思想

1. 项目概述:为什么“Java入门”值得你投入时间? 如果你点开了这篇文章,大概率是刚刚对编程世界产生兴趣,或者正面临职业转型,而“Java”这个名字反复出现在你的视野里。作为一个在软件行业摸爬滚打了十多年的老码农&a…

2026/8/12 14:02:52
猫抓浏览器扩展:3分钟掌握网页资源嗅探与智能下载

猫抓浏览器扩展:3分钟掌握网页资源嗅探与智能下载

猫抓浏览器扩展:3分钟掌握网页资源嗅探与智能下载 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常在浏览网页时遇到心仪的视…

2026/8/12 13:57:52