Pull to refresh

Comments 31

Очень интересная статья.
Критики Play 2 говорят как раз о невысокой производительности.
Было бы ещё интересно узнать о производительности подобного приложения в других java frameworks (хотя бы в том же Play 1.x), чтобы сравнить их между собой.
Kipriz,

Сами понимаете вторая версия вышла недавно так что пока свежих сравнительный работ нет. Вот если хотите несколько ссылок с версией 1.1:

Сранение с кучей других фреймворков
Сравнение с нодом

Не может версия 2 быть более медленней чем 1.1, поверьте мне на слово, а если не хотите то сравните реализацию фитч из версии 1.1 и 2.
Мне одному кажется, что эти цифры не говорит ни о чём?
Нет ну как минимум цифры говорят что кто-то старался их подготовить, но хорошо бы действительно сравнение с конкурирующим решением.
Да, поэтому в конце поста приведены ссылки на исходники тестируемого и тестирующего приложений.
u_story,

А вы попробуйте реализовать похожий тест на последней версии томката и уверен ваши цифры вас удивят. Насколько я понимаю автор запускал приложение без определенных jvm параметров (server или увеличение permGen итд)?
зачем мне запускать подобные тесты? что они должны показать?
Никаких дополнительных настроек фрэймворка не проводилось (хотя это возможно), решение «из коробки».
У меня одного нет никаких цифр, а только «Кол-во» в окантовке?
Временные технические неполадки, извините.
Может не очень по теме, но я как раз собирался выучить Play 1, уже начал писать что-то и тут вышла вторая ветка. Что посоветуете — забить на первую? Будет ли первая ветка поддерживаться или на неё забьют окончательно?
Вторая ветка все еще достаточно сырая, да и некоторые важные фичи там отсутсвуют(например упаковка в war).
Я бы посоветовал если вы не фанат 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 в секунду в часы пик.
Мне одному кажется, что нагрузка не запредельная?
Посмотрите на конфиг виртуальной машины в которой проводились тесты, не думаю что на последнем томкате-сомакате или jetty (в обычном сервлете) вы сможете приблизится и к 1000 запросам на такой конфигурации.
Может быть я чего-то не понял, но суть статьи в том, что используя Scala+Play получаем быстрое приложение и 500 запросов в сек.?
Разве это быстро?
Простейший сервер на netty выдает порядка 20000 запросов в сек на моем древнем нетбуке…
Первый раз встречаю человека который пишет на java на нетбуке. А вообще давайте по существу какая у вас конфигурация, при каких обстоятельствах (исходники киньте) у вас получился такой результат.
1. Кто сказал, что я пишу на нетбуке??
2. Конфигурация Lenovo EDGE 13", AMD 1,4ГГц, 4Гига памяти, Win7Home64bit
3. Обстоятельства очень простые. Берем netty, делаем минимальный сервер на немиз 10 строк и вуаля. порядка 20000 запросов в сек получаем…
Добрый день, вы и сказали:

запросов в сек на моем древнем нетбуке… (Не будем углубятся в детали со стороны мне так показалось)

Теперь по порядку:
  1. Ваша машина в разы мощнее чем виртуалка автора
  2. Автор здесь описывает тесты с перманентными комет-соединениями, а теперь взгляните на пункт:
    Тестируемое приложение будет выполнять три основных функции. Что касается вашего приложения в 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.
Ну как я и говорил у вас с автором совершено разные тесты и их цели в целом.
Так я с этим и не спорю. Просто хочу понять почему у нас разные результаты…
Вы сравниваете теплое с мягким. Чтобы понять о чем речь, попробуйте измерить производительность какого-нибудь http-сервера (ngnix, apache и т.п.).
Sign up to leave a comment.

Articles