Linux性能优化原理和实战
文章平均质量分 85
Linux性能问题汇总,帮助开发,测试,运维同学熟悉性能优化的方方面面,提高大家排查问题的能力。升职加薪必备技能。
大崔的Linux导航
运维工程师,全栈开发,后端使用过C#,PHP,Python,Golang,前端使用JQuery,Vue,微信小程序。乐于分享一些运维和开发,Linux性能优化思路和工具等相关的内容。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HTTP协议:常见状态码(400/500 系列)
这份文档专门整理了 HTTP 协议里的 400 和 500 两类常见报错码,把每个报错码的具体意思、实际工作中会碰到的场景都讲清楚了,不管是开发、运维还是前端对接接口的人,都能靠它快速找到问题根源。400 系列状态码表示客户端的请求存在语法错误、权限问题或资源不存在等问题,导致服务器无法正常处理请求,错误根源通常在客户端侧。500 系列状态码表示服务器在处理合法请求的过程中发生异常,错误根源通常在服务器侧,与客户端请求的合法性无关。原创 2025-12-04 17:17:33 · 1770 阅读 · 0 评论 -
网络性能测试工具 - netperf
netperf是一款专注于网络性能测试的开源工具,核心用于测量TCP和UDP协议在不同网络场景下的吞吐量、延迟等关键指标。清单会包含吞吐量、延迟测试等典型场景的命令示例,以及关键参数的说明,方便你直接复制使用。要不要我帮你整理一份。原创 2025-10-27 22:24:27 · 716 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_tcp_timeout_established
参数作用:控制已建立 TCP 连接在 conntrack 表中的最大空闲时间。调优原则根据应用特性设置合理超时(通常 30 分钟到 8 小时)确保与应用层超时参数匹配高并发场景下优先缩短超时以释放资源监控建议:# 查看当前 ESTABLISHED 连接数量conntrack -L -s <源IP> | grep ESTABLISHED | wc -l# 监控 conntrack 内存使用合理配置是优化网络性能和资源利用率的重要步骤。原创 2025-07-11 13:14:01 · 1403 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_buckets
参数作用:控制连接跟踪哈希表的大小,影响查找效率和内存使用。调优原则保持buckets与的合理比例(1:4 到 1:2)高并发场景下增加比例以提升性能通过监控哈希表负载监控重点:关注哈希表的负载因子和冲突次数,避免性能瓶颈。合理配置是优化高并发网络环境的重要步骤。原创 2025-07-11 13:10:02 · 946 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
参数作用:控制连接跟踪表的最大条目数,直接影响防火墙和 NAT 的并发处理能力。调优原则根据并发连接数和内存容量合理设置保持使用率 < 80%,避免表满导致丢包结合超时参数优化内存使用监控重点:通过实时监控使用率。合理配置是保障高并发网络环境稳定运行的关键步骤。原创 2025-07-11 13:06:45 · 1379 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.default_qdisc
默认选择:推荐使用fq_codel,它能自动优化大多数网络场景的延迟和公平性。特殊需求:根据具体网络环境(如企业限速、多队列网卡)选择其他 qdisc。监控优化:定期检查网络性能,必要时调整配置。原创 2025-07-11 12:52:55 · 1373 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_congestion_control
首选 BBR:在大多数场景下,BBR 提供最佳的延迟和吞吐量平衡DCTCP 专用:仅在数据中心内部且网络设备支持 ECN 时使用传统网络:若 BBR 不适用,默认 Cubic 是安全选择合理配置拥塞控制算法可显著提升网络性能,建议根据实际网络环境进行测试和选择。原创 2025-07-11 12:50:10 · 2017 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_intvl
可以在快速发现失效连接和减少系统开销之间取得平衡,尤其适合需要长时间维持大量连接的服务器应用(如 Web 服务器、数据库连接池)。TCP Keep-Alive 是一种检测长时间空闲连接是否仍然有效的机制。当连接处于空闲状态超过。是 Linux 内核中的一个 TCP 参数,用于控制。,但在不同场景下可能需要调整。总探测时间 = 3×15 =总探测时间 = 5×60 =,适合快速发现失效连接。,平衡开销与检测速度。原创 2025-07-10 12:56:52 · 1242 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_probes
可以在快速发现失效连接和避免误判之间取得平衡,尤其适合需要长时间维持大量连接的服务器应用(如 Web 服务器、数据库连接池)。TCP Keep-Alive 是一种检测长时间空闲连接是否仍然有效的机制。如果连续发送这么多次探测包后仍未收到响应,内核会认为连接已断开,并关闭该连接。是 Linux 内核中的一个 TCP 参数,用于控制。总超时时间 = 1800 + (5×60) =总超时时间 = 300 + (3×15) =(默认 2 小时)后,TCP 会每隔。(默认 75 秒)发送一个保活探测包。原创 2025-07-10 12:54:17 · 885 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_time
TCP Keep-Alive 是一种检测长时间空闲连接是否仍然有效的机制。当连接处于空闲状态(双方没有数据传输)超过。原创 2025-07-10 12:50:06 · 1333 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_fin_timeout
如果在此时间内未收到被动关闭方的 FIN 包,连接将被强制关闭,释放系统资源。,可以平衡系统资源利用率和连接稳定性,尤其在处理海量连接的服务器上效果显著。是 Linux 内核中的一个 TCP 参数,用于控制。是主动关闭方在等待被动关闭方关闭连接的中间状态。,但在某些场景下可能需要调整。原创 2025-07-10 12:38:00 · 1509 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_max_orphans
在 TCP 通信中,“孤立连接”指的是已关闭或即将关闭,但仍占用系统资源的连接。半关闭连接:一方调用close()关闭写端,但仍可接收数据(如 HTTP 长连接的 keep-alive 状态)。等待超时的连接:处于TIME_WAITFIN_WAIT_1FIN_WAIT_2等状态的连接,等待超时后才能完全释放。应用程序异常退出:未正确关闭的连接(如进程崩溃)。原创 2025-07-10 12:33:17 · 916 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_moderate_rcvbuf
在 TCP 通信中,接收缓冲区用于临时存储从网络接收的数据,直到应用程序读取。如果过大,则可能浪费系统内存资源。是 Linux 内核中的一个 TCP 参数,用于控制接收缓冲区(Receive Buffer)的自动调整策略。这种机制特别适合处理大量并发连接的服务器(如 Web 服务器、负载均衡器),可以避免为每个连接预分配大量内存。当启用时,系统会根据连接的实际需求动态调整接收缓冲区大小,以平衡性能和内存使用。该参数是布尔值(0 或 1),默认值通常为。建议根据实际负载和内存资源进行测试后调整。原创 2025-07-10 12:28:27 · 1099 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_no_metrics_save
默认启用缓存(0):适合大多数场景,尤其是稳定网络中的短连接应用,可显著减少连接建立延迟;禁用缓存(1):适合网络变化频繁或安全性要求高的场景,确保连接初始化的保守性。实际部署时,需根据业务特性和网络环境权衡选择。例如,面向用户的Web服务通常保持默认,而移动客户端可考虑禁用缓存。原创 2025-07-09 12:49:51 · 1110 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_slow_start_after_idle
是平衡TCP连接稳定性与恢复速度默认启用(1):适合大多数网络环境,尤其是不稳定网络,可避免拥塞;禁用(0):适合稳定网络或对延迟敏感的应用,可减少空闲后的恢复时间。在实际部署中,需根据网络特性和应用需求权衡选择。例如,数据中心内部可禁用,而面向公共网络的服务建议保持默认。原创 2025-07-09 12:45:18 · 1398 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_dsack
是优化TCP拥塞控制的重要参数,默认启用(值为1)。通过让接收方明确告知发送方“哪些数据包已重复接收”,DSACK能帮助发送方区分真丢包和乱序,避免不必要的重传和拥塞窗口收缩,提升网络传输效率。在绝大多数情况下,保持默认启用(1)是最优选择;仅在极特殊的兼容或调试场景下,才考虑临时禁用(0)。原创 2025-07-09 12:39:01 · 1278 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_fack
是优化TCP拥塞控制的重要参数,默认启用(值为1)。通过结合SACK信息,FACK能更精确地识别丢包范围,优化重传策略,提升高丢包或高延迟网络中的传输效率。在绝大多数情况下,保持默认启用(1)是最优选择;仅在极特殊的兼容或调试场景下,才考虑临时禁用(0)。原创 2025-07-09 12:36:32 · 1289 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_sack
是控制TCP SACK功能的核心参数,默认启用(值为1)。SACK通过让接收方明确告知发送方“已接收的非连续数据块”,避免了传统TCP的“盲目重传”,显著提升了丢包场景下的传输效率。在绝大多数情况下,保持默认启用(1)是最优选择;仅在极特殊的兼容或调试场景下,才考虑临时禁用(0)。原创 2025-07-09 12:32:11 · 1371 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_ecn_fallback
是ECN功能的“兼容性保障开关”,默认启用(值为1)。它确保当ECN因网络环境不支持而失效时,TCP连接能自动降级为传统模式,避免连接中断。在大多数场景下,建议保持默认值1;仅在确认网络中所有设备均支持ECN时,可考虑设为0(但实际意义不大,反而可能降低兼容性)。原创 2025-07-09 12:27:36 · 869 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_ecn
是控制TCP协议是否使用ECN机制的关键参数,通过合理设置(如在兼容网络中设为1),可优化拥塞处理、降低延迟;若遇到兼容性问题,禁用(设为0)即可恢复传统的丢包拥塞控制方式。实际使用中需结合网络环境测试,选择最适合的配置。原创 2025-07-09 12:24:22 · 1083 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.ip_forward
简单来说,它决定了Linux主机是否能像路由器一样,将接收到的数据包从一个网络接口转发到另一个网络接口。,可以灵活配置Linux主机的网络角色,从单纯的终端设备转变为具备转发能力的网络节点。是一个关键的内核参数,用于控制。在Linux系统中,原创 2025-07-09 12:20:59 · 1455 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_syn_retries
是客户端侧控制 TCP 连接建立容错能力的核心参数,其取值需根据网络环境、业务重要性、应用架构核心原则:在“连接成功率”与“失败反馈速度”之间找到平衡;避免盲目调大:过多重试可能导致资源浪费和用户体验下降;需与应用层逻辑协同:确保内核重试机制与应用层超时、重试策略一致,避免冲突。原创 2025-07-08 12:50:38 · 1572 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_synack_retries
取值过大可能导致半连接队列拥堵,降低并发能力;取值过小可能在弱网络环境下增加连接失败概率;实际配置需结合业务场景(并发量、网络质量)、服务器资源及安全需求综合调整,并与等参数协同优化。原创 2025-07-08 12:45:53 · 1499 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_max_syn_backlog
业务场景(如高并发服务);系统资源(内存大小);关联参数(如somaxconn在面对突发连接请求或潜在 SYN 攻击时,配合 SYN Cookies 和队列监控能更有效地保障服务可用性。原创 2025-07-08 12:41:35 · 1913 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.ip_local_port_range
当客户端主动发起连接(如访问网页、API 调用等)时,系统会从这个范围中动态分配一个临时端口,作为本地端点的标识。是管理客户端临时端口的核心参数,合理配置对系统网络稳定性和并发能力至关重要。是一个非常重要的内核参数,用于指定。在 Linux 系统中,目录下的配置文件(如。原创 2025-07-07 13:07:28 · 1091 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_syncookies
而启用 SYN Cookies 功能后,当服务端的 SYN 队列满了之后,后续收到的 SYN 包不会被丢弃,而是会根据算法计算出一个 Cookie 值,这个 Cookie 包含了一些与连接相关的信息,如初始序列号等,并且不会在服务器端保存连接状态。当服务端接收到客户端的 ACK 报文时,通过将 ACK 报文减去 1 获取 Cookie,然后根据 Cookie 判断报文的合法性并重建连接状态,进而完成连接的建立,这样即使受到 SYN 攻击导致 SYN 队列满时,也能保证正常的连接可以成功建立。原创 2025-07-07 13:04:18 · 1271 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.ip_local_reserved_ports
预留过多端口会减少系统可自动分配的临时端口数量,可能导致高并发场景下“端口耗尽”(如大量出站连接失败)。范围内,可能被系统自动分配给临时连接,导致服务启动失败(提示“端口已占用”)。可有效避免端口冲突,保障服务稳定性,尤其适用于需要固定端口的服务器环境或复杂网络架构中。对于依赖特定端口的 legacy 系统(如老旧设备通信),预留端口可确保其正常运行。某些端口可能用于内部服务通信,不希望被外部临时连接占用,可通过预留限制其使用场景。系统调用)使用,避免被系统的临时端口分配机制占用。),但该端口恰好落在。原创 2025-07-07 13:01:15 · 1104 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.tcp_timestamps
是一个平衡性能与开销的关键参数,默认启用可适配大多数网络场景;仅在特定需求(如低开销、隐私保护)下才建议禁用,且需评估潜在风险。原创 2025-07-05 14:01:24 · 1592 阅读 · 0 评论 -
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
是解决TIME_WAIT连接累积问题的高效手段,尤其适合高并发短连接场景。启用时需结合等参数,并通过测试验证兼容性,避免对业务造成负面影响。原创 2025-07-05 13:11:22 · 1976 阅读 · 0 评论 -
【内存】Linux 内核优化实战 - net.ipv4.tcp_max_tw_buckets
是平衡系统资源与连接稳定性的关键参数,需根据业务类型(如高并发短连接)、系统配置(内存、端口)灵活调整,避免过大或过小导致服务异常。原创 2025-07-05 13:06:42 · 1238 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
是 Linux 内核中的一个网络参数,用于控制**流限制表(Flow Limit Table)**的大小。这个表主要用于限制网络流量中单个"流"(通常指来自同一源IP、端口到目标IP、端口的数据包序列)的资源占用,防止个别连接耗尽系统资源。如果需要针对特定场景(如 DDoS 防护、高并发 Web 服务)进一步优化,可以提供具体网络环境信息,我会给出更精准的建议。原创 2025-07-04 21:41:39 · 518 阅读 · 0 评论 -
【内存】Linux 内核优化实战 - kernel.numa_balancing
是 Linux 内核针对 NUMA 架构的自动优化开关,核心目标是减少远程内存访问。在多 NUMA 节点的系统中,若应用内存访问模式复杂且无手动优化,开启它通常能提升性能;反之,在单节点或手动优化场景下,关闭可能更合适。实际使用中需结合系统架构和应用特性,通过测试选择最佳配置。原创 2025-07-04 20:59:13 · 1580 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.netdev_budget_usecs
是控制 NAPI 轮询时间的关键参数,通过限制单次网络处理的最长耗时,平衡网络性能与系统整体响应性。在高流量或延迟敏感场景下,需结合共同配置,避免 CPU 资源过度占用,优化系统稳定性。原创 2025-07-02 12:59:23 · 546 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.busy_read
是优化 socket 数据读取延迟的关键参数,通过在用户态主动轮询减少系统调用开销。需结合及应用特性配置,平衡 CPU 消耗与延迟收益,适用于对实时性要求极高的场景。原创 2025-07-02 12:53:29 · 618 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.busy_poll
是平衡网络延迟与 CPU 开销的关键参数,适用于对实时性要求极高的场景。配置时需结合系统负载、网卡性能和应用需求,通过压力测试确定最优值,避免盲目启用导致资源浪费。原创 2025-07-02 12:50:30 · 378 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.core.netdev_budget
是平衡网络吞吐量与系统响应性的关键参数。调优时需根据业务特征(如流量大小、延迟敏感度)和硬件环境(如网卡队列数)动态调整,并与其他网络参数协同优化。建议通过性能监控工具验证调整效果,避免盲目增大参数导致系统整体性能下降。原创 2025-07-02 12:45:11 · 726 阅读 · 0 评论 -
Linux性能优化原理和实战 文章汇总【建议收藏】
💻 Linux性能优化原理和实战。原创 2025-07-01 13:07:09 · 982 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.neigh.default.gc_stale_time
是邻居表管理的关键参数,通过控制条目从“可达”到“过时”的时间,平衡网络稳定性与内存效率。调整时需结合网络环境的动态性(如设备迁移频率、连接数),在快速清理过时条目和降低内核开销之间寻找最优解。对于大多数场景,默认值已能满足需求,仅特殊环境(如云计算、高并发服务)需要针对性优化。原创 2025-07-01 12:43:21 · 960 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.conf.default.arp_announce
是控制默认接口 ARP 通告源 IP 的核心参数,其配置需根据网络拓扑(如单/多子网、是否存在集群)灵活调整。通常建议将其设为严格模式(值为2),以确保 ARP 通告的准确性,避免因源 IP 混乱导致的通信问题。对于特殊场景(如非对称路由),可降级为限制模式(值为1),但需避免使用默认模式(值为0)以降低安全风险。参数)时,该参数会作为默认策略生效。其核心作用是优化 ARP 通告的源 IP 选择,以适应多 IP 或多网卡环境下的网络通信需求。是 Linux 内核中的网络参数,用于控制。原创 2025-07-01 12:39:34 · 833 阅读 · 0 评论 -
【网络】Linux 内核优化实战 - net.ipv4.conf.all.rp_filter
是 Linux 网络安全的重要防线,通过合理配置可有效防范 IP 欺骗,同时需根据网络实际拓扑(如是否存在 NAT、多路径路由)调整策略模式,在安全性和网络连通性之间取得平衡。生产环境中建议优先使用严格模式(值为1),并结合具体场景优化配置。原创 2025-07-01 12:32:16 · 1608 阅读 · 0 评论
分享