2团日志

Netty中LoggingHandler输出日志展示

1. 前言 Netty中提供了LoggingHandler,便于开发者快速定位网络事件。此处简单记录下一次PING-PONG的日志输出。 2. 服务端/客户端实现 2.1 服务端 public class TestServer { public static void main(Strin

2团 2团 Published on 2025-04-09

Netty中NioEventLoop#run()中wakeUp竟态问题解析

1. 前言 最近在看NioEventLoop#run()实现时,对如下注释产生了兴趣。 switch (selectStrategy.calculateStrategy(selectNowSupplier, hasTasks())) {

2团 2团 Published on 2025-04-08

Netty中SingleThreadEventLoop执行wakeUp的优化

看io.netty.util.concurrent.SingleThreadEventExecutor 代码时,发现执行execute() 方法时,会使用addTaskWakesUp标志判断是否需要唤醒线程。具体代码如下所示: @Override public void execut

2团 2团 Published on 2025-04-07

Netty执行Flush操作的写入优化

1. 前言 在近期研读芋道源码对Netty代码的解析过程中,其中提及Netty在执行写入操作时进行了优化处理。通常情况下,SocketChannel能够直接完成数据写入,但如果写入的数据量过大(如写入大文本文件)或者客户端读取能力较弱,就容易导致写入缓冲区溢出,进而造成数据丢失。 2. 优化方案 2

2团 2团 Published on 2025-04-03

访问百度地图API报Connection Reset错误跟踪

近期在新环境中部署项目,提前确认了出口流量未做限制。但在项目试运行时,发现访问百度地图API频繁出现“Connection Reset”错误。起初,我怀疑是新环境网络质量不佳,于是添加了重试策略(重试三次)以尝试解决,但重试后依然报错。 于是,我将这一情况上报给网络技术支撑人员。经排查,发现出口流量

2团 2团 Published on 2025-03-27

Connect系统调用分配偶数端口导致 F5 负载均衡失败的问题

1.前言 近期在某云上进行项目压测,预期建立20W的模拟长连接终端,项目方购置的SLB(基于F5实现)规格也是20W。在压测的过程中,发现连接数到10W以上就开始出现连接被拒绝的现象。SLB端的监控图如下(图中可知,连接数上限为10W左右): 2. 分析 查看F5监控日志,发现F5的部分哈希通道数满

2团 2团 Published on 2024-10-30

TCP内核参数在日常项目中的实践总结

1. 数据重传次数 以本人的阿里云主机为例,查询重传次数,具体如下: # sysctl -a |grep -E "tcp_retries|keepalive" net.ipv4.tcp_keepalive_intvl = 75 net.ipv4.tcp_keepalive_probes = 9 ne

2团 2团 Published on 2024-09-10

2024年阅读书单

1. 生活类 2.技术类 2.1 Nginx完全指南 本书可以从Nginx官网下载,书籍内容一直有积极更新。 本书可理解为Nginx的概要说明书,通读一遍可以串联起Nginx的相关知识点,要想深入了解功能点,仍需要翻阅Nginx的指令手册。

2团 2团 Published on 2024-08-16

TCP的半连接队列与全连接队列

1. 前言 近期看《理解了实现再谈⽹络性能》(作者:张彦飞,个人网站)一书,发现下图简洁明了的阐述了TCP的半连接队列与全连接队列的关系,故摘抄至本文做记录。 Linux主机上半连接以及全连接队列的长度均较为保守,这导致在瞬时高并发场景下(网站门户、物联网服务器等),如果队列满了,客户端在三次握手期

2团 2团 Published on 2024-08-15

HTTP的keepalive与TCP的keepalive区别

1. 前言 最近在浏览知乎的时候发现了这个问题,觉得很有趣,在此处记录一下。 借用小林coding的回答: HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制。 2.

2团 2团 Published on 2024-08-15