rpa*_*cek 6 performance mongodb
概述:
我们正在比较两种不同体系结构上的create / read / write / rw性能:单个数据库与多个数据库(15k-25k)。
我们更喜欢使用Multi-DB体系结构,因为这样可以更轻松地分离客户(customer = 1 company)。但是,由于性能下降,我们担心这可能不是一个好的解决方案。
服务器规格:
单实例MongoDB服务器;64GB RAM;16芯; 固态硬盘
检测结果:
两种测试方案的文档总数相同(并且文档的大小大致相同)。变量是数据库数量,每个数据库的集合和每个集合的文档。
除了使用100(50R / 50W)的读/写操作外,所有测试都使用50个客户端线程(单独的计算机)并行进行。启用了“ directoryPerDB”。(所有时间以毫秒为单位,每个doc操作)
Test Creation Read Write Read/Write Notes
25000 DB 4 Coll 250 Doc 23ms 1-10ms 1-4ms 2-10ms Max 1400% CPU, noticeable "pauses" (CPU drops to 100%)
15000 DB 4 Coll 420 Doc 23ms 0.7-4ms 0.9-4ms 2-9ms Max 1400% CPU, noticeable "pauses" (CPU drops to 100%)
1 DB 4 Coll 125000 Doc 0.8ms 0.6ms 0.8ms 1.2-1.6ms Max 600% CPU, no pauses
Run Code Online (Sandbox Code Playgroud)
结论:
当数据库计数很高时,在定期间隔上似乎会出现明显的性能下降。这可能是由于文件数量过多(25000 DBs * 4 Colls * 2文件= 200k文件)或其他瓶颈所致。
在单数据库测试中,CPU保持在600%左右并保持到完成。在多数据库测试中,CPU(处于峰值性能)介于800-1400%之间,但是每隔一段时间,CPU就会降至100%,并且所有操作都将暂停。可以通过查看mongo日志以及发出R / W命令的测试客户端的日志来验证这一点。
如果不是因为这些停顿,Multi-DB体系结构将比Single-DB快2倍左右,但是似乎存在一些无法避免的全局争用。
我希望有人可能知道这种全局争用以及(如果可能的话)如何解决它。
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |