天天看点

防止短连接耗尽你的动态TCP端口

用pgbench使用短连接压测一个postgresql数据库(select 1),其他数据库亦如此。

压测一段时间之后,可能会因为本地(客户端)的端口耗尽,客户端会报错如下

原因是客户端需要为每一个连接动态创建tcp端口,所以每个连接会消耗一个端口。

客户端主动断开连接后,会进入time_wait状态。

详见tcp协议

<a href="https://en.wikipedia.org/wiki/transmission_control_protocol">https://en.wikipedia.org/wiki/transmission_control_protocol</a>

防止短连接耗尽你的动态TCP端口

但是time_wait是有时间窗口的,linux默认是60秒。

所以如果不停的产生和关闭tcp会话,就可能导致前面提到的问题。

对于linux的客户端,通过调整几个操作系统内核参数可以解决这个问题。

继续阅读