我正在调查arangodb中的性能问题。我注意到它在执行某些AQL时会执行大量的I/O(特别是读操作)。我在脑海中有以下问题:在arangodb中运行AQL时的高I/O
- 什么是实际加载到物理内存。是预写日志文件,数据文件还是日记本
- 如果我假设所有3都已加载,那么为什么在读数据时应该有一个I/O
- AQL在Journal/datafile上运行,或者它需要write-也提前记录文件数据。
- 如果它运行只在杂志/数据文件,然后它可能是我们在写前文件有新的数据,但AQL不会返回
系统没有使用任何交换的。但AQL运行时间仍在增加。它有时需要高达10秒才能运行。我在arangodb上做了一个iotop,我发现这个(见下文)特别的命令会进行大量的读取。它读取速度高达15 mbps。
“2320 be/4 arangodb 10.69 M/s 149.39 K/s 0.00%22.48%arangod -c /etc/arangodb/arangod.conf --uid arangodb --gid arang〜emp-path/var/tmp/arangod --log.tty --supervisor [[dispat_def]]“
编辑的问题,并把一个位的更多信息在底部 –
输出的iotop -u arangodb: 2320是/ 4 arangodb 10.69米/秒149.39 K/S 0.00%22.48%arangod -c的/ etc/arangodb/arangod.conf --uid arangodb --gid arang〜emp-path/var/tmp/arangod --log.tty --supervisor [[dispat_def]] –
首先,是否加载了AQL查询所访问的所有集合?服务器启动或重新启动后,集合上的第一个查询可能会完全加载集合。这可能会第一次产生大量的I/O,但不会在查询重复后产生。另一个潜在的问题是在查询运行时,系统内存不足。然后I/O也可能增加很多。你可以为系统的整体内存使用量观看最高或其他来源? – stj