什么是 TCP
本文最后更新于:2 年前
什么是 TCP
TCP (transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。
常见问题
- 连接问题,IP 写错,端口写错 链接会被拒绝
- Operation now in progress 连接超时、丢包、错误 IP、backlog 满了&阻塞&tcp_abort_on_overflow=0
- min(maxconn,backlog). [ ss -it] 查询 backlog 的设置长度
SYN Flood 问题
- tcp_max_syn_backlog
- tcp_synack_retries
- tcp_syncookies
短链接性能问题
- 多余链接
- 启动比较慢、慢启动
- 握手阶段丢包
- 对链接的占用约等于长链接
短链接优点 - 简单
- 理论上链接数会少
- 无状态对负载均衡 LB 友好
长链接常见问题
- 链接失效两种问题
- redis:timeout(Error while reading line from the server)
- Mysql: wait_timeout & interactive_timeout(has gone away)
- 链接失效解决方法
- 用的时候多链接几次 (最简单)
- 定时发心跳维持链接 (推荐方式)
- 利用 swoole 底层的 hearlbeat_idle_time 和 hearlbeat_check_interval (只能针对服务器端,需要客户端配合发心跳)
- 如何实现应用层心跳
- 制定 ping/pong 协议 (mysql 等自带 ping 协议)
- 客户端灵活的发送 ping 心跳包
- 服务端 OnRecive 检查可用性回复 pong
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!