你有同感吗?
当大家在开发服务端代码的时候,会不会经常有如下疑问?
- 纳闷 MySQL 连接池到底有多少连接?
- 每个连接的生命周期持续多久?
- 连接异常断开的时候到底是服务端主动断的,还是客户端主动断的?
- 当长时间没有请求的时候,底层库是否有 KeepAlive 请求?
复杂网络情况的处理从来都是后端开发的重点和难点之一,你是不是也为各种网络情况的调试而头顶发凉呢?
所以我写了 tproxy
当我在做后端开发和写 go-zero 的时候,经常会需要监控网络连接,分析请求内容。比如:
- 分析 gRPC 连接何时连接、何时重连,并据此调整各种参数,比如:MaxConnectionIdle
- 分析 MySQL 连接池,当前多少连接,连接的生命周期是什么策略
- 也可以用来观察和分析任何 TCP 连接,看服务端主动断,还是客户端主动断等等
tproxy 的安装
$ GOPROXY=https://goproxy.cn/,direct go install github.com/kevwan/tproxy@latest
或者使用 docker 镜像:
$ docker run --rm -it -p <listen-port>:<listen-port> -p <remote-port>:<remote-port> kevinwan/tproxy:v1 tproxy -l 0.0.0