This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-02-11
Channels
- # announcements (1)
- # beginners (84)
- # boot (325)
- # cbus (1)
- # cider (13)
- # cljs-dev (1)
- # cljsjs (1)
- # cljsrn (15)
- # clojars (8)
- # clojure (221)
- # clojure-czech (2)
- # clojure-ireland (8)
- # clojure-madison (28)
- # clojure-poland (176)
- # clojure-russia (111)
- # clojurebridge (7)
- # clojurescript (75)
- # community-development (70)
- # conf-proposals (19)
- # core-async (29)
- # css (12)
- # cursive (66)
- # datavis (15)
- # datomic (61)
- # devcards (15)
- # dirac (2)
- # editors (13)
- # emacs (9)
- # funcool (7)
- # hoplon (13)
- # jobs-discuss (5)
- # ldnclj (39)
- # ldnproclodo (1)
- # lein-figwheel (3)
- # leiningen (21)
- # liberator (26)
- # off-topic (12)
- # om (153)
- # onyx (168)
- # parinfer (165)
- # proton (21)
- # quil (5)
- # re-frame (58)
- # reagent (4)
- # ring-swagger (12)
- # spacemacs (3)
- # yada (120)
Nomad посмотри, прямо один в один твоя мысль
да, спасибо – похож на то, что нужно. я его видел, пока не пойму, то или нет. кто еще что юзает? еще вот такую штуку нашел: https://github.com/luminus-framework/config я еще спрашиваю потому, что привык к рельсам, и как там конфиги устроены. есть ямлы, есть dotenv, в ямлах всегда можно интерполировать енв-переменные и т.д. а вот как в мире jvm и прочего принято? ну не может быть, что только рельсы удобно эту проблему решили
а, окей, то есть я могу прям в build.boot зариквайрить nomad и прочитать конфиг уже там.
А, т.е. тебе надо сам leiningen менять в зависимости от конфига?
Это по-моему была главная цель появления boot) сделать конфигурацию programmable
да, в leiningen это дикая боль просто. а в буте уже что-то получается с номадом. так что спасибо – то, что нужно, оказалось!
В leiningen проектах я обычно создаю smthngs.config namespace и в нём делаю то что мне нужно для конфигурации , в частности достаю из Номад. Не сказать что это идеоматично но проблему решает
народ, решил потестить я aleph, буквально код
(serve (constantly {:body "{}" :status 200}) port)
запустил ab -n 10000 -c 100
Выдало жалкие 5к/сек с 99% в пределах 22мс, бе.
Но ладно, вопрос в том что если в следующий раз запущу то ab после 6к реквестов застопорится и потом вовсе отватился по таймауту.запускаю java -server -jre uber.jar
есть еще какая магия может?
я в жаве нуб полнейший, но слышал что можно тюнить жаву, разные параметры, все такое, когда GC запускать и прочее
блять. простите
переезжать на jetty терь чтоли
@konukhov: А ты с jetty как работал из кложуры?
эм, хз про ринг - счас использовал тока чистый алеф
может просто GC запускается и весь мир ждет?
Ну вот получилось счас еще раз зупустить:
Percentage of the requests served within a certain time (ms)
50% 17
66% 18
75% 18
80% 19
90% 21
95% 25
98% 260
99% 11433
100% 11474 (longest request)
11сек, пиец
это же не может быть GC? Я конечно знаю что там все останавливается но не на столько же, не?
Запустил, хм.
Running 30s test @
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 38.16ms 76.02ms 627.46ms 86.55%
Req/Sec 3.58k 2.61k 22.35k 71.50%
1226739 requests in 30.10s, 142.73MB read
Socket errors: connect 157, read 41, write 0, timeout 0
Requests/sec: 40754.28
Transfer/sec: 4.74MB
А чо - ab сильно хуже да?
ок, jmc посмотрю
спасибо @prepor
видно да. Хм, все равно, чота количество ошибок удивляет, я думал будет 0
аа, я дурак - я той-же машины запускаю тесты
посмотри еще на immutant, он дает подтюнить через интероп внутрений undertow сервак
я думал просто netty вроде нынче самый быстрый из жавовых
есть же бенчмарк
правда старовастый
ага, я из него и исходил по сути
так там разве netty есть?
immutant 2 вон в первых рядах болтается
aleph это обертка над netty
запустил свои бенчмарки с aleph - теже цифры приблизительно что и immutant, второй правда дает более ровное распределение latency
а immutant использую чо для http?
я еще просто вот сюда смотрел https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test=plaintext
хм, опять начинаю думать взять на поиграться http://www.rapidoid.org/http-fast.html
> http://www.rapidoid.org/http-fast.html говноя явовское какое-то
зато быстро, вменяемый враппер на кложуре никто не мешает написать
http-kit какое-то полумертвое вроде
http-kit же вроде thread per request, нет?
и клиент тоже ._.
я помню на авс лямбде страдал, все работает а реквест не проходит
> и по-умолчанию там по количеству ядер или что-то такое, вроде не, не нашлось такое, тока в тестах закоменчено %)
а оно умирало и не ждало
> не, не нашлось такое, тока в тестах закоменчено %) да, не прав. оно запускает 1 io-тред и настраиваемое количество worker threads, где исполняет коллбэки (ринг-хандлеры)
вопрос - решит тут побенчить свой сервис перед релизом, потюнить всякие там параметры JVM, как обычно. Дак вот использую я этот wrk, но результаты от 15к до 25к гуляют, не могу заценить как влияют параметры даже. Коллега жавист обозвал меня нубом за то что я бенчу секунд 30 всего, даже GC не сработает мол. Дак а скок надо? На часик оставить?
сорри за нубские вопросы, с жвм совсем на Вы
неа, не успел сегодня, на завтра запланировал
30 секунд тоже мало. сколько тредов и конекшнов в wrk? задача померять макс trhoughput или типа вместимость при допустимой latency?
@larhat: Запускаю пока на своем ноуте как wrk -t5 -c2000 -d30s "
задача вместимость при допустимой latency
@rm: Да чота я думал что запущу ab да и все, потом уже когда уходил он мне объяснил на пальцах что там не все просто, завтра еще поболтаю
вот этот докладик еще посмотрел https://www.youtube.com/watch?v=0tUrbf6Uzu8 и тоже захотелось сделать чтоб после каждого комита бенчи запускались. Есть мож че готовое уже в мире, или все руками как всегда?
автор aleph ответил почему ab отваливается
The `ab` test timed out because you exhausted the ephemeral ports. You'll
typically see this every 16384 requests, when the OS doesn't have any more
ports to allocate, and has to wait for previous connections to fully
expire. You can work around this by specifying -k to use keepalive
connections, or to use the tuning parameters specified at the bottom of
this README: .
как человечество собирается двигаться к IoT, когда номер порта всё ещё 16-битный?.. ума не приложу
а научите меня мерять производительность: на ноуте запущен контейнер с nginx в докере, запускаю ./wrk -t12 -c400 -d30s http://192.168.99.100:80/ (как из репозитория пример) и получаю 3300 req/sec, max request = 2 sec. ну такие параметры нафиг же не нужны для большинства мелких приложений, столько клиентов вряд ли будет, не? а вот как выше @larhat писал: типа вместимость при допустимой latency
- это как измерить? допустим, хочу уложиться в 99,99% запросов в latency < 20 ms, как провести бенчмарк, чтобы найти max количество одновременных запросов к серверу? хотя бы примерно.
не надо 30с, нужно начать (с другой тачки) с малого числа, добиться стабильного результата, без дикого stddev
ну да, с бенчами у меня есть проблема в том, что сам ожидаешь какого-то результата и сам подстраиваешь параметры бенча под него
ещё полезно посмотреть или пересмотреть рассказ этот — https://www.youtube.com/watch?v=lJ8ydIuPFeU (есть его варианты ещё, с других конф) — там он про интересную проблемы coordinated omission рассказывает, которым страдают часто тестинговые тулзы