
Mikhail
12.10.2018
09:03:42

Anton
12.10.2018
09:03:53

Almas
12.10.2018
09:04:01
Можно код или кейс когда начинает жрать
всем день добрый, призываю адептов спринга с вопросом: почему spring-boot c rest-api и вебсокетами жрет 640 мб оперативы практически без нагрузки?

Google

Диоген
12.10.2018
09:04:05
Пишешь
@Bean
Map<Type, Handler> beanMap(List<Handler> handlers){
handlers.stream...toMap();
}

Павел
12.10.2018
09:04:20
А так выходит мне и аннотация кастомная не понадобится если сработает

Диоген
12.10.2018
09:05:30
Если у тебя "ТИП" указан только в аннотации, тебе без рефлексии этот тип не вытащить никак.
Ну то етсь берешь handlers.stream..(hadler.getClass.getAnnotation.getType) - хуита в общем

Mikhail
12.10.2018
09:06:47

Alexandr
12.10.2018
09:07:59

Mikhail
12.10.2018
09:08:26

Sergey
12.10.2018
09:09:54
юзаю undertow
-xmx 350M - обслуживает 4-5 запроса в секунду спокойно

Yaroslav
12.10.2018
09:10:41

Диоген
12.10.2018
09:11:01
>-xmx 350M
> 4-5 запроса в секунду
хеллоу_ворлд_почти_совсем_не_тормозит.жпг

Google

Mikhail
12.10.2018
09:11:16


Aleksey
12.10.2018
09:13:11
Xmx300m = 640мб со всеми нон-хипами
Ну дак это как сборщику в голову взбредёт, когда там GC делать, когда память обратно отдавать. Я вроде про это рассказывал :) https://shipilev.net/talks/javazone-Sep2018-shenandoah.pdf, начиная со слайда 62
Можешь попробовать во время простоя попросить Full GC у G1, и посмотреть, чем это закончится -- будет понятно, сколько там реально данных, а сколько "подушка". "jcmd <pid> GC.run", например

Mikhail
12.10.2018
09:14:14

Mikhail
12.10.2018
09:16:16

Mikhail
12.10.2018
09:16:48

Aleksey
12.10.2018
09:16:58
Я не о том. А о том, что сборщики придерживают память "на всякий случай", чтобы её в горячих случаях не просить. И сколько эта подушка размером -- это зависит от реализации и политик GC. Это ещё без того, что тот же G1 может не делать mixed сборку, если ему того не хочется по соображениям throughput'а, хотя это и просаживает footprint.
Не надо сразу хипдамп, хотя бы Full GC попроси :)
(Желательно несколько раз)

Mikhail
12.10.2018
09:19:39
говорит, что com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

Aleksey
12.10.2018
09:20:26
Пользователь должен быть тот же, что целевую JVM запустил. Ну или sudo.

Mikhail
12.10.2018
09:21:19
да, прям от того же юзера заработало
через sudo не хотело

Alexandr
12.10.2018
09:24:28
блин, похоже Шипилев то настоящий
по диалогу)

Aleksey
12.10.2018
09:25:53

Mikhail
12.10.2018
09:26:08

Google

Mikhail
12.10.2018
09:26:41
на сотню меньше стало

Митко Соловец?
12.10.2018
09:27:12
все ли зависимости тебе нужны

Mikhail
12.10.2018
09:27:27

Митко Соловец?
12.10.2018
09:27:36
ситуация какая, ты добавляешь либы в класспаз и аннотацию @SpringBootApplication - он начинает создавать бины
ты можешь заэксклюдить лишнее

Aleksey
12.10.2018
09:28:54
То есть >20% -- это не сильно, ок :) Жёлтое -- это metaspace (там где хранятся данные классов), а светло-голубое -- это code cache (там где хранится сгенирированный JIT-ом код). Отсюда надо разбираться, откуда там навалило столько кода, через зависимости поди.

Митко Соловец?
12.10.2018
09:29:27
точно 640м не жрет пустой спринг

Mikhail
12.10.2018
09:29:28

Aleksey
12.10.2018
09:29:44
Надеюсь, что нигде в ключиках не выставлен -XX:-ClassUnloading или какая-нибудь такая же хня

Mikhail
12.10.2018
09:30:23

Митко Соловец?
12.10.2018
09:30:25
ага, тест, веб, datasource

Павел
12.10.2018
09:31:16

Mikhail
12.10.2018
09:31:55

Alexandr
12.10.2018
09:32:07
жук, котлин и сваггер тянут не мало

Aleksey
12.10.2018
09:32:32
А ничего Спринг -- 22 тысячи классов "всего" загружено, ёптыть.

Google

Alexandr
12.10.2018
09:32:35
подключаем project-report, собираем отчет и смотрим зависимости

Mikhail
12.10.2018
09:32:37

Alexandr
12.10.2018
09:33:24
ну и можно посмотреть в идее что вторится суммарно и подумать что вырезать

Mikhail
12.10.2018
09:33:49

Aleksey
12.10.2018
09:33:50
Если хочется посмотреть на нативную память с точки зрения JVM, то можно NMT включить и помедитировать: https://shipilev.net/jvm-anatomy-park/12-native-memory-tracking/ -- вот оно наверняка скажет, что "Class" занимает дофига.

Alexandr
12.10.2018
09:34:57

Admin
ERROR: S client not available

Alexandr
12.10.2018
09:35:20
потом в project report смотреть откуда эксклудить лишнее

Роман
12.10.2018
09:35:26
это все автоконфиг, помню как-то взял с start.spring.io hello world с несколькими стартерами, закинул на сервак
оно 500МБ оперативки отъело
убрал автоконфиг, добавил зависимости вручную, 150 стало

Mikhail
12.10.2018
09:38:34

Aleksey
12.10.2018
09:39:40

Mikhail
12.10.2018
09:43:08

Aleksey
12.10.2018
09:45:48
Но я б с NMT сначала "на столе" поигрался, чтобы понять, что можно в конфигурации подрезать, а потом деплойнуть сразу разумную
(опять же, сначала надо зависимости подрезать, а потом уж только NMT)

Mikhail
12.10.2018
09:47:36
что значит зависимости подрезать? вроде особо и нет ничего

Aleksey
12.10.2018
09:49:04
Ну если нету, и придётся с этим жить, то тогда да, к тюнингу JVM прямая дорога.

Alexander
12.10.2018
10:28:19
ребята, может кто поделиться решением для работы с КриптоПРО CSP 4 (через MS CryptoIAPI или может другие варианты) в Java без JCSP?

Google

Sergey
12.10.2018
10:39:20
Не получиться у тебя нормально работать с крипто про из джавы без JCP

Alexander
12.10.2018
10:41:01

Iliya
12.10.2018
10:41:44
а Bouncy Castle ?
или нужна сертифицированность или что-то из именно Крипто Пры

Alexander
12.10.2018
10:42:50

Iliya
12.10.2018
10:43:42
тогда про JNI дельный совет если это винда
а есть нативный крипто про для линукса?

Sergey
12.10.2018
10:50:33
Есть, но это всё издевательство чистой воды

Ignat
12.10.2018
11:32:15
добрый день
помогите, пожалуйста, найти трабл: https://pastebin.com/ZrnuD8KS
без аннотации всё инжектится нормально

Диоген
12.10.2018
11:34:02

Ignat
12.10.2018
11:34:13
без кастомной, собственно
@HelloWorld

Павел
12.10.2018
11:48:21

Anton
12.10.2018
11:49:06

Павел
12.10.2018
11:49:26
С анотацией сам бин чище
Да рефлексия и тд. Но это в одном месте скрыто

Anton
12.10.2018
11:50:32
3 строчки загрезняют код?

Павел
12.10.2018
11:50:47
В каждом бине