Параметры для ускорения opencpu

Я разработал приложение ocpu для работы на сервере EC2, но, особенно при запуске на сервере EC2, приложение (даже с одним пользователем, мной) работает очень медленно, и переход от t2.micro к c3.large не меняет ни малейшей вещи. .

Чтобы увидеть узкое место, я ввел в свой код таймеры, и результаты следующие:

  • Сама функция R длится 846 мс (400 мс локально)
  • Вызов этой функции через ocpu.call() длится 2558 мс.
  • с получением результата общее время увеличивается до 4790 мс, что означает, что извлечение (большого) геоджсона занимает более 2 с, а получение того же геоджсона через API с помощью curl получает его за 1,3 с.
  • если я уменьшу вывод до нуля, для получения ничего все равно потребуется 1 с.

На моем персональном компьютере общее время составляет менее 1500 мс!

Вывод: сама часть R ненамного медленнее, а все остальное!

Есть ли варианты для opencpu, чтобы он быстрее обрабатывал данные на сервере?


person cmbarbu    schedule 10.08.2015    source источник


Ответы (1)


Немного повозившись с написанием вопроса, я действительно нашел параметр для предварительной загрузки пакетов, см. preload в руководстве по серверу. Я поместил туда все, что использую, и теперь все это сократилось до 2896 мс. Это на 2 секунды лучше!

Но все же для запуска и «возврата» функции R требуется 1,5 с, которая занимает на сервере 0,869 с, в то время как обычное квитирование занимает около 200 мс.

person cmbarbu    schedule 10.08.2015