Comments 31
Очень интересная статья.
Критики Play 2 говорят как раз о невысокой производительности.
Было бы ещё интересно узнать о производительности подобного приложения в других java frameworks (хотя бы в том же Play 1.x), чтобы сравнить их между собой.
Критики Play 2 говорят как раз о невысокой производительности.
Было бы ещё интересно узнать о производительности подобного приложения в других java frameworks (хотя бы в том же Play 1.x), чтобы сравнить их между собой.
Kipriz,
Сами понимаете вторая версия вышла недавно так что пока свежих сравнительный работ нет. Вот если хотите несколько ссылок с версией 1.1:
Сранение с кучей других фреймворков
Сравнение с нодом
Не может версия 2 быть более медленней чем 1.1, поверьте мне на слово, а если не хотите то сравните реализацию фитч из версии 1.1 и 2.
Сами понимаете вторая версия вышла недавно так что пока свежих сравнительный работ нет. Вот если хотите несколько ссылок с версией 1.1:
Сранение с кучей других фреймворков
Сравнение с нодом
Не может версия 2 быть более медленней чем 1.1, поверьте мне на слово, а если не хотите то сравните реализацию фитч из версии 1.1 и 2.
Мне одному кажется, что эти цифры не говорит ни о чём?
Нет ну как минимум цифры говорят что кто-то старался их подготовить, но хорошо бы действительно сравнение с конкурирующим решением.
u_story,
А вы попробуйте реализовать похожий тест на последней версии томката и уверен ваши цифры вас удивят. Насколько я понимаю автор запускал приложение без определенных jvm параметров (server или увеличение permGen итд)?
А вы попробуйте реализовать похожий тест на последней версии томката и уверен ваши цифры вас удивят. Насколько я понимаю автор запускал приложение без определенных jvm параметров (server или увеличение permGen итд)?
У меня одного нет никаких цифр, а только «Кол-во» в окантовке?
Может не очень по теме, но я как раз собирался выучить Play 1, уже начал писать что-то и тут вышла вторая ветка. Что посоветуете — забить на первую? Будет ли первая ветка поддерживаться или на неё забьют окончательно?
Вторая ветка все еще достаточно сырая, да и некоторые важные фичи там отсутсвуют(например упаковка в war).
Я бы посоветовал если вы не фанат scala и проект не для поиграться всеже использовать первую ветку.
Я бы посоветовал если вы не фанат scala и проект не для поиграться всеже использовать первую ветку.
Спасибо. Останусь пока на первой. Время покажет что там со второй веткой… А то пока как-то туманно все
Настолько сырая что линкдин и еще кое кто из очень известный компаний (официальную информацию вы можете узнать позже) изучают возможность перейти в очень коротком будущем на play 2.0. «Фитча» — упаковка в war, скорее бремя чем аватаж. Так же очень важный фактор в пользу второй версии это акка а не доморощенный асинхроно-событийный модуль который понимает Quartz.
Настолько сырая, что сервис Klout использует ее в продакшен и обрабатывает 10 млрд.запросов в месяц (по информации от создателей Play Framework).
Советую вам переходить на ветку 2.0 т.к. первая находиться только в поддержке и исправлении ошибок и непонятно сколько времени так будут обстоять дела. Скорее всего она поживет еще какое то время и на нее забьют как вы сказали.
Тогда ещё вопрос в догонку? Имеет ли смысл сразу изучать Scala? Как я понял это теперь основной вектор развития Play
Изучать что то новое и такое многообещающее всегда интересно, вы не думаете? Но если у вас реально очень сжатые сроки то нет, вы сможете писать на java, может будет выходить более громоздко это ведь старушка java. Должен с вами не согласится по поводу основного вектора, я бы сказал scala и java равноправны (это почти ничего не стоит) только на java с его недостатками читаемость кода будет ниже (ну это повсюду не только в play).
Настолько сырая, что сервис Klout использует ее в продакшен и обрабатывает 10 млрд.запросов в месяц (по информации от создателей Play Framework).
Это получается 4000 запросов в секунду. Ну, или до 40000 в секунду в часы пик.
Мне одному кажется, что нагрузка не запредельная?
Мне одному кажется, что нагрузка не запредельная?
Может быть я чего-то не понял, но суть статьи в том, что используя Scala+Play получаем быстрое приложение и 500 запросов в сек.?
Разве это быстро?
Простейший сервер на netty выдает порядка 20000 запросов в сек на моем древнем нетбуке…
Разве это быстро?
Простейший сервер на netty выдает порядка 20000 запросов в сек на моем древнем нетбуке…
а какой сегодня курс?
Первый раз встречаю человека который пишет на java на нетбуке. А вообще давайте по существу какая у вас конфигурация, при каких обстоятельствах (исходники киньте) у вас получился такой результат.
1. Кто сказал, что я пишу на нетбуке??
2. Конфигурация Lenovo EDGE 13", AMD 1,4ГГц, 4Гига памяти, Win7Home64bit
3. Обстоятельства очень простые. Берем netty, делаем минимальный сервер на немиз 10 строк и вуаля. порядка 20000 запросов в сек получаем…
2. Конфигурация Lenovo EDGE 13", AMD 1,4ГГц, 4Гига памяти, Win7Home64bit
3. Обстоятельства очень простые. Берем netty, делаем минимальный сервер на немиз 10 строк и вуаля. порядка 20000 запросов в сек получаем…
Добрый день, вы и сказали:
запросов в сек на моем древнем нетбуке… (Не будем углубятся в детали со стороны мне так показалось)
Теперь по порядку:
запросов в сек на моем древнем нетбуке… (Не будем углубятся в детали со стороны мне так показалось)
Теперь по порядку:
- Ваша машина в разы мощнее чем виртуалка автора
- Автор здесь описывает тесты с перманентными комет-соединениями, а теперь взгляните на пункт:
Тестируемое приложение будет выполнять три основных функции. Что касается вашего приложения в 10 строк, я не думаю что оно способно выполнять те же самые функции что и тест автора. Поскольку вы не разу не сказали про комет-соединения осмелюсь предположить что вы просто тестировали нагрузку сервера на обычные входящие запросы а это очень сильно отличается от того что проделал автор. И вообще если мои предположения верны 2000 зп/сек для вашего типа тестов это маловато.
10 строк в студию, пожалуйста
public class Main
{
ExecutorService bossExec = Executors.newCachedThreadPool();
ExecutorService ioExec = Executors.newCachedThreadPool();
factory = new NioServerSocketChannelFactory( bossExec, ioExec, 4 );
ServerBootstrap bootstrap = new ServerBootstrap( factory );
packetHandler = new ProtocolPacketHandler();
// Set up the pipeline factory.
bootstrap.setPipelineFactory( new ChannelPipelineFactory()
{
@Override
public ChannelPipeline getPipeline() throws Exception
{
ChannelPipeline p = Channels.pipeline();
p.addLast( "handler", packetHandler );
return p;
}
});
}
public class ProtocolPacketHandler extends SimpleChannelHandler
{
@Override
public void messageReceived( ChannelHandlerContext ctx, MessageEvent e ) throws Exception
{
log.info( e.getMessage() );
}
}
Ну как-то так. Я только немного «раздвинул код», чтобы понятнее было.
Но в принципе суть ясна, делаем минимальный сервер на netty.
Sign up to leave a comment.
Измерение производительности Play Framework 2.0