Fork me on GitHub
#clojure-russia
<
2016-02-11
>
delaguardo02:02:47

Nomad посмотри, прямо один в один твоя мысль

konukhov02:02:15

да, спасибо – похож на то, что нужно. я его видел, пока не пойму, то или нет. кто еще что юзает? еще вот такую штуку нашел: https://github.com/luminus-framework/config я еще спрашиваю потому, что привык к рельсам, и как там конфиги устроены. есть ямлы, есть dotenv, в ямлах всегда можно интерполировать енв-переменные и т.д. а вот как в мире jvm и прочего принято? ну не может быть, что только рельсы удобно эту проблему решили simple_smile

konukhov02:02:17

а, окей, то есть я могу прям в build.boot зариквайрить nomad и прочитать конфиг уже там.

konukhov02:02:25

с lein не представляю, как это сделать

delaguardo03:02:26

А, т.е. тебе надо сам leiningen менять в зависимости от конфига?

delaguardo03:02:06

Это по-моему была главная цель появления boot) сделать конфигурацию programmable

konukhov03:02:57

да, в leiningen это дикая боль просто. а в буте уже что-то получается с номадом. так что спасибо – то, что нужно, оказалось!

delaguardo04:02:10

В leiningen проектах я обычно создаю smthngs.config namespace и в нём делаю то что мне нужно для конфигурации , в частности достаю из Номад. Не сказать что это идеоматично но проблему решает

artemyarulin11:02:26

народ, решил потестить я aleph, буквально код

(serve (constantly {:body "{}" :status 200}) port)
запустил ab -n 10000 -c 100 Выдало жалкие 5к/сек с 99% в пределах 22мс, бе. Но ладно, вопрос в том что если в следующий раз запущу то ab после 6к реквестов застопорится и потом вовсе отватился по таймауту.

artemyarulin11:02:43

запускаю java -server -jre uber.jar

artemyarulin11:02:01

есть еще какая магия может?

artemyarulin11:02:41

я в жаве нуб полнейший, но слышал что можно тюнить жаву, разные параметры, все такое, когда GC запускать и прочее

konukhov11:02:07

у меня так же было с http-kit, когда тестил ab

konukhov11:02:39

а jetty – rock-solid

konukhov11:02:57

поэтому тоже интересно

artemyarulin11:02:45

блять. простите

artemyarulin11:02:01

переезжать на jetty терь чтоли

artemyarulin11:02:44

@konukhov: А ты с jetty как работал из кложуры?

konukhov11:02:00

ring-jetty9-adapter

konukhov11:02:28

там же по дефолту jetty8, вообще. или я не так понял вопрос?)

konukhov11:02:41

в ринге по дефолту, в смысле

artemyarulin11:02:09

эм, хз про ринг - счас использовал тока чистый алеф

konukhov11:02:51

аа, понял. ну да, в ring дефолтный сервер – jetty и так.

seryh11:02:35

а что тогда не так с http-kit если он использует ring который использует jetty ?

larhat11:02:44

ринг это такая спека, либа-прослойка

larhat11:02:52

типа rack в рубях или wsgi в питоне

larhat11:02:24

у http-kit свой сервер

konukhov11:02:46

так я и говорю об http-kit сервере

konukhov11:02:15

почему он отдает таймауты с ab, вот что интересно.

artemyarulin12:02:53

может просто GC запускается и весь мир ждет?

artemyarulin12:02:29

Ну вот получилось счас еще раз зупустить:

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)

artemyarulin12:02:53

11сек, пиец

artemyarulin12:02:34

это же не может быть GC? Я конечно знаю что там все останавливается но не на столько же, не?

prepor12:02:54

для начала стоит выкинуть аб и посмотреть чем нибудь нормальным

prepor12:02:14

потом запусть jmc и посмотреть что же происходит с твоей жвм

artemyarulin12:02:54

Запустил, хм.

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

artemyarulin12:02:12

А чо - ab сильно хуже да?

artemyarulin12:02:26

ок, jmc посмотрю

prepor12:02:16

> А чо - ab сильно хуже да? а не видно? )

artemyarulin12:02:46

видно да. Хм, все равно, чота количество ошибок удивляет, я думал будет 0

artemyarulin12:02:19

аа, я дурак - я той-же машины запускаю тесты

delaguardo12:02:38

посмотри еще на immutant, он дает подтюнить через интероп внутрений undertow сервак

artemyarulin12:02:37

я думал просто netty вроде нынче самый быстрый из жавовых

kronos_vano12:02:26

есть же бенчмарк

kronos_vano12:02:32

правда старовастый

artemyarulin12:02:32

ага, я из него и исходил по сути

delaguardo12:02:00

так там разве netty есть?

delaguardo12:02:22

immutant 2 вон в первых рядах болтается

artemyarulin12:02:48

aleph это обертка над netty

delaguardo12:02:08

запустил свои бенчмарки с aleph - теже цифры приблизительно что и immutant, второй правда дает более ровное распределение latency

artemyarulin13:02:31

а immutant использую чо для http?

artemyarulin13:02:25

хм, опять начинаю думать взять на поиграться http://www.rapidoid.org/http-fast.html

prepor13:02:53

> http://www.rapidoid.org/http-fast.html говноя явовское какое-то

prepor13:02:02

поджо, билдеры, аннотации

artemyarulin13:02:34

зато быстро, вменяемый враппер на кложуре никто не мешает написать

prepor13:02:22

что быстро то? а что не быстро? jetty, undertow, netty, http-kit все "быстрое"

kronos_vano13:02:21

http-kit какое-то полумертвое вроде

prepor13:02:11

ну оно работает и тупое (в смысле реально тупое, там многие кейсы упрощены)

prepor13:02:17

что не мешает ему быть "быстрым"

artemyarulin13:02:05

http-kit же вроде thread per request, нет?

prepor13:02:24

ни разу вообще

seryh14:02:53

в http-kit 4 потока подефолту и все, и опционально можешь увеличить. как я понял

prepor15:02:00

пацаны

prepor15:02:08

хттп кит неблокирущий сервер

prepor15:02:18

если хочется "быстро", то и блокировать не нужно потоки

prepor15:02:38

и по-умолчанию там по количеству ядер или что-то такое, вроде

Kira Sotnikov15:02:36

и клиент тоже ._.

Kira Sotnikov15:02:50

я помню на авс лямбде страдал, все работает а реквест не проходит

larhat15:02:55

> и по-умолчанию там по количеству ядер или что-то такое, вроде не, не нашлось такое, тока в тестах закоменчено %)

Kira Sotnikov15:02:56

а оно умирало и не ждало

prepor15:02:23

> не, не нашлось такое, тока в тестах закоменчено %) да, не прав. оно запускает 1 io-тред и настраиваемое количество worker threads, где исполняет коллбэки (ринг-хандлеры)

larhat15:02:56

угу, а для клиента тредпул во всю ширину

artemyarulin15:02:02

вопрос - решит тут побенчить свой сервис перед релизом, потюнить всякие там параметры JVM, как обычно. Дак вот использую я этот wrk, но результаты от 15к до 25к гуляют, не могу заценить как влияют параметры даже. Коллега жавист обозвал меня нубом за то что я бенчу секунд 30 всего, даже GC не сработает мол. Дак а скок надо? На часик оставить?

artemyarulin15:02:28

сорри за нубские вопросы, с жвм совсем на Вы simple_smile

larhat15:02:55

а ты под jmc уже смотрел, как @prepor советовал

larhat15:02:02

чтобы не гадать, были ли gc или не

artemyarulin15:02:39

неа, не успел сегодня, на завтра запланировал

rm15:02:39

> колега жавист ну напряги его помочь, он же жавист

larhat16:02:19

30 секунд тоже мало. сколько тредов и конекшнов в wrk? задача померять макс trhoughput или типа вместимость при допустимой latency?

artemyarulin16:02:21

@larhat: Запускаю пока на своем ноуте как wrk -t5 -c2000 -d30s "" —latency

artemyarulin16:02:40

задача вместимость при допустимой latency

artemyarulin16:02:42

@rm: Да чота я думал что запущу ab да и все, потом уже когда уходил он мне объяснил на пальцах что там не все просто, завтра еще поболтаю

artemyarulin16:02:17

вот этот докладик еще посмотрел https://www.youtube.com/watch?v=0tUrbf6Uzu8 и тоже захотелось сделать чтоб после каждого комита бенчи запускались. Есть мож че готовое уже в мире, или все руками как всегда?

artemyarulin17:02:48

автор 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: .

be918:02:14

как человечество собирается двигаться к IoT, когда номер порта всё ещё 16-битный?.. ума не приложу

prepor18:02:38

ipv6 и порты не нужны

be918:02:16

что кончится раньше: нефть или адреса IPv4?

dottedmag19:02:02

Из бочки нефти никак не сделать NAT'ом миллион бочек, так что нефть.

abtv22:02:50

а научите меня мерять производительность: на ноуте запущен контейнер с 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 количество одновременных запросов к серверу? хотя бы примерно.

larhat22:02:42

не надо 30с, нужно начать (с другой тачки) с малого числа, добиться стабильного результата, без дикого stddev

larhat22:02:50

и постепенно увеличивать нагрузку

larhat22:02:59

(подкрутив заодно ulimit)

larhat22:02:23

старое, но принципы хорошие

abtv22:02:16

начать с другой машины и с меньшего (чем 30) числа секунд?

larhat22:02:17

с малого числа соединений и запросов, да

larhat22:02:24

плохо написал, простите :)

larhat22:02:42

больше чем 30сек надо, иначе будет разброс скорее всего большой

abtv22:02:12

аа, логично, спасибо за статью и совет идти итерациями)

larhat22:02:31

просто если сразу тестить в оверкапасити, то непонятно что намеряешь

abtv22:02:25

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

larhat22:02:47

ещё полезно посмотреть или пересмотреть рассказ этот — https://www.youtube.com/watch?v=lJ8ydIuPFeU (есть его варианты ещё, с других конф) — там он про интересную проблемы coordinated omission рассказывает, которым страдают часто тестинговые тулзы

abtv22:02:24

спасибо