Мы разрабатывали веб-страницу, в которой полностью использовались сервер node.js, webpack и дочерний процесс python. Запрос отправляется дочернему процессу python, и после того, как дочерний процесс python был успешно завершен, все результаты отображаются на сервере node.js.
После фазы разработки мы решили перенести систему на другую машину с лучшими характеристиками. Однако когда мы переместили и инициировали систему, мы увидели, что в системе выполняется только один дочерний процесс. В машине разработки узел разрешал запуск кода Python на нескольких процессорах и потоках. Тем не менее, на компьютере разработчика разрешен только один, и он работает на процессоре. Я очень новичок в концепции Node, однако то, что мы видели на протяжении тестов и различных виртуальных машин, мы не могли найти ни решения, ни объяснения этой ситуации.
Характеристики машины для развития:
- ОЗУ: 12 ГБ
- дисплей: GF108M [GeForce GT 540M]
- Операционная система: Ubuntu 16.04.5 LTS
- ЦП: 8
- Модель процессора: Intel (R) Core (TM) i7-2670QM CPU @ 2,20 ГГц
- Архитектура: x86_64
Характеристики машины для развертывания:
- ОЗУ: 32 ГБ
- дисплей: NVIDIA Quatro M400
- Операционная система: Windows 10 Pro
- Процессор (ы): 32
- Модель процессора: Intel (R) Xeon (R) E7 v3 / Xeon (R) E5 v3 / Core i7 с буферизованным кольцевым агентом - 2FF8
- Архитектура: x86_64
Мы пытались использовать разные виртуальные машины и операционную систему, но всегда одинаковый результат. Я думаю, что нам не хватает некоторой части, чтобы позволить узлу или питону использовать GPU в дочернем процессе.
Все необходимые модули для запуска системы выглядят следующим образом:
наиболее важным для системы является pyhseds, который, как я полагаю, использует numpy, растерио на заднем плане
import os
import sys
import json
from geojson import Polygon
import numpy as np
from pysheds.grid import Grid
from pyproj import Proj, transform
import tarfile
Поскольку система выполняется только в одном процессе, время расчета значительно возрастает.
В машине разработки этот же процесс занимает всего полсекунды, тогда как в машине развертывания он увеличивается на 10-30 секунд. В некоторых случаях он вообще не возвращает никакого значения.