baidu / dperf

dperf is a 100Gbps network load tester.
https://dperf.org
Apache License 2.0
4.93k stars 509 forks source link

[Feature]目前新建连接测试没有及时拆链,导致存量连接越来越多 #419

Closed zhangyalin closed 7 months ago

zhangyalin commented 7 months ago

有配置可以在新建后快速拆链吗? 比如主动发rst报文

pengjianzhang commented 7 months ago

配置cps,不要配置cc,就是建立连接后发送一个请求、响应后关闭连接 如果喜欢dperf 请加个star 谢谢

zhangyalin commented 7 months ago

从抓包来看,关闭是发送的fin包,有开关可以发rst包吗? 加快底层会话的老化速度。

pengjianzhang commented 7 months ago

没有

pengjianzhang commented 7 months ago

建连接后立刻RST? 还是发完一个请求、响应后 RST?

  1. SYN->SYN+ACK->RST?
  2. SYN -> SYN+ACK -> Request-> Reply->RST 这样吗
zhangyalin commented 7 months ago

都可以,最好可以配置,建立连接后可选发送几个包然后RST。 目前通过FIN的方式拆链太慢了,导致连接很容易被打满,不太容易长时间观察新建连接的测试性能。 我尝试改了一下,修改了tcp_server_process_data 和 tcp_client_process_data里面的, if (sk->keepalive == 0) { tx_flags |= TH_FIN; // 改成了tx_flags |= TH_RST; }

pengjianzhang commented 7 months ago

试一下 https://github.com/pengjianzhang/dperf 客户端上配置: fast_close

zhangyalin commented 7 months ago

支持 配置 发送多少个包后 fast_close吗?

pengjianzhang commented 7 months ago

参考keepalive配置

pengjianzhang commented 7 months ago

测试效果如何

zhangyalin commented 7 months ago

RST可以生效

/root/dperf-main/src/config.c:1128:15: error: #if with no expression

if KNI_ENABLE

//这里有个编译错误,要改一下 #ifdef KNI_ENABLE

pengjianzhang commented 7 months ago

Ok 合入主库了 用主库吧