将文本数据存储在 Mongodb gridFS +压缩中并使用 mongodump 进行日常备份,我犯了一个非常大的错误。GridFS 是 1GB 的文本文件,但由于备份的制作方式,备份内存使用量有时会在一个月后每天增加 1GB 20GB 内存。
在 mongodb 中,您应该对数据文件夹进行快照 - 而不是 mongodump。可能的原因是它将未使用的数据从磁盘复制到内存中,然后进行 bson 转储。因此,就我而言,长时间未使用的文本永远不应加载到内存中。我认为这就是备份的工作方式,因为即使现在我的 Mongodb 在运行 mongodump 后使用 200MB 的内存,它可以上升到 3GB
所以我认为最好的解决方案是使用文件系统来存储 HTML 文件,因为您的 RAID (如 PERC H700)具有许多惊人的缓存功能,包括预读。但它有一些限制,比如网络访问,根据我的经验,一些数据及时损坏,需要运行 chkdsk 进行修复,因为每天添加或删除许多 GB 数据。此外,您还应该考虑使用适当的 RAID 功能,例如写入槽,以防止电源故障时数据丢失。
Sqlite 不是为处理超大数据而设计的,因此您不应该使用它,并且缺少许多缓存功能。
不完美的解决方案是在 nodejs 中使用 MariaDB 或它自己的缓存脚本,可以使用 memcached/Linux ramdisk 和可能 1GB 的热缓存。一段时间后使用内部 nodejs 缓存机制会产生很多内存泄漏。所以我可以将它用于网络连接,并且 I/O 正在使用文件系统锁定,并且许多“HOT”最常用的文件可以被编程为缓存在 RAM 中或保持原样