-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
内存泄漏 #2017
Comments
最好分享一个demo可以在我本地复现的。 |
#include "EchoWebsocket.h" using namespace rapidjson; struct Subscriber void EchoWebsocket::handleNewMessage(const WebSocketConnectionPtr& wsConnPtr, std::string&& message, const WebSocketMessageType& type)
}
}
} #pragma once using namespace drogon; private: |
import ws from 'k6/ws'; // k6 run -u 100 ./websocket.js export default function () {
} |
我基本上就是按照你们的demo写的 稍微改动了一点点东西 而且我还在基础上加了 std::enable_shared_from_this |
需要 gcc 14.1 我这边用了 std::format |
void EchoWebsocket::handleConnectionClosed(const WebSocketConnectionPtr& wsConnPtr)
} 我新增了 chatRooms_.clear(); 内存并没有减少 |
|
我给了10 个用 写在 js 里面 |
你用你们的 demo 用 K6 压测一下就知道了 |
能否整理一下贴出来的代码,现在格式很乱没办法看。 |
https://github.com/AmdRyZen/drogon-http |
其实就一个控制器 .cc 和 .h |
我用你的脚本测试 example/websocket_server, 两轮后内存稳定在500M不再增长,没有观察到内存泄露迹象。 |
如果有这么明显的内存泄漏,valgrind应该能找到,你可以试一下. 我不清楚你一直在说内存泄漏的依据是什么。内存持续增长并不意味着一定发生了内存泄漏。没有内存泄漏的程序也不意味着不会出现OOM。 我不清楚 k6 的压测具体实现,以及它的连接管理策略。如果输入量超过系统处理速度,内存持续增长几乎是必然的。 我用 ”-u 100“ 参数进行压测,内存占用也会上升到10G, 但是测试结束后又恢复到了20M |
标准库里很多容器都是贪婪策略,会保持峰值的内存用量,这就跟写法有关了,你第一次压测停止后,再压测一次,如果内存没有增长到第一次压测的两倍并且变化不大,那么就是前面说的这种情形。 |
我有时间再试一下 到时候截图出来 |
每次会增长一点点 不会翻倍 不过性能都比上一次 会差一点点 |
内存增加没有正比于压测次数,不像典型的内存泄露,但是也很难下定论,建议你把服务端的逻辑逐步减少,看看哪里的功能导致的内存增加。 |
close之后不减少不一定就是内存泄露,原因我说过了,很多容器对内存使用会保持峰值的状态,比如std::vector,缩小它的size并不会减少内存,它只是内部调整边界。 |
嗯 不过我就是简单的 广播 没有特别的业务 |
dg_ctl(78019,0x201608c00) malloc: *** error for object 0x102bff910: pointer being freed was not allocated |
没在本地复现 |
mac m2 pro |
mac下怎么装的14.1?我用brew没搜到。。。先观察下,等等14的后续版本 |
14 已经支持 std::format 了 |
drogon::app().loadConfigFile("config.json").run();
上次说的 在 cmake 使用 mimalloc -static 内存泄漏问题
今天我在使用 gcc pgo 优化代码的时候又遇到了 还是希望可以解决
macos 14.1 m2 pro
gcc 11.4
The text was updated successfully, but these errors were encountered: