最近一直在忙,完全没时间去学习其他的东西,每天不是在写bug,就是在改bug。本来就是忙了,以前的老系统都出来一个不知道什么原因的Bug
由于该功能的相关开发早就走了。关于这个问题,业务那边也是反复分析过,未能找到原因。最后没办法找到我这里来,让帮忙看看,我对其中的逻辑并不了解,那么就代码跑起来,跟一下吧。这时候,发现,UAT数据库在本地无法连接了。只能通过跳板机,去找网络求求情,被无情拒绝,因为不合规,总之,有很多历史原因和规定在其中。这时候,就想着,能不能把端口找其他的测试服务器代理一下呢?
在以前,代理TCP,一般也是用Nginx,在nginx.conf加入如下配置:
然后nginx -s reload即可代理。
我就去测试环境找了一下Nginx,但是,我们这边很多nginx都没装Stream模块,没办法转发。如果想到用Nginx,那么就要去重新加载Stream模块,编译安装时带 –with-stream –with-stream_ssl_module 参数,然后重新编译,修改nginx.conf中的配置,也是有点麻烦。最后找到了大佬开源的tproxy项目,直接下载二进制,执行一行代码即可代理成功
然后,嗖嗖嗖,一番debug后得以解决。
问题是解决,接下来,我们再来看看tproxy是个啥?有哪些使用场景?怎么用?
介绍
tproxy是万俊峰大佬基于Golang开发且开源的一个定位用于用于代理和分析TCP连接的cli工具。
开源地址:https://github.com/kevwan/tproxy.git
使用场景:
分析 gRPC 连接何时连接、何时重连
分析 MySQL 连接池,当前多少连接,连接的生命周期是什么策略
也可以用来观察和分析任何 TCP 连接
用法示例分析 gRPC 连接
侦听在 localhost 和 8088 端口
重定向请求到localhost:8081
识别数据包格式为 gRPC
数据包延迟100毫秒
分析 MySQL 连接
查看网络状况(重传率和RTT)
查看连接池(总连接数、最大并发连接数、最长生命周期等)
领取专属 10元无门槛券
私享最新 技术干货