wang_and_sheng

Results 1 issues of wang_and_sheng

**Describe the bug (描述bug)** src/brpc/socket.h中Socket类的Write实现过程存在内存暴增并限制不住的问题。 **To Reproduce (复现方法)** 1. 类似example/http_c++.cpp中的FileServiceImpl::SendLargeFile函数,http服务端使用CreateProgressiveAttachment创建ProgressiveAttachment进行Write写入数据。 2. 客户端curl访问,限制传输速度到一个低速,比如10KBps。 3. 服务端进程的内存使用会持续增加,并且无限制的增加。 问题原因: 1. ProgressiveAttachment::Write调用了Socket::Write。 2. Socket::Write函数逻辑如下 ![image](https://user-images.githubusercontent.com/20539921/81032960-6c4de580-8ec4-11ea-92a2-baeff5ad67f0.png) 3. 判断当前socket写入是否overcrowded的标志是Socket::_overcrowded,根据Socket::WriteRequest::Setup进行判断标志上。 ![image](https://user-images.githubusercontent.com/20539921/81033077-b59e3500-8ec4-11ea-86b8-b67135f4a521.png) 4. 但是Socket::WriteRequest::Setup的调用是在StartWrite里面 ![image](https://user-images.githubusercontent.com/20539921/81033137-ef6f3b80-8ec4-11ea-92e5-db72db62ff11.png) 5. 造成这样一个问题,比如第一写入的IOBuf.size()超过了FLAGS_socket_max_unwritten_bytes,标志了_overcrowded=true, Socket::Write最终启动了KeepWrite bthread持续把IOBuf的内容写入socket...

bug