大佬们,大问题请教,内存占满

2024-09-19 17:45:28 +08:00
 iamtuzi3333
小弟用 MongoDB 存储实时数据,都是传感器数据,十几个传感器,每秒都有数据发过来,需要实时存储,目前用了一个队列去一遍存一遍入库,集合都是分散开的,但是发现一个很严重的问题就是会把服务器的备用内存持续压榨,导致可用内存越来越小,用的 Window Server 服务器,192GB 只剩下十几 M ,可用内存,这个太夸张了,而且看进程 mongod.exe 这个进程占了 5 万多 MB ,很夸张,目前小弟也没有方法能立马排查出来,有大佬有过这个经验吗,请大佬指教一下。
4806 次点击
所在节点    MongoDB
46 条回复
iamtuzi3333
2024-09-20 15:53:22 +08:00
@AlanBrian 现在这个 MongoDB 用的社区版本,然后是 Window server 服务器,就是直接启动。
@Moyyyyyyyyyyye 小公司就一台服务器,没办法。
@xsi640 时序我看了一番,没发现有很合适的,主要是字段不方便存,很多时序数据库都是支持字段单值存储,我的数据字段重点是一个数组。
Haku
2024-09-20 16:13:25 +08:00
MongoDB 好像是这样的,狂吃内存,而且它不是只吃一点,不限制的话是你给多少吃多少那种。
建议要么和别的服务分开放,要么就用参数摁死了。
iamtuzi3333
2024-09-20 16:20:17 +08:00
@Haku 参数都按不死,疯狂吃,吃的只剩下十几 M 可用,内存一看全是映射文件占着茅坑。
juvenn
2024-09-21 11:40:57 +08:00
[#12]( https://v2ex.com/t/1074136#r_15281543)

从 12 楼的统计看这个读写吞吐都很低,不应该占用这么高的内存。感觉还是哪里配置有问题。(我们有生产用的多个 mongo 集群,32GB 内存上千的 qps 都没有压力。)

1. 不要用 MMap ,切到 WiredTiger 。
1. 传感器的数据模型,最好用时序数据库。比如 GreptimeDB ,支持 binary ,可以存 json 或者数组。
1. 如果对查询实时性要求不高,也可以用 ClickHouse ,支持 json ,数组等。列式存储,压缩比率和查询效率都很高。
iamtuzi3333
2024-09-23 15:23:39 +08:00
@juvenn 我目前就是使用的 WiredTiger 引擎,然后数据模型都是 JSON ,插入的时候我特地转为 JSON 插入,查询的实时性要求性不高,现在招人初步判断就是因为写入数据速度太慢,跟不上接收数据的速度,导致全部堆积在内存中。
roundgis
278 天前
@iamtuzi3333 你用的什麼版本

mongodb 老早默認就改用 wiredtiger 了

那個可以指定內存使用量最低 256m

我在 1g 的虛機都跑過

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1074136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX