Сабина wrote:kostik78 wrote:Сабина wrote:
Так а что его отлавливать - момент когда память >95% четко отмечен, а так же и ошибки UNKNOWN_MEMBER_ID в логах. Вся загадка в том что все остальное BAU. Есть еше мысль enable zk or kafka debug, но это проишодт раз в сто лет - фиг отловишь. Вся надежда была на dump
Обычно наличие исходников и dump достаточно чтобы разобраться в чем дело. Найдите сервак с большим обьемом памяти и настройте ssh X forwarding и вперед
Думаю что найдете в чем дело.
Костя, а вы знакомы с такой штукой
https://blogs.oracle.com/dholmes/entry/ ... concurrent" onclick="window.open(this.href);return false;
в частности со свойством - parallelLockMap ?
Из того что я вижу heap доминирован by instances of org.apache.zookeeper.proto.CreateResponse
последние имеют свойство classloader - > parallelLockMap
и в етой HashMap parallelLockMap сидят наши мессаджи которые приходят от системы, которая сильно глючила в последнее время ( то есть была задержка). Может GC потoму и запаздывает что пока весь Record не процессится он с хипа не пропадает ? А он не процессится потому что other remote system is slow (bottleneck)
Ну это ж нормально. У нас аппликуха базируется на Spring Boot& Spring Integration и часть промежуточных результатов пишется в ElasticSearch.
Этот процесс достаточно быстрый, но всё же медленней чем сам расчёт. Поэтому, я пишу через очередь, чтобы развязать расчёт и запись реzультатов.
Иногда очередь раздувается до десятков миллионов сообщений и их надо где-то хранить. Поэтому я сделал -Xmx80G и не плачу.
У меня к завершению счёта уже все результаты в ElastcSearch и обычной базе, очередь снова пустая.
При неприемлимом времени ответа, можно написать/сконфигурировать reaper, который будет очередь по таймауту очищать.
В JDK8 потребности в fine tuning JVM не возникало, а в предыдущих таки были.
В JDK8 очень зачётная JMX консоль, мы довольно много косяков с её помощью нашли.