GraphQL API со встроенным бэкэндом в узле js, потребляющем высокую загрузку ЦП - PullRequest
0 голосов
/ 17 октября 2019

Мы создали API-интерфейс graphql с нашими сервисами, написанными на node.js и использующими сервер apollo. Мы испытываем высокую загрузку ЦП всякий раз, когда количество запросов в секунду достигает 20. Мы выполняли профилирование с помощью флеймграфов и встроенного в профилировщик узла. Присоединение результата встроенного профилировщика: -

[Summary]:
   ticks  total  nonlib   name
  87809   32.1%   95.8%  JavaScript
      0    0.0%    0.0%  C++
  32531   11.9%   35.5%  GC
  182061   66.5%          Shared libraries
   3878    1.4%          Unaccounted

[Shared libraries]:
   ticks  total  nonlib   name
  138326   50.5%          /usr/bin/node
  30023   11.0%          /lib/x86_64-linux-gnu/libc-2.27.so
  12466    4.6%          /lib/x86_64-linux-gnu/libpthread-2.27.so
    627    0.2%          [vdso]
    567    0.2%          /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
     52    0.0%          /lib/x86_64-linux-gnu/libm-2.27.so

Результаты пламенного графа также дополняют вышеприведенный результат, что мы не видели ни одной функции JavaScript, потребляющей высокую загрузку ЦП.

Почему / usr /бин / узел потребляет так много процессора? это как-то связано с тем, как был написан код, или это вообще тенденция?

Также, чтобы дать мало информации о том, что делает наш API-интерфейс graphQL: - при получении запроса, в зависимости от запроса, который он делаетОт 3 до 5 нисходящих вызовов API и не выполняет никакой ресурсоемкой работы самостоятельно.

Версии: - Версия узла: - 10.16.3 graphql-modules / core: - 0.7.7 apollo-datasource-rest: - 0.5.0 apollo-server-express: - 2.6.8

Помощь очень ценится здесь.

...