@jvmchat

Страница 1707 из 2890
Daniel
13.08.2017
19:18:54
потому что надо уметь её готовить.
если база из коробки не может жить без падений, она не сдалась

Vyacheslav
13.08.2017
19:19:02
Какой хайлоад без джавы?

Yuriy
13.08.2017
19:19:32
Отличный

Google
Yuriy
13.08.2017
19:19:45
5-6M RPS на 1 ноду

800 тактов проца на 1 http запрос :p

Vyacheslav
13.08.2017
19:20:44
Надо на тебя кривду натравить

Daniel
13.08.2017
19:21:14
желательно в отдельном канале

Vyacheslav
13.08.2017
19:21:34
Потереть за хайлоад

Yuriy
13.08.2017
19:22:03
Тут просто с джавой 300K RPS - потолок... Для 1M уже надо Disruptor, GC выключать в JVM, Azul'ы пробовать...

В DPDK с коробки от 1М RPS для простых сервисов ...

Потому что происходит напрямую работа с железом.

В общем пока не придумали нормальный interop с сишкой в Java9 ... можно особо не надеятся на Java и хайлоады.

А называть 300К RPS хайлоадом как-то сложно... уже даже golang так умеет ...

Yuriy
13.08.2017
19:58:24
Омг, а зачем гц выключать?
Задержки на сборку мусора большие, с Disruptor'ом можно сделать 0lock. Т.е. вся память приложения будет статической - один раз выделили и делаем realloc IO буферов и кольцевых буферов при backpressure. Потом вырубаем GC после прогрева машины.

Ivan
13.08.2017
19:59:37
Я как бы пользуюсь в проде дисраптором, но всё-равно не понимаю зачем отключать гц

Google
Yuriy
13.08.2017
19:59:57
lmax отключает у себя...

Azul Falcon может пропускать сборку мусора по тем же причинам.

В целом даже "пустой проход" gc по молодой выборке имеет довольно высокие накладные расходы, особенно если речь идёт о работе с большими страницами.

Vik
13.08.2017
20:01:13
Yuriy
13.08.2017
20:02:14
Им проще машинки перезагружать в конце business day
Стоит сначала ознакомиться с сабжем ...

Vik
13.08.2017
20:02:28
Yuriy
13.08.2017
20:02:35
Не заметно

Vik
13.08.2017
20:03:04
IMAX делали свою сборку java без gc

Yuriy
13.08.2017
20:03:14
Ага...

Vik
13.08.2017
20:04:00
Много памяти на машинках, никакой распределенки, а в конце для тупо перегружали

Yuriy
13.08.2017
20:04:31
... это было давно, сейчас нормально работает и без gc

Vik
13.08.2017
20:04:31
Не заметно
Хорошо что вы здесь обязательно поправите

Yuriy
13.08.2017
20:05:26
Просто на практике видел довольно много случаев HFT и RTB где в итоге вырубали GC.

Сейчас lmax вообще всё сделал на ПЛИСках и DPDK ... и это уже отдельная история.

В целом это как шутка про состояние продакшена без flame graph'ов. Мне будет сложно что либо объяснить без реальных примеров... ими не делюсь по понятным причинам.

Ivan
13.08.2017
20:17:54
lmax отключает у себя...
А логика такая: если LMAX у себя так делает, значит и всем нужно? Просто мы тоже биржевые данные перевариваем и на данный момент гц отнимает 5% цпу. Как бы не тот оверхед из-за которого стоит убиваться

Yuriy
13.08.2017
20:18:31
Просто сейчас бытует очень много предрассудков касательно сабжа и общих накладных расходов

В итоге масштабируют простой процессора в разных вариациях ...

Ivan
13.08.2017
20:19:18
И да, был доклад от Черёмина где он показал что вся прелесть дизраптора не в зеро гц

Google
Alex
13.08.2017
20:19:55
Кто-то упомянул Epsilon GC?

Yuriy
13.08.2017
20:20:20
И да, был доклад от Черёмина где он показал что вся прелесть дизраптора не в зеро гц
Простая реализация wait-free подхода для низких задержек - это была основная цель...

Кто-то упомянул Epsilon GC?
* пока его не ковырял, должно быть интересно

Alex
13.08.2017
20:21:14
По-моему, это пока что только драфт

Yuriy
13.08.2017
20:21:16
Шипелёв вроде его крутил ...

Yuriy
13.08.2017
20:22:40
Ну дык а причём тут тогда гц?
Он тоже влияет на доступность сервиса и общие задержки ...

Ivan
13.08.2017
20:23:10
Просто вообще говоря, работа с памятью через гц может быть эффективнее потому что балк операции

Чем через ручное удаление ссылок после каждого использования

Yuriy
13.08.2017
20:25:21
Ivan
13.08.2017
20:26:14
У LMAX проблема была в другом, они же биржевой софт делали для, собственно, биржи. Там немного другие требования, там нельзя чтобы одному ответ отдавался 1мс, а другому 20.

Ivan
13.08.2017
20:27:09
Почему ?
Потому что если он отнимает меньше 5% времени приложения, то 950к ~= 1М

Не, ну если, конечно совсем нефиг делать, то можно, конечно извращаться, но Вы уверены, что в вашем собственном коде всё идеально и проблема только в том что гц в соседнем потоке что-то делает с памятью?

Yuriy
13.08.2017
20:28:52
Ок, не думаю что мне стоит объяснять в чём разница между lock-free и wait-free подходами. Но в целом мы можем получить либо низкие задеркжи, либо высокую пропускную способность. Операции с памятью и проходы по генерациям ссылок тоже имеют свою стоимость - в итоге это тоже соответственно повлияет либо на пропускную способность либо на задержки.

Yuriy
13.08.2017
20:32:36
Омм.. как это соотносится с хайлоадом и 1М рпс?
Я не думаю что мне стоит продолжать это обсуждение.

Ivan
13.08.2017
20:33:00
Им проще машинки перезагружать в конце business day
Ну и кстати замечание Виктора тоже было вполне оправдано, ибо действительно у всех бирж есть расписание и действительно в лмакс решили что можно ребутать прилагу в конце дня

Yuriy
13.08.2017
20:34:10
Ок...

Если принято игнорировать потому что удовлетворяет бизнес требования - это не значит что это все игнорируют.

Google
Ivan
13.08.2017
20:35:34
Я не думаю что мне стоит продолжать это обсуждение.
Не, мы с чего начали-то? Что мол в рили хайлоаде гц не нужон, потому что накладные расходы и все дела, но на данный момент не вижу ни одной причины этого делать. И Вы как-то меня пока в этом тоое не убедили

Yuriy
13.08.2017
20:35:49
Я и не собирался.

В реальном мире Java разработчик никогда не перепрыгнет за 1M RPS.

Митко Соловец?
13.08.2017
20:36:24
В реальном мире Java разработчик никогда не перепрыгнет за 1M RPS.
мне не нравится твой стиль ведения беседы

и твои цели, что ты пришел сюда, тоже

Admin
ERROR: S client not available

Ivan
13.08.2017
20:37:04
Где 16М рпс )

Yuriy
13.08.2017
20:37:05
Что это ?

Ivan
13.08.2017
20:37:34
https://github.com/real-logic/aeron

Как-то да, получается известный спич из серии "пишите на плюсах потому что java тормозит"

Что вообще говоря не так )

Митко Соловец?
13.08.2017
20:39:30
а у чувачка в подписках канал pro.go

хэх

Ivan
13.08.2017
20:40:20
а у чувачка в подписках канал pro.go
Видимо там есть крутой интеропт с C++ )

Yuriy
13.08.2017
20:41:33
https://github.com/real-logic/aeron
Там MediaDriver отдельно обрабатывает входящий трафик и для таких RPS'ов они явно пишут что нужна Сишка с OpenOnload / DPDK или ПЛИСки.

Как-то да, получается известный спич из серии "пишите на плюсах потому что java тормозит"
Я не говорю что Java тормозит... у неё пока нет хорошего interop'a с сишкой.

Google
Yuriy
13.08.2017
20:44:11
Ну как, а это?
Потому что нет возможности вызывать существующие сишные API без высоких накладных расходов.

Ivan
13.08.2017
20:45:19
И вот я тебе привёл пример где большая часть написана на java и выжимают больше 10M рпс

Yuriy
13.08.2017
20:45:30
Вроде пилят быструю замену для jni
http://openjdk.java.net/jeps/191 Так точно.

И вот я тебе привёл пример где большая часть написана на java и выжимают больше 10M рпс
При это Java не обрабатывает трафик в Aeron'e при таких RPS'ах ...

Ivan
13.08.2017
20:47:38
При это Java не обрабатывает трафик в Aeron'e при таких RPS'ах ...
Там были разные бенчмарки и в том числе с java и с .Net

Кстати, прискорбная новость для всех в этом чатике, шарпы выиграли...

Yuriy
13.08.2017
20:50:27
Там были разные бенчмарки и в том числе с java и с .Net
Странно что нет упоминания про openonload ...

Ivan
13.08.2017
20:52:43
и про реальные приложения - у вас там счётчики сообщений или бизнес-логика? Если второе, но я пока не встречал ни одной бизнеслогики где все эти извращения типа отключения гц, зеро копи, и бла-бла-бла дают какой-то существенный выигрыш. Может кто поделится примерами?

Yuriy
13.08.2017
20:54:58
"бизнес-логика" это CRUD'ы AAA и валидация ?

В целом у меня лично большая часть этого барахла висит в PostgreSQL на мат. представлениях, правилах на правку/вставку и сишных триггерах, есть кастомный коннетор на shmem'e... JDBC не использую из-за костыльности - с базы сразу уходит JSON и кэшируется соответствующим образом. В качестве кэша сейчас использую свою реализацию Adaptive Replacement Cache.

Ivan
13.08.2017
20:59:10
"бизнес-логика" это CRUD'ы AAA и валидация ?
Бизнес-логика - это чтр конкретно приложение делает, кроме того что выдаёт 1м рпс )

Yuriy
13.08.2017
21:00:29
Это приложение выдаёт пока 400К RPS из-за проблем с PostgreSQL'eм - сейчас патчим 10ый на поддержку blobfs для WAL журнала... банально проседают IOPS'ы.

1M у меня было на RTB бирже.

Нетфликс тоже вот сейчас собирается потиху слезать на SPDK для WAL журналов и прочего.

Изучал сегодня особенности применения x86 intrinsic'ов в JIT'e ... В целом включение -XX:-OptimizeFill -XX:-UseSuperWord даёт хороший прирост, но к сожалению много существующих SIMD инструкций просто не используются. В Java9 сейчас ситуация гораздо лучше в этом плане.

Arrow
14.08.2017
05:30:59
У меня есть приложение на Spring, в нем генерируется файл и отдается методом в контроллере. Я пока сделал так что этот метод отдает byte[], но это не то что нужно. Когда я открываю эту страницу в браузере то мне выводит просто набор символов (тот самый массив байтов), а надо чтобы начиналось скачивание этого файла. Как мне переделать метод?

Страница 1707 из 2890