|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
хелп. есть 2 spring boot апликации, первая примитивно ловит рест вызовы, пишет факт вызова в базу и по рест дергает вторую аппликацию. вся логика по обработке вынесена во вторую апликацию. так вот, дня три назад, внезапно, обе апликации "подвисли" так, что томкат от спринг бута вроде коннекцию держит (telnet на порт томката коннектится), но ничего не отвечает. я рестартанул первую апликацию и констатировал что вторая тоже висит так же, хотя во второй апликации spring scheduller исправно запускал параллельные треды с задачами. и так два раза. проверял вызовами из postman - срабатывает timeout вместо ожидаемого "Bad Request". после этого проапгрейдил с java 14 до 15, spring boot c 2.2.1 до последнего 2.4.1. не помогло. в логе ничего интересного, в линуксовых тоже в лог выводится INFO, наверно надо на что-то TRACE ставить. что еще можно посмотреть/сделать ? сейчас апикация стартует вот так . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.1) 2020-12-17 11:34:47.011 INFO 29024 --- [ main] com.sample.bitrixgw.BitrixgwApplication : Starting BitrixgwApplication v0.1-SNAPSHOT using Java 15.0.1 on test02 with PID 29024 (/opt/webapi/bitrixgw-0.1-SNAPSHOT.jar started by root in /opt/webapi) 2020-12-17 11:34:47.015 INFO 29024 --- [ main] com.sample.bitrixgw.BitrixgwApplication : No active profile set, falling back to default profiles: default 2020-12-17 11:34:49.656 INFO 29024 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http) 2020-12-17 11:34:49.676 INFO 29024 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2020-12-17 11:34:49.676 INFO 29024 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.41] 2020-12-17 11:34:49.789 INFO 29024 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2020-12-17 11:34:49.789 INFO 29024 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2650 ms 2020-12-17 11:34:50.499 INFO 29024 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2020-12-17 11:34:50.776 WARN 29024 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration) 2020-12-17 11:34:50.994 INFO 29024 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '' 2020-12-17 11:34:51.022 INFO 29024 --- [ main] com.sample.bitrixgw.BitrixgwApplication : Started BitrixgwApplication in 5.209 seconds (JVM running for 6.795) 2020-12-17 11:35:09.912 INFO 29024 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2020-12-17 11:35:09.913 INFO 29024 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2020-12-17 11:35:09.915 INFO 29024 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 2020-12-17 11:35:09.959 WARN 29024 --- [nio-8081-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'event' is not present] ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 11:49 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
видимо тред-пул забился. В таких случаях нужно снимать thread dump через jstack ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 13:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Сумбур какой то. Ну подвески. Потом перегрузите. И опять повисла или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 13:22 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
pavel_nv видимо тред-пул забился. В таких случаях нужно снимать thread dump через jstack спасибо, почитаю. врядли тред-пул в обоих апликациях забился разом (плюс спринг шедуллер свои задачи запускал исправно), но наверно зацепки в дампе можно будет поискать. PetroNotC Sharp hck2, Сумбур какой то. Ну подвески. Потом перегрузите. И опять повисла или что? да, рестартанул, через пол дня "зависло", проапгрейдил либы и жава, снова "зависло". сейчас первая апликация с logging.level.org.apache.tomcat=DEBUG logging.level.org.apache.catalina=DEBUG работает. жду затыка. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 13:39 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, "жду" Не жди. Изучай слово мониторинг и нагрузочное тестирование ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 13:43 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
дождался, в логе 2020-12-17 14:36:58.233 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=503 2020-12-17 14:36:58.557 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=504 2020-12-17 14:36:58.912 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=505 2020-12-17 14:36:59.277 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=506 2020-12-17 14:36:59.637 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=507 2020-12-17 14:36:59.958 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=508 2020-12-17 14:37:00.295 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=509 2020-12-17 14:37:00.597 DEBUG 793 --- [o-8081-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-8081-Acceptor] latch=510 я верно понимаю что мне нужно тредов томкату увеличивать ? server.tomcat.max-threads=1000 - должно помочь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 14:53 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
нет, не верно. нужно разбираться почему у тебя медленно выполняются запросы, что аж 200 потоков не могут обработать все входящие запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 14:56 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 pavel_nv видимо тред-пул забился. В таких случаях нужно снимать thread dump через jstack спасибо, почитаю. врядли тред-пул в обоих апликациях забился разом (плюс спринг шедуллер свои задачи запускал исправно), но наверно зацепки в дампе можно будет поискать. судя по всему все 200 потоков на первом аппе ждут пока ему ответят из апп 2 (у тебя же в потоке запроса выполняется запрос ко второму аппе, судя по начальному описанию). Так что нужно изучать апп2 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 14:59 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
pavel_nv, Есть мнение 350 макс поставь ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:02 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Запрос в веб приложений выполняется за сотне доли сек? Это не десктоп? В десктоп хоть 8часов транзакцию держи. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:05 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Нужна диагностика уровня Томката. Посмотри сколько исполняется запросов в данный момент. И с какого IP адреса они идут. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:07 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp pavel_nv, Есть мнение 350 макс поставь Ставьте. а потом выяснится что у него размер пула БД 20, и 180 потоков просто ждут его освобождения что бы БД сходить. В общем без понимания природы приложения это как пальцем в небо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:11 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
pavel_nv, это default ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:13 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
pavel_nv hck2 пропущено... спасибо, почитаю. врядли тред-пул в обоих апликациях забился разом (плюс спринг шедуллер свои задачи запускал исправно), но наверно зацепки в дампе можно будет поискать. судя по всему все 200 потоков на первом аппе ждут пока ему ответят из апп 2 (у тебя же в потоке запроса выполняется запрос ко второму аппе, судя по начальному описанию). Так что нужно изучать апп2 да, так и есть - апп1 ждет когда апп2 прожует запрос и помечает в базе все ли хорошо прошло. ок, я понял. буду думать как их общение асинхронным делать. в принципе я не ожидал, что там и 10 потоков одновременно окажутся занятыми, но битрикс24 умеет удивлять. на одно изменение в сделке прилетает много десятков вызовов. в результате апп1 еще и ddos экраном выступает и 10 секунд ждет, что бы не забить апп2 дублирующими вызовами. ок, буду думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, необязательно все что в жизни тормозит пускать асинхронно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:22 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
>ловит рест вызовы, пишет факт вызова в базу логгер всех http вызовов писать в бд это убийственно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:25 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 pavel_nv пропущено... судя по всему все 200 потоков на первом аппе ждут пока ему ответят из апп 2 (у тебя же в потоке запроса выполняется запрос ко второму аппе, судя по начальному описанию). Так что нужно изучать апп2 да, так и есть - апп1 ждет когда апп2 прожует запрос и помечает в базе все ли хорошо прошло. ок, я понял. буду думать как их общение асинхронным делать. в принципе я не ожидал, что там и 10 потоков одновременно окажутся занятыми, но битрикс24 умеет удивлять. на одно изменение в сделке прилетает много десятков вызовов. в результате апп1 еще и ddos экраном выступает и 10 секунд ждет, что бы не забить апп2 дублирующими вызовами. ок, буду думать. Подожди. На 1 изменение в сделке прилетает много десятков вызовов? А в каком порядке они прилетают? В каком порядке система успеет их обработать? Система идемпотентна? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:31 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >ловит рест вызовы, пишет факт вызова в базу логгер всех http вызовов писать в бд это убийственно нет, в базу записываю только те реквесты, что прислали верный application_token ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:32 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 PetroNotC Sharp >ловит рест вызовы, пишет факт вызова в базу логгер всех http вызовов писать в бд это убийственно нет, в базу записываю только те реквесты, что прислали верный application_token ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:39 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, а фильтр это не приложение application ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:40 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
очередная жертва микросервисов что ли.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Да неизвестно что там за база. В последнее время этот термин стал ... слишком расплывчатым. EventStore - база? ХЗ. Как по мне - просто свалка событий. Или InfluxDb - база? Хз. Как по мне просто лог измерений. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:44 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, таких бд тут и нету😎 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 16:03 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Подожди. На 1 изменение в сделке прилетает много десятков вызовов? А в каком порядке они прилетают? В каком порядке система успеет их обработать? Система идемпотентна? системе пришлось стать идемпотентной. битрикс24 все, что может - сообщить что есть изменение в сделке/товаре/задаче как я понимаю одно изменение в сделке запросто запускает некие бизнес процессы, которые считают скидку и еще что-то и каждый шаг в процессе видимо генерирует свой рест вызов. и то что я пытаюсь однотипные запросы пропускать уже мало спасает, я и с 1000 threads похоже зависну 2020-12-17 17:53:07.752 DEBUG 9390 --- [-8081-exec-1030] o.apache.tomcat.util.threads.LimitLatch : Counting down[http-nio-8081-exec-1030] latch=911 2020-12-17 17:53:48.814 DEBUG 9390 --- [-8081-exec-1031] o.apache.tomcat.util.threads.LimitLatch : Counting down[http-nio-8081-exec-1031] latch=910 2020-12-17 17:53:49.815 DEBUG 9390 --- [-8081-exec-1032] o.apache.tomcat.util.threads.LimitLatch : Counting down[http-nio-8081-exec-1032] latch=909 а можно как-то понять ли среди этих 909 threads зависших из-за б24 ? вероятно апп2 коннектится к б24, пытаясь выяснить что же в сделке изменилось и висит (таймаут я помню выкручивал). при этом висит и апп1 ожидая ответа. mayton Да неизвестно что там за база. В последнее время этот термин стал ... слишком расплывчатым. EventStore - база? ХЗ. Как по мне - просто свалка событий. Или InfluxDb - база? Хз. Как по мне просто лог измерений. обычная mariadb. в ней я и записываю реквесты от б24. я посмотрел, все таки это апп2 по этой бд вычисляет, что уже есть более свежие и однотипные запросы и можно ревест не выполнять. PetroNotC Sharp очередная жертва микросервисов что ли.... нет, идея иметь самое примитивное приложение на переднем крае, в котором нечему ломатся и которое не пропустит вызовы от б24. а вот апп2 тяжелое и может себе позволить не успеать или вовсе упасть. когда поднимется, разгрести очередь из mariadb. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 18:15 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Я понятия не имею что такое битрикс. Но если у тебя количество threads такое большое - то я-бы проанализировал 1) зачем они нужны? 2) что они делают в данный момент. Сделай в JVisualVM dump stacktrace. Если они 99% висят на ожидании третьих сервисов - то просто количественное их увеличение ничего не даст. Ботлнек не в твоей системе а в другой. 3) обсуди укрупнение threads. Пускай 1 thead делает пакетные действия за 1 roundtrip в сеть. Для любой нормальной системы просто количество theads за 1000 штук уже вызывает подозрения. Кроме того у каждого thread есть минимальный footprint по памяти порядка 10M. При таком подходе пустые ничего не делающие потоки сожрут 10 гигабайт безо всякой пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 18:33 |
|
|
start [/forum/topic.php?fid=59&msg=40028741&tid=2120566]: |
0ms |
get settings: |
23ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
541ms |
get tp. blocked users: |
2ms |
others: | 283ms |
total: | 928ms |
0 / 0 |