Tuvie
Tuvie
可以看看IOBuf的append_user_data函数
IOBufAsZeroCopyOutputStream可以满足需求吗
用的是什么样的业务?是example么?怎样的测试?
这类错误可能是多个线程同时访问一个IOBuf导致的。先禁掉zero copy看看是否还必现?rdma_recv_zerocopy=false(禁用接收端zerocopy),rdma_zerocopy_min_size=[比较大的值](禁用发送端zerocopy)。先确认下是rpc内部竞争了,还是rpc和上面的应用之间竞争了。
是每次报错都来自server端吗?能否提供更多的复现方法或者问题触发时的特征?
> 客户端此时会出现成片的RPC 失败 是一个客户端的多个RPC失败,还是多个客户端的RPC失败?
> rdma_recv_zerocopy=false(禁用接收端zerocopy),rdma_zerocopy_min_size=[比较大的值](禁用发送端zerocopy) 抱歉,我刚查了一下代码,上面这个说法有问题。rdma_zerocopy_min_size=[比较大的值]禁用的仍然是接收端zerocopy。发送端zerocopy暂时没法通过Flag禁用。我去做个版本,支持下关闭发送端zerocopy你再试试
https://github.com/apache/brpc/pull/2267 可以试下这个PR。 这种IOBuf数据问题debug确实有些困难。如果打log数据量太大了
你使用的rdma相关的flag都有哪些?能否贴一下看看
其他的flag有设置吧?block size什么的