Отладка одновременных проблем с производительностью в ArangoDB / Foxx - PullRequest
0 голосов
/ 18 января 2019

Мы сталкиваемся с задержкой ответа, которая иногда возникает при одновременных запросах.

Одна из функций API просто перебирает ссылки с переданного узла и возвращает все узлы и их содержимое. У меня есть небольшой скрипт на python, который запускает несколько потоков, каждый из которых выполняет вышеуказанный запрос.

Большую часть времени запросы возвращаются быстро, но иногда мы видим, что запросы занимают до 3/4 секунды. Например:

$  python stress.py
   200 OK, took 4 ms
   200 OK, took 4 ms
   200 OK, took 7 ms
   200 OK, took 10 ms
   200 OK, took 11 ms
   200 OK, took 12 ms
   200 OK, took 17 ms
   200 OK, took 14 ms
   200 OK, took 14 ms
   200 OK, took 14 ms
   200 OK, took 19 ms
   200 OK, took 20 ms
   200 OK, took 16 ms
   200 OK, took 13 ms
   200 OK, took 13 ms
   200 OK, took 14 ms
   200 OK, took 17 ms
   200 OK, took 12 ms
   200 OK, took 16 ms
   200 OK, took 15 ms
   200 OK, took 16 ms
   200 OK, took 20 ms
   200 OK, took 29 ms
   200 OK, took 29 ms
   200 OK, took 455 ms

Похоже, что некоторые запросы могут быть заблокированы будущими. Я играл с сборщиком мусора и обнаружил, что установка небольшого значения интервала gc (1 или 2) делает это реже, но я думаю, что это красная сельдь.

Есть ли способ выяснить, что на самом деле происходит, или некоторые параметры настройки, которые могут помочь предотвратить это?

...