面试题答案
一键面试可能遇到的性能瓶颈
- 连接建立开销:TCP三次握手带来额外开销,高并发时大量新连接创建会消耗资源。
- 慢启动:初始拥塞窗口小,数据传输速率提升慢,影响短连接性能。
- 拥塞控制:网络拥塞时,TCP会降低发送速率,导致整体性能下降。
- TIME_WAIT状态:连接关闭后,处于此状态等待两倍MSL时间,占用端口资源,高并发下端口资源易耗尽。
- 缓冲区限制:内核接收和发送缓冲区大小有限,高并发大数据量时可能导致数据丢失或传输延迟。
优化措施
- 连接复用:采用长连接,减少连接建立和关闭开销。如HTTP/1.1默认支持持久连接。
- 优化慢启动:适当调整慢启动阈值(ssthresh),加速拥塞窗口增长。
- 拥塞控制算法优化:选用适合场景的拥塞控制算法,如BBR相比传统算法在高带宽时延积网络中有更好表现。
- 处理TIME_WAIT:设置合适的端口复用参数(如SO_REUSEADDR),允许快速重用处于TIME_WAIT状态的端口;或者通过负载均衡将请求分发到不同服务器,减少单台服务器端口压力。
- 调整缓冲区大小:根据服务器性能和网络情况,适当增大内核接收和发送缓冲区大小,如通过setsockopt设置SO_RCVBUF和SO_SNDBUF选项。