brpc icon indicating copy to clipboard operation
brpc copied to clipboard

使用ExecutionQueue时,压测时,内存从50mb上涨到800mb,停止压测后,内存不会降下来,如果继续压测,内存还会继续涨

Open dulucy opened this issue 1 year ago • 0 comments

Describe the bug (描述bug) --第一个class struct data{ ..... }

class DemoTask { public: bthread::ExecutionQueueId<list> queue_id_one; void start(){ bthread::execution_queue_start(&queue_id_one, nullptr, insertMongoDB, nullptr); } };

int consume(void* meta, TaskIterator& iter) { if (iter.is_queue_stopped()) { return 0; }
for (; iter; ++iter) { //这里使用mongo的C++驱动,将data的数据存入mongodb //从配置读取db路径 //处理数据

}   
return 0;

}

------第二个class class request(){ private: DemoTask task; bthread::ExecutionQueueId<list> queue_id_one; public: defualt(){ task.start(); } http(){ //将请求日志数据使用data data ..... bthread::execution_queue_execute(queue_id_one, data ); }

}

----问题 1、第一次使用brpc,不太确定是否是因为使用方式不正确导致内存没有正常释放 2、测试环境在容器云上,内存是2G,压测27万次请求,内存从50mb逐步升到800mb,停止压测后,内存一直不会降下来(这次测试有一部分是因为日志数据插入太慢) 3、修改代码后,再次测试。内存从50mb涨到500mb,确认日志数据全部插入数据库了,但是内存任然没有降下来 4、我觉得是consume方法中创建的变量等,没有正常释放(我把方法中的逻辑全部删除测试过一次,内存一直在50mb左右,没有明显的增长)。不太理解完成一次任务后,任务中的变量等什么时机释放内存的。

To Reproduce (复现方法)

Expected behavior (期望行为) 了解内存不下降的原因,已经如何改进

Versions (各种版本) OS: Compiler: brpc:1.6.1 protobuf:

Additional context/screenshots (更多上下文/截图)

dulucy avatar Feb 02 '24 07:02 dulucy