Что происходит при переходе из режима DEV в PROD в файл "application.conf"?

Я использую play framework 1.2.5, за последние два дня у меня была очень большая проблема при нагрузочном тестировании, которое для каждого вызова API для разрыва занимает около 1200-1400 мс в среднем, но сегодня я просто изменил следующее только одна строка в файле application.conf, что значительно сокращает среднее время до 20-50 мс, строка следующим образом:

  application.mode=prod
  %prod.application.mode=prod

первоначально это было как

  application.mode=dev 
  %prod.application.mode=prod

Итак, из этого я понял, что переход от dev к производству делает что-то, и то, что я нашел в Интернете, - это режим dev play.pool = 1 по умолчанию, тогда как в режиме производства play.pool = нет процессоров + 1, моя машина ubuntu - 4 процессора, поэтому она использует 5 потоков. Теперь, придя к проблеме, если то, что я нашел, верно, то когда я меняю play.pool = 5 вручную в application.conf, это не дает мне более быстрый результат, если я не установлю play.pool = 1 и работать в режиме производства также не замедляет результаты загрузки приложения, поэтому мне нужно знать, что происходит, когда я перехожу из режима dev в prod, кроме этого play.pool, который ускоряет мое приложение. потому что я столкнулся с проблемой. В UAT, где нет хороших результатов для изменения в режиме prod, также он работает только в моем localhost.please найдите мне решение раньше, спасибо в Advance.

ОБНОВЛЕНИЕ:

Да, я знаю все эти вещи, как в режиме DEV, приложение перезагружается и компилируется, но, возможно, не для каждого запроса только при начальной загрузке программы, я думаю, но моя проблема работает в этом режиме prod на моем локальном хосте и моем локальном сервере, когда я иду на UAT, я получаю плохие результаты при нагрузочном тестировании около 800 мс в среднем. приложение работает медленно даже в prod, даже если я выполняю loadtest локально (jmeter установлен на серверной машине, и я тестирую нагрузку с помощью подключения к удаленному рабочему столу). Так что, кроме компиляции и перезагрузки, мне нужно знать, какие изменения происходят в файле application.conf, когда я перехожу из режима DEV в PROD, например, play.pool меняет один поток на (без процессоров + 1) поток. FYI: моя система localhost - это 4-процессорная машина, а локальная серверная машина - 4 процессора, но UAT-машина - это 2 процессора, если это проблема, я даже пытался изменить потоки пула на 10 (play.pool = 10 ) и никаких хороших результатов в UAT.

Ответ 1

Помимо одного потока, в режиме dev запуск приложения задерживается до тех пор, пока не будет отправлен первый запрос. В режиме prod приложение запустится немедленно. Это, очевидно, влияет на время загрузки первого запроса.

Я думаю, что "плохая" производительность в режиме dev в основном вызвана функцией перезагрузки и компиляции классов во время работы. По каждому запросу классы проверяются на изменения и могут быть перезагружены. Я думаю, что эта функция очень стоит увеличить время загрузки, и я не знаю, можно ли ее деактивировать.

Вероятно, вы не должны запускать тесты производительности/приёма в режиме dev. Вот короткое обсуждение об этом. Вместо того, чтобы пытаться повысить производительность режима dev, вам следует просто использовать режим prod.

Ответ 2

Вы должны сделать еще несколько анализов, прежде чем прыгать на оружие.
Во-первых, вы пытаетесь понять, где потрачено дополнительное время.

  • Оформление шаблонов?
  • Ожидание подключения DB?
  • Есть ли какие-либо блокировки потоков?
  • Была ли оптимизирована база данных с индексами?
  • Вы измеряли использование процессора и памяти?
  • Выполняете ли вы какие-либо дорогостоящие операции ввода-вывода?
  • Выполняются ли какие-либо другие процессы на этом компьютере?

Ответ 3

как вы запускаете игру на производственном сервере?

Надеюсь, вы прочли: http://www.playframework.com/documentation/1.2.5/production

Ваш вопрос действительно связан с проблемой производительности. Могло быть много вещей, вызывающих разницу в производительности от вашей локальной среды и производства. Помимо Play, работает ли DB в том же поле?