
Boris
12.02.2017
21:19:51
корне

Руслан
12.02.2017
21:19:56
ага, есть такое

Boris
12.02.2017
21:20:10
и томуподобной фигни
я столько говна с этом шадуом съел

Google

Boris
12.02.2017
21:20:47
больше только со спринг-бутом ?

Руслан
12.02.2017
21:21:27
а может еще вспомнишь что-то конкретное?

Boris
12.02.2017
21:22:23
ну, самое банальное -- это то, что по джарке часто сложно сказать, что именно в неё в итоге попало

Руслан
12.02.2017
21:22:50
т.е. ты собрал джарку, и не можешь в ней разобраться?

Boris
12.02.2017
21:23:00
ну да
если пытаешься со спрингом его использовать, то это просто бесконечное количество конфликтов файловых
но у бутового пакера есть свои проблемы из за особенностей доступа к запакованным в jar jar-кам

Sergey
12.02.2017
21:25:37

Boris
12.02.2017
21:25:44
типа, попытка найти несущестующий файл может занимать столько времени, что если у тебя какая-то библиотека делает это в цикле, то время загрузки можно увеличить в разы

Sergey
12.02.2017
21:25:44
а для чего не fat jar может быть лучше?

Руслан
12.02.2017
21:26:00
Я вот залез в джар, META-INF/maven. там список либ

Boris
12.02.2017
21:26:24
да, в какой-то момент они это добавили
я его использовал последний раз года два назад может три

Google

Руслан
12.02.2017
21:26:48

Boris
12.02.2017
21:27:55
я про мавеновский и говорю

Руслан
12.02.2017
21:28:13
а, я просто грэдлом собирал эту джарку
проблему одинаковых файлов понимал, но пока не сталкивался

Boris
12.02.2017
21:28:33
грейдловый не видел, там обычно это просто делается одной строчкой склеивающей все файлики зависимостей
что совсем страшно

Руслан
12.02.2017
21:29:09
мы используем mergeServiceFiles, т.к. у нас на них все построено
остальное пока не тревожило, спрингом не пользуемся, у нас альтернативный стэк)

Boris
12.02.2017
21:30:33
Это хорошо, каждой задаче свои инструменты
Просто нужно знать, что такое бывает
И быть к этому готовым

Руслан
12.02.2017
21:31:58
с учетом докера сегодня кажется что проще использовать application plugin, он отлично ложится на слои, image растет очень умеренно

Boris
12.02.2017
21:32:12
К тому же сейчас плагины стали умнее, многие проблемы умеют лечить

Руслан
12.02.2017
21:32:41
ну проблему с двумя ресурсами врядли они вылечат, это надо классы патчить)

Boris
12.02.2017
21:33:21
Ну, если известный формат, то можно мерджить
Но это конечно не то что хотелось бы

Руслан
12.02.2017
21:34:19
странно что классы принято расскладывать по пакетам, а ресурсы - нет

Boris
12.02.2017
21:34:20
А что у вас за альтернативный стэк?

Руслан
12.02.2017
21:34:37
http://bootique.io/

Google

Boris
12.02.2017
21:34:55

Sergey
12.02.2017
21:35:18
т.е выкатывать апликейшен в виде пачки джарников это окей?

Руслан
12.02.2017
21:35:33
посмотри на idea)

Boris
12.02.2017
21:36:04

Руслан
12.02.2017
21:36:14

Boris
12.02.2017
21:36:34
Самый безглючный способ
Фэтджар просто удобнее
Особенно если он еще и экзекютабл

Sergey
12.02.2017
21:37:43
грепать процессы так не очень удобно из-за большой команды для запуска всего этого дела

Руслан
12.02.2017
21:37:52
ну вот jlink придет, и будет действительно executable)

Boris
12.02.2017
21:38:28

Руслан
12.02.2017
21:39:35
надо пользоваться удобными инструментами для грепанья)

Boris
12.02.2017
21:39:42

Sergey
12.02.2017
21:39:56

Руслан
12.02.2017
21:39:58
ага

Boris
12.02.2017
21:41:26
Или go. Надеюсь меня закидают тухлыми помидорами

Руслан
12.02.2017
21:41:42
или опять же, собрал jlink, вкинул в докер, и потом только маленький jar обновляется

Google

Sergey
12.02.2017
21:43:30
java -Xmx32m -Xss256k -jar build/libs/guice-1.0-SNAPSHOT-all.jar хелоуворлд с guice занял 55мб в памяти.
jvm так и не научилась меньше кушать?

Руслан
12.02.2017
21:44:04

Boris
12.02.2017
21:44:55

Sergey
12.02.2017
21:46:53

Руслан
12.02.2017
21:48:34
ну RSS это же еще и shared память
у меня полноценное приложение с джусом, базой, рестом, хтмлом, очередью на xmx10m стартует и работает)

Sergey
12.02.2017
21:51:27
и сколько памяти кушает?

Руслан
12.02.2017
21:51:39
ну это сложный вопрос)
загружено 5к классов, размер стека не задавал
метаспейс около 28мб
VIRT 5Gb, RES 105*Mb

Sergey
12.02.2017
21:53:53
хм)

Boris
12.02.2017
21:54:05
Экономно

Руслан
12.02.2017
21:55:57
правда все-таки свалилось с OOM когда запрос пыталось обработать)
но хэлс чеки отдает)

Sergey
12.02.2017
21:56:36
у меня спрингбут приложуха 170мб кушает
запускал по рекомендуемым параметрам отсюды https://spring.io/blog/2015/12/10/spring-boot-memory-performance

Google

Boris
12.02.2017
21:57:05
Спринг довольно прожерливый

Sergey
12.02.2017
21:57:34
эт да
без параметров висит приложуха похожая, там 652мб уже

Boris
12.02.2017
21:58:02
Ну и сильно от поднятой инфраструктуры зависит

Sergey
12.02.2017
21:58:34
и висит веб на пхп. потребления пару мб) отрабатывает только когда приходят запросы в пул

Руслан
12.02.2017
21:59:21
ну а теперь пусти 1000 человек на php и на java
аккуратно написанный java сервер вида не даст, и дальше свой гигабайт будет отжирать)

Boris
12.02.2017
22:00:35
Ну, так можно не давать так много памяти, я так думаю, что и на 256к будет отлично работать, только мусор придется чаще собирать
Да, пхп вообще умирает после обработки -- вообще ничего жрать не должен
Пока запросы не придут, зато уж если придут...

Руслан
12.02.2017
22:02:46
ну окей, мое полноценное приложение на джаве на 11мб хипа, и при стеке в 256кб отлично работает)

Sergey
12.02.2017
22:03:14
ну а теперь пусти 1000 человек на php и на java
запрос отработает за 40-70мс, каждый активный запрос примерно 30мб кушает. учитывая что на сервере будет всего 2-4 ядра, то одновременно много не будет обрабатываться, и все будут стоять в очереди. так что до гига вряд ли дойдет)

Руслан
12.02.2017
22:04:07

Sergey
12.02.2017
22:04:26
андертоу рулит?

Boris
12.02.2017
22:04:51

Руслан
12.02.2017
22:05:13
конечно нет смысла, но чисто из теоретических соображений...
У меня вот это приложение сейчас на проде ест 270мб)

Sergey
12.02.2017
22:06:09

Tony
12.02.2017
22:07:52
Using month variable rewrite this pattern in such a way that it matches the date in format 13 JUN 1992 (two digits, a whitespace, a month abbreviation, a whitespace, four digits).

Boris
12.02.2017
22:07:59

Tony
12.02.2017
22:08:01
val month = "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)"
fun getPattern(): String = """\d{2}\s\?:$month\s\d{4}"""