php-pm огорчил на небольшом тесте. С одной стороны вроде как быстрее, но с другой всё упирается в количество воркеров - поднимешь много, жрут оперативку, поднимешь мало - запросы встают в очередь и время ожидания выравнивает его по скорости с php-fpm, а местами и делает медленнее. печалька
когда в go завезут нормальные фреймворки заточенные под веб, которые не очередной клон синатры из руби - таки да.
не, это разные задачи. под "веб" норм и на пхп с нодой. Но если ты начал выдрачивать считанные миллисекунды, то - велкам.
Это как предложение пересесть на автомобиль на ручке без кондиционера без электроники только потому что он мощнее. Перейти со 150 рублевого впс на 300 рублевый не пробовал?
Давай обсудим твою идею. Всем интересно зачем тебе это. Тем более ты не первый раз это поднимаешь. Там настолько незначительная разница что просто не имеет никакого смысла.
не, просто появилось время на тех. долг: апнуть фреймворк с пакетами до актуальной версии, бд, пых, покурить конфиги и всё такое. Ну и за одно понять на сколько это было полезным. А так, текущее среднее время ответа меня вполне устраивает. --- Добавлено --- Код (Text): Transactions: 3300 hits Availability: 100.00 % Elapsed time: 59.08 secs Data transferred: 0.20 MB Response time: 0.03 secs Transaction rate: 55.86 trans/sec Throughput: 0.00 MB/sec Concurrency: 1.56 Successful transactions: 3300 Failed transactions: 0 Longest transaction: 0.23 Shortest transaction: 0.01 Laravel очень медленный, не то что yii, ага ))
это заголовок с ключом не передается. Мы ж о самой ларке говорим сейчас, а не о дальнейшей бизнес-логике.
Просто ради интереса запустил express с простенькой функцией. Код (Text): app.get('/', (req, res) => res.send((new Date).toString())) Код (Text): Lifting the server siege... Transactions: 403 hits Availability: 100.00 % Elapsed time: 59.08 secs Data transferred: 0.02 MB Response time: 0.00 secs Transaction rate: 6.82 trans/sec Throughput: 0.00 MB/sec Concurrency: 0.01 Successful transactions: 403 Failed transactions: 0 Longest transaction: 0.01 Shortest transaction: 0.00 --- Добавлено --- 200 запросов в секунду Код (Text): Lifting the server siege... Transactions: 11692 hits Availability: 100.00 % Elapsed time: 59.71 secs Data transferred: 0.45 MB Response time: 0.01 secs Transaction rate: 195.81 trans/sec Throughput: 0.01 MB/sec Concurrency: 1.64 Successful transactions: 11692 Failed transactions: 0 Longest transaction: 0.28 Shortest transaction: 0.00
А теперь навешай на экспесс хотя бы механизм сессий, кук, бд, кэш и прочие обвесы, что превращают req-res в фреймворк. Всегда можно взять lumen, повырезать из него всё лишнее и выдавать тысячи в секунду. Но при чем тут реальность?
пфф нет я тебе про фому, ты мне про ерёму начнёшь понимать, что я говорю - сможешь гордиться по мне так php7 достаточно для любых php-подобных задач
Ну ты же не указываешь исходных данных. Вот пример sailsjs 200 запросов 'get /test': function (req, res) {res.send('1')} Код (Text): Lifting the server siege... Transactions: 11687 hits Availability: 100.00 % Elapsed time: 59.40 secs Data transferred: 0.01 MB Response time: 0.01 secs Transaction rate: 196.75 trans/sec Throughput: 0.00 MB/sec Concurrency: 2.57 Successful transactions: 11687 Failed transactions: 0 Longest transaction: 0.18 Shortest transaction: 0.00
go 1.8 / revel / dev-mode Код (Text): Transactions: 69590 hits Availability: 100.00 % Elapsed time: 59.90 secs Data transferred: 4072.17 MB Response time: 0.11 secs Transaction rate: 1161.77 trans/sec Throughput: 67.98 MB/sec Concurrency: 126.95 Successful transactions: 69590 Failed transactions: 0 Longest transaction: 1.31 Shortest transaction: 0.00 prod-mode Код (Text): Lifting the server siege... Transactions: 92549 hits Availability: 100.00 % Elapsed time: 29.32 secs Data transferred: 5394.59 MB Response time: 0.00 secs Transaction rate: 3156.51 trans/sec Throughput: 183.99 MB/sec Concurrency: 5.58 Successful transactions: 92549 Failed transactions: 0 Longest transaction: 1.04 Shortest transaction: 0.00 Вопросы? ) --- Добавлено --- я вроде ещё в начале темы указал всё, описал что там и где запущено.
Сценарий return request()->message.microtime(); ?message=Hello express без cluster. php 4/8 запуск одновременно Код (Text): laravel Lifting the server siege... Transactions: 663 hits Availability: 100.00 % Elapsed time: 59.46 secs Data transferred: 0.02 MB Response time: 2.20 secs Transaction rate: 11.15 trans/sec Throughput: 0.00 MB/sec Concurrency: 24.57 Successful transactions: 663 Failed transactions: 0 Longest transaction: 21.56 Shortest transaction: 0.51 yii Lifting the server siege... Transactions: 1248 hits Availability: 100.00 % Elapsed time: 59.82 secs Data transferred: 0.03 MB Response time: 1.19 secs Transaction rate: 20.86 trans/sec Throughput: 0.00 MB/sec Concurrency: 24.77 Successful transactions: 1248 Failed transactions: 0 Longest transaction: 13.86 Shortest transaction: 0.10 express Lifting the server siege... Transactions: 20246 hits Availability: 100.00 % Elapsed time: 59.20 secs Data transferred: 0.87 MB Response time: 0.07 secs Transaction rate: 341.99 trans/sec Throughput: 0.01 MB/sec Concurrency: 24.11 Successful transactions: 20246 Failed transactions: 0 Longest transaction: 14.67 Shortest transaction: 0.00
что это чувак? я ещё раз говорю, синтетики в интернете полно и результат её зависит исключительно от предпочтений авторов этих тестов. У адептов yii - лидирует yii, у фанатов laravel - laravel, а на гитхабах этих тестов куча срачей на тему того, как правильно их делать. Что на фронте у PHP? Какие там настройки? Выполнены ли рекомендации по продакшн-оптимизации yii/laravel? Открыть сокет и плевать в него с большой скоростью ответом все умеют, но выполняет ли при этом express тот же набор действий, что и yii? siege выполнялся локально или с другого адреса? Я же специально показал тест revel, а если бы потратил пару минут на оптимизацию узких мест и позакрывал ютубчики, то количество rps выросло бы до десятки. Другой вопрос, что такие тесты - не показательны по определению, т.к. в продакшене возникает ещё много нюансов делающих реальную картину совершенно иной.
PHP 7.2 Код (Text): Всего запросов к API: 101824 Минимальное время ответа: 0.005 Максимальное время ответа: 7.09 Среднее время ответа: 0.06242788537085 Количество запросов с временем > 0.1 и < 0.2: 15415 Количество запросов с временем > 0.3: 1150 Количество запросов с временем ответа более 1с: 220 Среднее время ответа смущает, вчера было ~0.08 и это ближе к истине, но в целом результат очевиден )