记一次2C接口有RT毛刺问题(学习)

1、问题现象

生产2C商品接口有RT超过1s的现象,打点并看不出问题所在
在这里插入图片描述

2、推测

servlet filter 有耗时操作

通过实现ResponseBodyAdvice#beforeBodyWrite方法 打点请求在写入buffer前的时间,判断耗时花在,response已经准备完成的后续 servlet filter或buffer write阶段

结果:打点 所有serlvet限时耗时无明显增加
在这里插入图片描述

socket buffer

org.apache.catalina.connector.CoyoteOutputStream#write
调用链
HttpEntityMethodProcessor#handleReturnValue -> MappingJackson2HttpMessageConverter#writeInternal -> UTF8JsonGenerator#flush ->

CoyoteOutputStream#write/flush -> Http11OutputBuffer#doWrite ->SocketWrapperBase#doWrite -> NioEndpoint#doWrite -> NioSelectorPool#write -> NioBlockingSelector#write
在这里插入图片描述 selector 轮训socket是否可写的超时时间默认是 1000ms

3、解决

数据包比较大,导致缓冲区慢了,客户端会等超时后再次重试
增加socket缓冲区大小
socket.appWriteBufSize=8096->65536

socket.txBufSize =8096->65536

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值