volo-grpc server能支持配置自定义初始window size吗 · Issue #646 · cloudwego/volo · GitHub
Skip to content

volo-grpc server能支持配置自定义初始window size吗 #646

Open

Description

@MapleLove2014
Image

这是我在本地启动的一个volo-grpc server,端口50051,用brpc的c++client去调用,本地抓包分析来看:

  1. server配置如下:
......
#[derive(Clone, Default)]
struct HelloSvc;

impl hello_pb::HelloService for HelloSvc {
    async fn hello(
        &self,
        req: Request<hello_pb::HelloRequest>,
    ) -> Result<Response<hello_pb::HelloReply>, Status> {
        let name: &str = req.get_ref().name.as_ref();
        let preview: String = name.chars().take(10).collect();
        println!(
            "Received Hello request: name length={}, preview='{}'",
            name.chars().count(),
            preview
        );
        let ok = is_valid_name(name);
        Ok(Response::new(hello_pb::HelloReply { ok }))
    }
}

fn is_valid_name(name: &str) -> bool {
    !name.trim().is_empty()
}

#[volo::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    let addr: SocketAddr = "[::]:50051".parse()?;
    let addr = Address::from(addr);

    Server::new()
        .http2_adaptive_window(true)
        .http2_init_connection_window_size(1024u32 * 1024)
        .http2_init_stream_window_size(1024u32 * 1024)
        .http2_max_frame_size(1024u32 * 1024)
        .http2_max_send_buf_size(1024usize * 1024)
        
        .add_service(ServiceBuilder::new(hello_pb::HelloServiceServer::new(HelloSvc)).build())
        .run(addr)
        .await?;

    Ok(())
}
  1. 建立连接后,server向client发送一个No=4的报文,上面的WindowSize是65536
    看着和server配置的http2_init_connection_window_size和http2_init_stream_window_size并不一样,想咨询下是我的用法有问题,还是volo-rpc框架不支持配置

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions