|
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 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Или 10 или 1 мегабайт я не помню точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 18:35 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, авторнет, идея иметь самое примитивное приложение на переднем крае, в котором нечему ломатся и которое не пропустит вызовы от б24. а вот апп2 тяжелое и может себе позволить не успеать или вовсе упасть. когда поднимется, разгрести очередь из mariadb. Аффтар! Я поражаюсь. Вот вы счас обосновали выбор Message Driven архитектуру. Два раза произнесли слово очередь. А построили два синхронных экзешника друг в друге? Какой у вас сервер очередей? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 18:44 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, По постановке тоже интересно. Бизнес логика тяжелая, 2 минуты сохраняет заявку на сантехника. Может не успеть куда? Потом вы сами решили что ему можно упасть? И вы решили что все запросы можно сохранить куда то, чтобы тот жирный сервер поднялся и все разгреб! А юзверю вы на кнопу Создать заявку отписали что создана? Хотя сервер в дауне? Ниче не понятно по юзкейсам. Удачи аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 19:06 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Забавно когда Async-Servlets тоже не помогают ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 20:05 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
открыл для себя утилиту jstack и нашел в чем дело. я несколько бинов пометил SCOPE_PROTOTYPE и случайно на restTemplate тоже бахнул @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) и теперь у меня вопрос, а что же произошло ? судя jstack часть вызовов зависали на блокировке на сутки "http-nio-8081-exec-71" #101 daemon prio=5 os_prio=0 cpu=17.60ms elapsed=83489.77s tid=0x00007f7adc0476c0 nid=0x6028 runnable [0x00007f7ad20dc000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.SocketDispatcher.read0(java.base@15.0.1/Native Method) at sun.nio.ch.SocketDispatcher.read(java.base@15.0.1/SocketDispatcher.java:47) at sun.nio.ch.NioSocketImpl.tryRead(java.base@15.0.1/NioSocketImpl.java:261) at sun.nio.ch.NioSocketImpl.implRead(java.base@15.0.1/NioSocketImpl.java:312) at sun.nio.ch.NioSocketImpl.read(java.base@15.0.1/NioSocketImpl.java:350) at sun.nio.ch.NioSocketImpl$1.read(java.base@15.0.1/NioSocketImpl.java:803) at java.net.Socket$SocketInputStream.read(java.base@15.0.1/Socket.java:981) at java.io.BufferedInputStream.fill(java.base@15.0.1/BufferedInputStream.java:244) at java.io.BufferedInputStream.read1(java.base@15.0.1/BufferedInputStream.java:284) at java.io.BufferedInputStream.read(java.base@15.0.1/BufferedInputStream.java:343) - locked <0x000000008eec03a8> (a java.io.BufferedInputStream) at sun.net.www.http.HttpClient.parseHTTPHeader(java.base@15.0.1/HttpClient.java:754) at sun.net.www.http.HttpClient.parseHTTP(java.base@15.0.1/HttpClient.java:689) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(java.base@15.0.1/HttpURLConnection.java:1623) - locked <0x000000008eec9e88> (a sun.net.www.protocol.http.HttpURLConnection) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(java.base@15.0.1/HttpURLConnection.java:1528) - locked <0x000000008eec9e88> (a sun.net.www.protocol.http.HttpURLConnection) at java.net.HttpURLConnection.getResponseCode(java.base@15.0.1/HttpURLConnection.java:527) at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:82) at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:775) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:710) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:601) at com.sample.bitrixgw.BitrixRestController.productUpdate(BitrixRestController.java:85) at jdk.internal.reflect.GeneratedMethodAccessor40.invoke(Unknown Source) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@15.0.1/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@15.0.1/Method.java:564) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1061) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) я думал в худшем случае получу оверхед на создание нового объекта restTemplate, а тут выглядит что некая очередь образовалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 11:35 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Этот поток в состоянии Runnable, и он ждёт ответа от сервиса. Заблокированы потоки были бы blocked или waiting ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 11:56 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Возможно имеет смысл подтюнить httpclient, задать размер пула подключений, установить connection timeout и read timeout ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 12:04 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
pavel_nv Этот поток в состоянии Runnable, и он ждёт ответа от сервиса. Заблокированы потоки были бы blocked или waiting да, дальше идут тысячи blocket, не удачный пример взял. но с этим тогда не понятно, elapsed=83489.77s не должен был рест столько ждать. у меня вот так создавался restTemplate: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 12:15 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 и теперь у меня вопрос, а что же произошло Нужно давать больше цифр. Например, логи где тормозит, по крупному. То есть сколько идёт запрос на app2 и на app1 Сколько требуется по ТЗ и расчётная длительность по нагрузкам. Если 10 одновременных юзверей вешают систему то надо пересмотреть архитектуру. Например не логировать каждый запрос в сессии, а только начало сессии. Или писать в оперативку а не на диск или .... Разобраться нужно ли вам помнить что запрашивалось когда сервер был в дауне на перезагрузке. И кто это будет помнить. Долго вы думаете над обычными вещами по техническому заданию ака ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 13:23 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, там 10 юзеров, нет там никакой нагрузки. в целом за день порядка 10-15к вызовов, с пиками до 4 тысячи в отдельные часы. даже у связанных апп1 и апп2 еще запас на увеличение нагрузки в тысячи раз. проблема кажется найдена, присмотревшись к jstack логу увидел, что те что BLOCKED, они все уперлись в synchronized метод. это я подправлю. но у меня остался вопрос по логу с Thread.State: RUNNABLE, почему у restTemplate не отработал ReadTimeout ? я помню, что летом у моего restTemplate был дефолтный timeout и я заметил, что у меня вылетали по timeout попытки записи огромных сделок с сотнями продуктов. потому добавил setReadTimeout(), но похоже вместо timeout получил бесконечное ожидание. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 18:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Ну если нет нагрузки то вам решать. Приложение одного окна может в принципе и 500 запросов в сек слать при ОДНОМ переходе на окно Аналитика заказов. Вам виднее. ... Метод синхронизации должен отсутствовать везде. С этого надо начинать топик. Везде убрали? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 18:56 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
хм, а теперь я получил java.util.ConcurrentModificationException at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1631) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:891) at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:951) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:773) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:710) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:601) at com.sample.webapi.services.OpencartSyncService.processProduct(OpencartSyncService.java:109) at com.sample.webapi.services.OpencartSyncService$$FastClassBySpringCGLIB$$4fe6ea9e.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at com.sample.webapi.services.OpencartSyncService$$EnhancerBySpringCGLIB$$fa9863a9.processProduct(<generated>) at com.sample.webapi.services.ProductProcessor.productUpdate(ProductProcessor.java:78) at com.sample.webapi.RestGatewayController$2.run(RestGatewayController.java:125) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832) это что, получается restTemplate нифига не thread safe и нужно SCOPE_PROTOTYPE возвращать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 11:55 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 хм, а теперь я получил java.util.ConcurrentModificationException at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1631) Тут похоже ты из двух потоков бегаешь итераторами по массиву и без синхронизации его изменяешь. По PROTOTYPE ничего не могу сказать т.к. я пока не вижу связи. И вообще на рубеже 1-й страницы пора уже нам увидеть твои исходники. Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 11:58 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Вот один вариант. Со ссылкой на https://www.codejava.net/java-core/concurrency/java-concurrent-collection-copyonwritearraylist-examples Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:16 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, >это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
В связи с короной появилось так много желающих засунуть свой код в поток. Казалось бы, что изменилось за последние месяцы? Но многие почему то хотят распарралелить и самому а коде наплодить потоков. Одновременно заявляя выше - "нагрузка у нас небольшая! Штук 10 юзверей)))))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:29 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp hck2, >это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. это ж как бэ разное. блокирующий и thread safe. Тут где то callback(requestCallback) хитрый/неявный возможно передается это раз, Два в параметры точно передаются immutable structures? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:33 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming, Ну дак они зависят друг от друга. Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации. И блокировать ничего не надо. Железная логика? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
ТЗ 1. Нагрузка небольшая - 10 юзверей 2. Все встает колом... 3. Возможно причина в блокировках. Вопрос - что из трех лишнее в архитектуре (оверхед)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. PetroNotC Sharp lleming, Ну дак они зависят друг от друга. Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации. И блокировать ничего не надо. Железная логика? Нет. Фраза стояла синхронный клиент имеется ввиду блокирующий поток клиент, при этому он может быть как и thread safe и не thread safe. jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:55 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Тут похоже ты из двух потоков бегаешь итераторами по массиву и без синхронизации его изменяешь. но стектрейс же уходит глубоко в restTempalte потроха. или я чего-то глобально не понимаю ? mayton По PROTOTYPE ничего не могу сказать т.к. я пока не вижу связи. ну а как остальные используют restTempalte ? врятли же выстраивают в очередь все вызовы рест клиента. по стектрейсу четко видно, что внутри restTemplate что-то ломается при параллельных вызовах. как я понимаю самый адекватный ответ - PROTOTYPE и плодить на каждый вызов отдельный инстанс restTemplate или я совсем неверно рассуждаю ? mayton Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно. так там же весь проект тогда надо выставлять, я еще к такому не готов. PetroNotC Sharp hck2, >это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. я понял что речь о том что каждый мой поток синхронно ответ получит. PetroNotC Sharp В связи с короной появилось так много желающих засунуть свой код в поток. Казалось бы, что изменилось за последние месяцы? Но многие почему то хотят распарралелить и самому а коде наплодить потоков. Одновременно заявляя выше - "нагрузка у нас небольшая! Штук 10 юзверей)))))) LOL это проект, не основная моя работа и на половину ради того, что бы именно такие вещи для себя прокачать. долбить параллельно это правильно, ставить в очередь во первых не правильно, во вторых я попробовал. тот самый synchronized метод, который существенную часть нагрузки выстроил в очередь и я получил тысячи blocked тредов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 12:57 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming PetroNotC Sharp >это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. PetroNotC Sharp lleming, Ну дак они зависят друг от друга. Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации. И блокировать ничего не надо. Железная логика? Нет. Фраза стояла синхронный клиент имеется ввиду блокирующий поток клиент, при этому он может быть как и thread safe и не thread safe. jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон. Странный ты. Thread safe это доступ из не кольких потоков. Конечно если блокировать олновременный доступ то и вопрос теряет смысл. Уже пофигу становится, thread on safe или нет))). В jdbc как раз - одно соединение на поток. И все будет нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:09 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно. так там же весь проект тогда надо выставлять, я еще к такому не готов. Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса. Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:10 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
>jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон. Он синхронный и не Thread Safe, ПОЭТОМУ приходится плодить! Причина и следствие! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Ты в курсе что "в очередь" не существует в веб. Контейнер сам плодит потоки для запросов. Есть потоки серверные и есть потоки КЛИЕНТСКОГО КОДА. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:15 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Твоя очередь не существует с 2003 года SingleThreadModel https://www.google.com/search?q=singlethreadmodel&oq=singlethreadmodel&aqs=chrome..69i57j0j0i30l3.11433j0j4&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:23 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
[quot hck2#22251435] mayton ну а как остальные используют restTempalte ? врятли же выстраивают в очередь все вызовы рест клиента. по стектрейсу четко видно, что внутри restTemplate что-то ломается при параллельных вызовах. как я понимаю самый адекватный ответ - PROTOTYPE и плодить на каждый вызов отдельный инстанс restTemplate или я совсем неверно рассуждаю ? Ты имеешь в виду это? https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html Давай глянем доку. Я попробую с моим хреновым intermediate Хоть что-то перевести. Synchronous client to perform HTTP requests, exposing a simple, template method API over underlying HTTP client libraries such as the JDK HttpURLConnection, Apache HttpComponents, and others. The RestTemplate offers templates for common scenarios by HTTP method, in addition to the generalized exchange and execute methods that support of less frequent cases. NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern API and supports sync, async, and streaming scenarios. Синхронный клиент предназначенный для выполнения HTTP-запросов предоставляющий простой шаблонный API сквозь базовые HTTP-библиотеки такие как HttpUrlConnection, Apache HttpComponents и другие. RestTemplate предлагает шаблон для общих сценариев с использованием HTTP, в дополнение к общим методам обмена данными и исполнения которые поддерживают не очень частые вызовы. Уведомление. Начиная с версии 5.0 этот класс - в режиме поддержки, которая делается только с минорными изменениями и багами в будущем. Пожалуйста рассмотрите использование org.springframework.web.reactive.client.WebClient который имеет более современный API и поддерживает sync, async, and streaming сценарии использования. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:24 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса. Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку. я реально не понимаю для чего. разве стектрейс не снимает полностью "вину" с логики моего приложения ? почему по представленому стектрейсу поставить однозначный диагноз ? at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:891) заполняет какой-то свой ArrayList, разве не это показывает стектрейс ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:25 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса. Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку. я реально не понимаю для чего. разве стектрейс не снимает полностью "вину" с логики моего приложения ? почему по представленому стектрейсу поставить однозначный диагноз ? at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:891) заполняет какой-то свой ArrayList, разве не это показывает стектрейс ? Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил или сдела неправильное допущение. На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что случилось ДО ТОГО и как. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:28 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса. Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку. я реально не понимаю для чего. разве..... Еще один ленивый показать код ошибки... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:30 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон. Он синхронный и не Thread Safe, ПОЭТОМУ приходится плодить! Причина и следствие! Если следовать этой логике то это взаимоисключащие характеристики и вместо синхронный можно использовать thread safe и избавить еще от одного ненужного термина. Повторю еще раз что resttemplate что apache http client под синхронным не подразумевается thread safety а то что используется блокирующее IO. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:32 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Ну вот навскидку https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe RestTemplate is thread-safe once constructed не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:38 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Thread safe и синхронизм - это желтое и квадратное. Потокобезопасность может быть реализована по разному. На блокировках. На атомиках. Вообще на отсутсвии конкуренции если задача такое позволяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:43 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил или сдела неправильное допущение. На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что случилось ДО ТОГО и как. да блин, я же никого не обвиняю и не жалуюсь. я реально напрегся, почему по этому стектрейсу люди с опытом не поставили однозначный диагноз и просят код, прототип и т.п. я волнуюсь, что что-то упустил глобально. разве стектрейс не говорит однозначно, что это restTemplate свой внутренний ArrayList заполняет и падает при параллельном использовании ? если именно это происходит, то понятно, что я неверно использую restTemplate. зы. по документации я вроде читаю по английски и вижу про Synchronous client, в про thread safe ничего не говорится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:54 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Хватит уже болтать. Показывай где ArrayList или его итератор. Ты его - шаришь между потоками. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:58 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил или сдела неправильное допущение. На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что случилось ДО ТОГО и как. да блин, я же никого не обвиняю и не жалуюсь. . И мы тебя не обвиняем. Ты хороший. Но закругляйся болтать и дай пример на sleep() ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 14:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил или сдела неправильное допущение. На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что случилось ДО ТОГО и как. да блин, я же никого не обвиняю и не жалуюсь. я реально напрегся, почему по этому стектрейсу люди с опытом не поставили однозначный диагноз и просят код, прототип и т.п. я волнуюсь, что что-то упустил глобально. разве стектрейс не говорит однозначно, что это restTemplate свой внутренний ArrayList заполняет и падает при параллельном использовании ? если именно это происходит, то понятно, что я неверно использую restTemplate. зы. по документации я вроде читаю по английски и вижу про Synchronous client, в про thread safe ничего не говорится. стектрей это и говорит но не видно зачем ктото меняет ему его. Код: java 1. 2. 3. 4. 5. 6.
точно нигде setMessageConvertes() или getMessageConverters не вызывается и руками не меняется ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 14:28 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Нужно везде если инжектится RestTemplate поменять на RestOperations и если приложение не компилируется то где то косяк ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 14:30 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming стектрей это и говорит но не видно зачем ктото меняет ему его. Код: java 1. 2. 3. 4. 5. 6.
точно нигде setMessageConvertes() или getMessageConverters не вызывается и руками не меняется ? вызывается, чуть выше код где я restTemplate bean создаю https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331858&msg=22250648 выходит редиска найдена ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 14:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Попробуй работать с копией массива. Код: java 1.
Только копию создавай не здесь. А до того как стартовал поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming Ну вот навскидку https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe RestTemplate is thread-safe once constructed не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера. Я писал объект ThreadSafe который перестал падать просто добавив синхронизацию или блокировку в метод. То есть я тупой и глючный объект просто затормозил! Теперь мы почему то топим за restTemplate который тоже модели поток на запрос. Пока не вернется ответ, поток будет заблокирован! Спринг след версии сменят объект класс на НЕБЛОКИРУЮЩИЙ! И не буде этого restTemplate. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:21 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Эволюция: - контейнер SingleMode для тех кто пишет по старинке на глобальных)) - контейнер не SingleMode и убрана эта галка - для продвинутых в 2003 году - потоки в приложении и пул для тех кто не доверяет потоку и пулу выше и любит свои велосипеды (ТС тут) - асинхронный неблокирующий клиент спринг бут с java8 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:28 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe) между потоками. А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:32 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, При использовании потоков и пула серверного никаких багов. А счас он полубеременный. Спринг заменил класс на котором он пишет асинхронно. Асинхронно блокируя он пишет)))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe) между потоками. А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили. а вот тут у меня вопрос. если это спринг, почему не проканало ? без анотации как я понимаю при старте должен был оздатся бин restTemplate, в нем просетится setMessageConvertes() и дальше все должны были использовать этот бин без изменений. почему я получил ошибку ? с анотацией @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) каждый тред должен был бы создавать свой бин и каждый делать setMessageConvertes() своему бину. тем не менее я снова получил ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:48 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe) между потоками. А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили. а вот тут у меня вопрос. если это спринг, почему не проканало ? без анотации как я понимаю при старте должен был оздатся бин restTemplate, в нем просетится setMessageConvertes() и дальше все должны были использовать этот бин без изменений. почему я получил ошибку ? с анотацией @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) каждый тред должен был бы создавать свой бин и каждый делать setMessageConvertes() своему бину. тем не менее я снова получил ошибку. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Если так написать проект компилируется ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:55 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp lleming Ну вот навскидку https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe RestTemplate is thread-safe once constructed не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера. Я писал объект ThreadSafe который перестал падать просто добавив синхронизацию или блокировку в метод. То есть я тупой и глючный объект просто затормозил! Теперь мы почему то топим за restTemplate который тоже модели поток на запрос. Пока не вернется ответ, поток будет заблокирован! Спринг след версии сменят объект класс на НЕБЛОКИРУЮЩИЙ! И не буде этого restTemplate. поток мысли какой то претензия к PetroNotC>это что, получается restTemplate нифига не thread safe Ну дак в справке по нему написано - для СИНХРОННОГО доступа. То что написано в справке не иммет отновшения к thead safe а только то что внизу блокирующее IO. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:02 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Если так написать проект компилируется ? компилируется, но тесты попадали с No qualifying bean of type 'org.springframework.web.client.RestTemplate' available: expected at least 1 bean which qualifies as autowire candidate. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:05 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming, То что спринг НЕ РЕКОМЕНДУЕТ использоаать restTemplate это для тебя поток мыслей? Ну ОК)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:08 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Я имею ввиду нигде в коде руками не вызывается getConverters() setConverters() ? Если вместо RestTemplate инжектить RestOperations то это гарантируется чистоту RestTemplate помимо того что конфигурацию поправлена нужно и инжекты поменять Код: java 1. 2. 3. 4. 5. 6. 7.
ну и в конструкторах если иньекция через конструктор ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:11 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
блин, нашел. одной строчкой выше же Код: java 1. 2. 3. 4. 5.
ок, теперь понятно почему в без анотаци падало. один единственный бин и ему меняют ... а все это время работало потому, что именно этот метод был по synchronize. поток вызовов вырос, synchronize начал создавать проблемы, а без него ... вот оно что. я почти начал понимать как оно у меня работает lleming No qualifying bean of type 'org.springframework.web.client.RestTemplate' available: а, наверно в одном только тесте мало поменять на RestOperations, надо было же во всем коде подменить, остальной код тоже же автовайрит ... попозже попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:29 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp lleming, То что спринг НЕ РЕКОМЕНДУЕТ использоаать restTemplate это для тебя поток мыслей? Ну ОК)) Одни рекомендуют апаче коммонс другие не рекомендуют. Это лишь мнение, и же не имеет отношения к обсуждаемому нами вопросу и его истинности ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 20:47 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
lleming, Хмм. Чтобы не обсуждать нужность или не нужность класса достаточно просто афишировать вот так: "Я в курсе что рекомендовано не поворачивать направо и в курсе что потеряю коня". То есть, я как ТС в курсе, что данный шаблон это калька jdbcTemplate. И спринг его в след версии прекратит поддержку. Но мне надо так, и мы это не обсуждаем. ... После этой фразы я интерес то потеряю к этому топику)). Нафиг легаси обсуждать. Если он уберет все Runnable/future/thread и отдаст это контейнеру то все и так заработает))) на 10 юзверей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 22:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Да легаси это не страшно. По 10-20 лет легаси работает. Другое дело что джунский вопрос о ConcurrentModificationException вызывает у автора беспомощность. А это вопрос по java-core. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 00:20 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Согласен. До 2000 года меня не было)). Когда все java прогеры писали потоки. Потом сделали контейнер чтобы они не делали это. Просто контейнер сам запускал поток чтобы юзверь вложил свой кусок кода. Наверно думали что так проще и юзверю потоки знать не нужно. Для 10 клиентов то)) Потом что то пошло не так и IT опять качнуло на future/runable. А потом вообще на стримы потоки данных. Как знатно качает то лодку в периоде 20лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 08:32 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Да легаси это не страшно. По 10-20 лет легаси работает. Другое дело что джунский вопрос о ConcurrentModificationException вызывает у автора беспомощность. А это вопрос по java-core. вы на меня наговариваете не было беспомощности, я сразу начал обвинять restTemplate в отсутствии thread safe PetroNotC Sharp lleming, Нафиг легаси обсуждать. Если он уберет все Runnable/future/thread и отдаст это контейнеру то все и так заработает))) на 10 юзверей. до этих выходных так и работало: б24 слал рест запрос в апп1, апп1 писала в mariadb и дергала апп2, апп2 шла в б24 выясняя, что собственно обновилось в б24. в итоге все всех ждали. и в принципе эта схема работала, пока летом я не заметил "11-го пользователя" - какой-то робот массово что-то в товарах меняет. мои приложения параллельно получают сотню вызовов и я испугался за б24, если я в рамках своей тупой схемы буду делать сотни реквестов разом в б24, ему поплохеет. вот тут я и бахнул не долго думая synchronize только на обработчик товаров. интересно, что мина сработала лишь спустя пол года. ладно, на выходных я все общение переделал отдельными тредами. апп1 получая от б24 реквест отвечает 200, в отдельном потоке оповещает апп2, апп2 тоже сразу отвечает 200, в отдельном потоке стартует бизнес логику. synchronize я убрал, но теперь мне нужно думать, как при массовом обновлении товаров в ответ не заддосить б24. как я понимаю самое правильное было бы городить полноценную очередь, может у спринга что-то такое есть, относительно полноценное но в mysql базе, без messanging quene типа кафки и кролика. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 11:11 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Если про архитектуру, то - можно построить без очередей синхронно и по старинке. Но надо знать занафига впереди стоит тормоз app1 и пишет в бд - можно построить очередь и Message oriented middleware. Но вы не хотите делать полноценные корпоративные - можно сделать на новой boot 2.0 где модуль web разъехался на servlet or reactive Решать вам. Развилочка зависит от лени и изучать что то новое ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 11:31 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Если про архитектуру, то - можно построить без очередей синхронно и по старинке. Но надо знать занафига впереди стоит тормоз app1 и пишет в бд без очередей и синхронно это сколько запросов получил я столько же навалится на б24, а тот не факт, что сдюжит. апп1 спасает от полного фейла, если я завтра снова накосячу с synchronize в апп2 и апп2 встанет колом, то я смогу исправить, передеплоить, найти еще косяк, снова передплоить, но быть уверенным, что апп1 все это время пишет задания и я пропущенные вызовы, пусть и с опазданием, но обработаю. PetroNotC Sharp - можно построить очередь и Message oriented middleware. Но вы не хотите делать полноценные корпоративные у меня есть опыт со спарком на основной работе и уже есть приложение на спарке в этом проекте ... да, шедуллер на spark streaming, читает из кафки и запускает нужный процессинг звучит как страница кода, но меня пока пугает администрирование кафки. но в связке с уже имеющимся спарк может оно и ничего. PetroNotC Sharp - можно сделать на новой boot 2.0 где модуль web разъехался на servlet or reactive а чем реакт может помочь в регулировании потока вызовов в сторону б24 ? это же просто колбэк функции, много прилетит ко мне, много вылетит и от меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 21:58 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 без очередей и синхронно это сколько запросов получил я столько же навалится на б24, а тот не факт, что сдюжит Переведи свою мысль ты бы схемку нарисовал как обрабатываюся запросы б24. Где твой б24 на картинке? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 23:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 но быть уверенным, что апп1 все это время пишет задания и я пропущенные вызовы, пусть и с опазданием, но обработаю. Чем плохо? hck2 и я пропущенные вызовы, пусть и с опазданием, но обработаю. а почему нельзя регистрировать сущность Заявка в ИС и потом их хоть послезавтра обработать? А вы для такой ерунды ставите целый app2 с СУБД. hck2 а чем реакт может помочь в регулировании потока вызовов в сторону б24 ? это же просто колбэк функции, много прилетит ко мне, много вылетит и от меня. вот поэтому надо разобраться "с потоками данных" DFD (диаграммы потоков данных). авторДиаграмма потоков данных (data flow diagram, DFD) — один из основных инструментов структурного анализа и проектирования информационных систем, существовавших до широкого распространения UML. Википедия Потому что ваше: "апп1 все это время пишет задания" любой бизнес аналитик перепишет как: "в ИС предусмотреть регистрацию заявок". И нету вашей проблемы вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 23:50 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
авторпомочь в регулировании потока Автор! Надо начать ещё раньше - от печки. У тебя 10 юзверей. Нагрузка небольшая. Кто придумал регулировать потоки? Программист? Зачем? Почему? Где сама проблема? Где тонкое место? Вот с этого надо начинать в архитектуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 23:56 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Обоснование нужности апп1 у вас такое: авторапп1 спасает от полного фейла, если я завтра снова накосячу с synchronize в апп2 и апп2 встанет колом, то я смогу исправить, передеплоить, найти еще косяк, снова передплоить, но быть уверенным, что апп1 все это время пишет задания и я пропущенные вызовы, пусть и с опазданием, но обработаю. Непонятен юз кейс: - вы накосячили с апп2 и он встал колом (порт 8085 не отвечает) - апп1 при этом должен логировать(накапливать) задания от битрикса? Юзверь ничего не должен замечать? ... Тогда вопросы: - почему не взять позже самому aпп2, запросив у битрикса, что он там наработал во время болезни? Битрикс же полноценная платформа с рест и СУБД? - если это нельзя, то почему изначально app1 и апп2 не отвязаны друг от друга? Например, апп1 пишет в бд инфу, а апп2 это JOB/ шедулер проходящий раз в минуту по таблице заданий? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 08:19 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, я бы посоветовал Spring Cloud Stream Kafka, если страшно сначала на низком уровне с кафкой возиться. Но без брокера очередей достаточно трудно будет избежать затора между вашими приложениями, если скорость обработки большого числа сообщений от одного превышает скорость другого ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 00:14 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2 если скорость обработки большого числа сообщений от одного превышает скорость другого ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 11:23 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp а почему нельзя регистрировать сущность Заявка в ИС и потом их хоть послезавтра обработать? А вы для такой ерунды ставите целый app2 с СУБД. ок, попробую нарисовать поток данных сверху вниз. 1) 1с склады, 1с может быть инициатором массовых обновлений товара в битрикс24, думаю остатков. пока сталкиваюсь порядка 200 одновременных событий. 2) битрикс24 црм, тут 10 пользователей + некие роботы, они могут десятки событий, например задачи генерировать. битрикс24 не может послать в рест вызов, что именно у него изменилось. там можно подписаться лишь на оповещение о том что такая-то сущность изменилась. вот такие оповещения по рест битрикс24 шлет в ап1. 3) апп1 - записывает факт вызова в табличку с автоинкрементом, отвечает 200 на вызовы от б24 и в отдельном потоке дергает апп2. задача апп1 не пропустить ни одного вызова б24 и работать в моменты когда я редеплою или решаю проблемы апп2. 4) апп2 - получает вызовы от апп2, с выходных тут же отвечает 200 и в отдельном потоке процессит события. задачи решает разноплановые: - постройка витрин для отчетной системы (строит исторические таблицы, т.к. црм не хранит историю) - синхронизирует данные с инет магазинчиком (синхронизирует товары, сделки, клиентов) - контролирует некоторые бизнес процессы б24, например при выполнении складским работником б24 задачи, дергает бизнес процесс. - помогает с массовыми загрузками, периодическими выгрузками. 5) инет магазинчик получает рест вызовы от апп2 если апп2 решило что изменение в товаре или сделке должно отобразится в инет магазине 6) powerbi отчетики, поверх витрин построенных апп2 так вот возвращаясь к вопросу, ждать послезавтра нельзя. послезавтра сделка уже пару стадий сменит и апп2 в исторических таблицах много интересного пропустит. поэтому ради витрин истории, некоторые вещи, желательно обработать поскорей, что бы застать как можно больше изменений. если сделка в течении пары минут изменилась несколько раз, апп2 что-то пропустит, но все таки трагедии не будет. пострадает точность прогнозов и отчетики, но если речь о минутах, то не критично страдает. у покупателя инет магазинчика тоже не будет трагедии если он увидит статус заявки опозданием несколько минут, но часы уже могут породить вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 12:53 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2 hck2, я бы посоветовал Spring Cloud Stream Kafka, если страшно сначала на низком уровне с кафкой возиться. Но без брокера очередей достаточно трудно будет избежать затора между вашими приложениями, если скорость обработки большого числа сообщений от одного превышает скорость другого я размышляю на счет spark + kafka, но еще не уверен, что готов именно админить кафку. если сломается оракл или mysql, я знаю что такое redo, как починить в любой ситуации. просто запустить кафку по инструкции не выйдет, надо понимать куда бежать, если она поломается. и еще есть такой вопрос, допустим апп1 пишет в один единственный топик кафки, апп2 читает этот топик, но у меня такой нюанс, что в сделке 100 позиций товара, я пытаюсь сохранить остаток товара в момент создания сделки. для этого я делаю запрос на сущность сделки и 100 запросов в на каждую позицию в сделке, что бы выяснить остаток в сущности товар. вероятно мне нужно 2 топика, в первом от апп1, одно сообщение, во втором 101 сообщение. выходит апп2 будет само себе сообщение слать. как-то ... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:13 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 если сломается оракл или mysql, я знаю что такое redo - выбор простой. Вы развиваетесь как java программист или как прогер на двухзвенке клиент-сервер. Работать будет и там и там. Вам решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:28 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 4) апп2 - получает вызовы от апп2, с выходных тут же отвечает 200 и в отдельном потоке процессит события. задачи решает разноплановые: - постройка витрин для отчетной системы (строит исторические таблицы, т.к. црм не хранит историю) - синхронизирует данные с инет магазинчиком (синхронизирует товары, сделки, клиентов) - контролирует некоторые бизнес процессы б24, например при выполнении складским работником б24 задачи, дергает бизнес процесс. - помогает с массовыми загрузками, периодическими выгрузками. получает вызовы от апп1, конечно же, и забыл самое главное - на каждый событие, делает минимум один рест колл в б24, запрашивая сущность, по которой произошло событие (сделку, товар, задачу, контакт, и т.п.). при этом в случае со сделкой анализирует таблицу событий (записанной апп1) и выфильтровывает дублирующие сообщения на тему сделки, в случае с товаром анализирует кол-во запросов и пытается ограничивать кол-во одновременных запросов в битрикс24, что бы не заддосить сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:31 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, нарисовать можете квадратики и стрелочками вызовы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:35 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
ТС, вы не ответили на все вопросы. Я их много задал. Возможно надо было по одному задавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:37 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp нарисовать можете квадратики и стрелочками вызовы? нет. вы на каждую стрелочку лишь наплодите больше бестолковых и неинтересных мне вопросов. остальные как я вижу и так понимают, что я пытаюсь надизайнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 Кофейник2 hck2, я бы посоветовал Spring Cloud Stream Kafka, если страшно сначала на низком уровне с кафкой возиться. Но без брокера очередей достаточно трудно будет избежать затора между вашими приложениями, если скорость обработки большого числа сообщений от одного превышает скорость другого я размышляю на счет spark + kafka, но еще не уверен, что готов именно админить кафку. если сломается оракл или mysql, я знаю что такое redo, как починить в любой ситуации. просто запустить кафку по инструкции не выйдет, надо понимать куда бежать, если она поломается. Полностью поддерживаю это беспокойство. Если ломается БД - у нас есть 100% документированные механизмы восстановления незакоммиченных данных и главное... есть саппорт и есть вменяемая оценка по срокам. В случае с кафкой, как мы видим у джавистов - нулевой опыт восстановления сбойных хранилищ. И тут любое неверное движение или неверно понятая документация - и данные ресетнулись и месседжинг покатился с нуля. А возможностей прокачать подобный опыт у джавистов мало - т.к. технологий очень много а ситуации когда надо восстанавливать файловые структуры - бывают редко. По срокам тут - вообще непонятно. Продуктовая система не может стоять на паузе пока джависты делают investigation что за ситуация и как вообще из нее выходить. И главное где провисли эти сообщения и как их восстановить если какой то API радостно сообщает сто сбой контрольной суммы файла или блока и что дальше делать непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 1с склады hck2 инет магазинчик hck2 апп1 hck2 апп2 hck2 витрин + битрикс Я фигею! У вас куча отдельных независимых систем! Вам по любому строить Message arhitecture с каким нибудь сервером сообщений(необязательно кафка). Нарисуйте 6 квадратиков и стрелки между ними ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Учитывая такое количество тревожных звоночков - я-бы попробовал уже не Кафку а Rabbit-MQ. Просто ... так. Инженерная интуиция. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:48 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton Rabbit-MQ. AMQP открытый протокол передачи сообщений - гар доставка Rabbit -реализация протокола ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:50 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
С лекции Алименкова можно понять все мессенжинговые системы предлагают просто баланс между скоростью и гарантией. По сути хочешь гарантий - включай опции persistence на максимум. Кстати - совет объединять месседжи в пачки на логическом уровне - и посылать как 1 - хороший совет. Особенно там где просто идет репликация. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 14:00 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton hck2 пропущено... я размышляю на счет spark + kafka, но еще не уверен, что готов именно админить кафку. если сломается оракл или mysql, я знаю что такое redo, как починить в любой ситуации. просто запустить кафку по инструкции не выйдет, надо понимать куда бежать, если она поломается. Полностью поддерживаю это беспокойство. Если ломается БД - у нас есть 100% документированные механизмы восстановления незакоммиченных данных и главное... есть саппорт и есть вменяемая оценка по срокам. В случае с кафкой, как мы видим у джавистов - нулевой опыт восстановления сбойных хранилищ. И тут любое неверное движение или неверно понятая документация - и данные ресетнулись и месседжинг покатился с нуля. А возможностей прокачать подобный опыт у джавистов мало - т.к. технологий очень много а ситуации когда надо восстанавливать файловые структуры - бывают редко. По срокам тут - вообще непонятно. Продуктовая система не может стоять на паузе пока джависты делают investigation что за ситуация и как вообще из нее выходить. И главное где провисли эти сообщения и как их восстановить если какой то API радостно сообщает сто сбой контрольной суммы файла или блока и что дальше делать непонятно. Согласен, если оставаться просто джавистом, далеко не уедешь. ) Лучше стать разработчиком. Управление восстановлением в Кафке, конечно, требует некоторого погружения в тему. Но в целом, как сказано далее, это компромисс между скоростью и надежностью. Можно увеличить, к примеру, в настройках количество реплик, помня об издержках репликации. Или ask установить на all (что снизит пропускную способность). А потом подключить мониторинг метрик (к примеру, Графану/Прометеус) и посмотреть, как это скажется на производительности. Можно найти и другие технологии работы с очередями. Но по-любому, придется "вылезать из скорлупы" и юзать окружение: докеры-"шмокеры" и прочее. На одной джаве и реляционных базах не удасться продержаться сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 22:08 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 я размышляю на счет spark + kafka, но еще не уверен, что готов именно админить кафку. если сломается оракл или mysql, я знаю что такое redo, как починить в любой ситуации. просто запустить кафку по инструкции не выйдет, надо понимать куда бежать, если она поломается. Если кафка пугает, можно Spring Cloud Stream RabbitMq. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 22:11 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Полностью поддерживаю это беспокойство. Если ломается БД - у нас есть 100% документированные механизмы восстановления незакоммиченных данных и главное... есть саппорт и есть вменяемая оценка по срокам. В случае с кафкой, как мы видим у джавистов - нулевой опыт восстановления сбойных хранилищ. И тут любое неверное движение или неверно понятая документация - и данные ресетнулись и месседжинг покатился с нуля. А возможностей прокачать подобный опыт у джавистов мало - т.к. технологий очень много а ситуации когда надо восстанавливать файловые структуры - бывают редко. По срокам тут - вообще непонятно. Продуктовая система не может стоять на паузе пока джависты делают investigation что за ситуация и как вообще из нее выходить. И главное где провисли эти сообщения и как их восстановить если какой то API радостно сообщает сто сбой контрольной суммы файла или блока и что дальше делать непонятно. Согласен, если оставаться просто джавистом, далеко не уедешь. ) Лучше стать разработчиком. Управление восстановлением в Кафке, конечно, требует некоторого погружения в тему. Но в целом, как сказано далее, это компромисс между скоростью и надежностью. Можно увеличить, к примеру, в настройках количество реплик, помня об издержках репликации. Или ask установить на all (что снизит пропускную способность). А потом подключить мониторинг метрик (к примеру, Графану/Прометеус) и посмотреть, как это скажется на производительности. Можно найти и другие технологии работы с очередями. Но по-любому, придется "вылезать из скорлупы" и юзать окружение: докеры-"шмокеры" и прочее. По-любому придется столкнуться.[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 22:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 и еще есть такой вопрос, допустим апп1 пишет в один единственный топик кафки, апп2 читает этот топик, но у меня такой нюанс, что в сделке 100 позиций товара, я пытаюсь сохранить остаток товара в момент создания сделки. для этого я делаю запрос на сущность сделки и 100 запросов в на каждую позицию в сделке, что бы выяснить остаток в сущности товар. вероятно мне нужно 2 топика, в первом от апп1, одно сообщение, во втором 101 сообщение. выходит апп2 будет само себе сообщение слать. как-то ... не понял, почему само себе будет слать. Можете более детально обрисовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 00:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2 Если кафка пугает, можно Spring Cloud Stream RabbitMq. а у кролика что-то сильно проще в плане починки ? Кофейник2 не понял, почему само себе будет слать. Можете более детально обрисовать? пользователь б24 создал сделку, в сделке 100 позиций. апп1 получает одно сообщение - добавилась запись в сущность сделка. апп2 обрабатывая это одно сообщение теперь должно вытянуть много деталей. 1 рест запрос в б24 за сделкой и 100 за каждым товаром. если я переделываю на настоящие очереди, то наверно было бы логично и в сторону б24 запросы выстраивать какую-то (вторую) очередь. тогда появится возможность как-то регулировать нагрузку в сторону б24. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 12:16 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, >пользователь б24 создал сделку, в сделке 100 позиций Это одна бизнес транзакция с б24 на бэк java. Сразу один json с массивом 100 на POST. Разберитесь, есть ли событие такое в б24. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 07:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
> а у кролика что-то сильно проще в плане починки ? Давайте сначала ФУНКЦИОНАЛ по ТЗ ГОСТ п. 3, потом починки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 07:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, >сторону б24 запросы выстраивать Не торопитесь отвечать. У вас очередь ответов тоже встала. Так выше спрашивалось - можно ли подписаться на события От битрикса? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 07:50 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp > а у кролика что-то сильно проще в плане починки ? Давайте сначала ФУНКЦИОНАЛ по ТЗ ГОСТ п. 3, потом починки. Давайте поднимем пред-новогодний топик о том как "готовить кролятину" Rabbit. Я давно хотел его поднять локально и поразбираться. Тем более что он нормально поддерживает AMQP и вроде бы быстрее чем Apache-Active. Кроме того у меня есть отдельный эстетический интерес посмотреть на этот софт. Ведь он написан на Erlang. А эта технология вызывала у меня всегда изумление. Топик думаю поднять 30-31 числа. +Напишите ваши вопросы. Я просто их включу в повестку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 12:40 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, - четкие шаги для достижения hello world. - четкие шаги для достижения первого насыщения очереди. Что имел автор под сбоями я не понял. Увы. Пока имхо это оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 12:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Имеется в виду такой тривиальный пример? А что такое насыщение очереди в терминологии AMQP ? Если будет включен персистенс очередь (наверное) насытится тогда когда у вас диск закончится. Нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 13:11 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, 1. Наверно. В кафке есть консоль публикатора и консоль подписчика. И есть скрин раб стола где они рядом. В левом пишем месс и в правом появилось))))) Волшебно!))) 2. В кафке это время на сколько можно выписать больничный подписчику и он ничего не пропустит ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 13:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton очередь (наверное) насытится тогда когда у вас диск закончится. Нет? -1 Мессаги хранятся не вечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 13:47 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 а у кролика что-то сильно проще в плане починки ? в Кафке больше компонентов. Поэтому, на мой взгляд, больше возможных сценариев сбоя. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:29 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, 1. Наверно. В кафке есть консоль публикатора и консоль подписчика. И есть скрин раб стола где они рядом. В левом пишем месс и в правом появилось))))) Волшебно!))) 2. В кафке это время на сколько можно выписать больничный подписчику и он ничего не пропустит Сложно как-то все. Я-же не собираюсь подстраивать кролика под Kafka. Это - глупо. А если у месседжей есть TTL - то давай посмотрим какой он по умолчанию. Или если есть dead letter queue то посмотрим как долго там лежит мусор без уборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:30 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кстати Кафка мне здесь не нравится тем что она слишком уж ... нестандартная. Я для себя рисовал такую картинку несколько месяцев назад. И видно что в протокольной части кафки есть некие белые пятна. У нее - другая терминология. Другие принципы. И по этой причине я считаю что выстроить точное сравнение между технологиями нам будет очень сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:32 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 пользователь б24 создал сделку, в сделке 100 позиций. апп1 получает одно сообщение - добавилась запись в сущность сделка. апп2 обрабатывая это одно сообщение теперь должно вытянуть много деталей. 1 рест запрос в б24 за сделкой и 100 за каждым товаром. если я переделываю на настоящие очереди, то наверно было бы логично и в сторону б24 запросы выстраивать какую-то (вторую) очередь. тогда появится возможность как-то регулировать нагрузку в сторону б24. По-любому очередь в вашем случае будет двунаправленной. Я это изначально предполагал, но теперь в этом все больше убеждаюсь. Я так понимаю, б24 будет возвращать апп2 данные по 100 товарам одним пакетом? Это было бы логично. И если так, то в единицу времени б24 будет принимать гораздо больше запросов от апп2, чем апп2 ответов от б24. В случае кафки здесь два топика. В разделы первого апп2 записывает сообщения, читаемые б24. В разделы второго б24 уже записывает ответы, читаемые апп2. Ну, если я правильно понял ваш замысел. Кстати, а принципиально, чтобы апп2 читал ответы от б24 в том же порядке, в каком направляет в нее запросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:38 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Что именно сложно? Скрин с двумя прогами или то что есть параметр сколько хранить мессагу??? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:40 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2, Ну дак всегда, апп будет иметь публикатор и подписчик одновременно. Что за приложение без событий? Особенно клиент на битрикс ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:43 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Ты так закопаешься. Надо сначала запустить hello world. А потом по кусочкам сравнивать. Я не увидел где кафка ДРУГАЯ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:47 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2, >Кстати, а принципиально, чтобы апп2 читал ответы от б24 в том же порядке, в каком направляет в нее запросы? Думаю порядок не важен. Иначе себе вредить. Есть же rest без всякого порядка и состояния ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 14:50 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Ты так закопаешься. Надо сначала запустить hello world. А потом по кусочкам сравнивать. Я не увидел где кафка ДРУГАЯ. Ну во первых - терминология. В Rabbit есть понятие Exhange. Сущность со своими свойствами и настройками. Где аналог Exchange в Кафка? Это - топология путешествия будущиех сообщений. Это - важно. Это архитектурный вопрос. И я не могу просто так без обсуждения взять его и проигнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 15:10 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Имхо, в топике это не важно. Иначе никогда не двинемся. Это как JPA против БД. Взяло и половину выкинуло. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 15:14 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Далее. В кафке есть partitioning. Ее главная киллер-фича благодаря которой обеспечивается почти бесконечное масштабирование. И благодаря которой у Андрейки не сходится бухгалтерия. Что есть подобного в Rabbit? Clustering? https://www.rabbitmq.com/clustering.html Может быть. Давай обсудим это ТО ЖЕ самое или не то. Для меня это - важно. И мне непонятно почему тебе просто хочется создать превед-мир. Ну даже если мы его создадим на кролике то это ничего не доказывает. А чтобы доказат какое-то свойство сложной системы - надо ее сконфигурировать правильно. Иначе мы будем как школьники. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 15:15 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, > благодаря которой у Андрейки не сходится бухгалтерия Однако в его топике все профи сказали что дело в его руках. Ну и упрямстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:13 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
По поводу TTL месседжа. Я нигде не нашел упоминания о дефолтном значении для приложения Rabbit. Есть упоминания о полиси для очередей. И есть кастомизация TTL для каждого конкретного месседжа. https://www.rabbitmq.com/ttl.html Пока я считаю что месседжи в кролике хранятся вечно если я сам руками не задавал другого. Пускай знающие кролико-веды тут меня поправят. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Кофейник2, >Кстати, а принципиально, чтобы апп2 читал ответы от б24 в том же порядке, в каком направляет в нее запросы? Думаю порядок не важен. Иначе себе вредить. Есть же rest без всякого порядка и состояния Если порядок не имеет значения, можно использовать асинхронную передачу. Это может существенно ускорить обработку потока событий. Зачем именно сейчас ждать ответ, если можно дождаться его позднее ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:34 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2, +1 Асинхронность это ключик к Event-driven ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:36 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, В кафке партиция это файл. Поэтому очередность только внутри партиции. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:37 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, В кафке партиция это файл. Поэтому очередность только внутри партиции. Я не согласен с таким упрощением. Файл - это имплементация технологий шардинга или разделения. Главный поинт в том что процесс получает возможность скейлится. Но если положить хоть 1000 файлов в одну локальную ФС то скейлинга не будет ибо здесь утрачен основной смысл. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Админом был? Кафка это журналы commit log. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:55 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
А Rabbit это полноценная очередь. В кафке нет очереди в прямом смысле. Все журналы читают))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:57 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Ну давай внимательно почитаем конфиг про партишены. https://kafka.apache.org/081/documentation.html#configuration num.partitions : The default number of partitions per topic if a partition count isn't given at topic creation time. Здесь нет ни слова про файлы. Да. Файлы есть. Но твоё упрощение о том что файлы дают масштабирование я выбрасываю как неверный аргумент. Файлы... могут вообще затормозить дисковые операции если их открыть хотя-б 65000. Суть не в файлах. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:00 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А Rabbit это полноценная очередь. В кафке нет очереди в прямом смысле. Все журналы читают))) Но у кролика тоже есть кластеризация. А как кластеризовать одну очередь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:01 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Ну ОК. Назови это журнал)))). Образ понятен? А в rabbit нет такого. Там Коллекция или List. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:17 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Распределенный реплицируемый журнал с коммитом. ОК? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:19 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2 PetroNotC Sharp Кофейник2, >Кстати, а принципиально, чтобы апп2 читал ответы от б24 в том же порядке, в каком направляет в нее запросы? Думаю порядок не важен. Иначе себе вредить. Есть же rest без всякого порядка и состояния Если порядок не имеет значения, можно использовать асинхронную передачу. Это может существенно ускорить обработку потока событий. Зачем именно сейчас ждать ответ, если можно дождаться его позднее даже не знаю что ответить, у меня еще не сформировался дизайн. допустим я получаю от б24 сообщие о новой сделки, апп1 пишет событие в топик1, апп2 делает первый рест реквест в б24 выясняя детали о сделке и вот тут выяняеет, что там 100 позиций. т.к. первый запрос был на сущность сделка, в ответе б24 лишь базовые поля по позициям в сделке, теперь нужно выяснить детали (остаток товара на складе, например) по 100 сущностям товар. сейчас я делаю 100 рест вызовов в б24 по каждому товару. там есть возможность формировать батч из 50 вызовов разом, но я пока не уверен что это стоит в такой ситуации использовать, т.к. батч резко нагрузит б24. а долбя по одному я размазываю нагрузку. ну и вот, пока по моей задумке выйет, что апп2 запишет в топик2 запрос к сущности сделка, и только после ответа по сущности сделка запишет в топик2 еще 100 запросов к сущности товар. обрабатывать топик2 запросы к б24 явно можно асинхронно, только надо продумать как такое задизайнить. видимо понятие стадия надо вводить. стадия один запрос к сделке, формирование запросов к товарам. стадия два запросы к товарам. что-то черезчур сложно выходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:29 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, >апп2 делает первый рест реквест в б24 выясняя детали = не знают приложения ничего друг о друге. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Да. Стадия нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Тебе пробовать надо. Все ключевые поля по заказу на 100 позиций дай в очередь. Много нельзя. Если мегабайты, то апп2 сам спросит у б24. Если событие НовыйЗаказСформирован из б24, то нафиг тут стадии? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 17:57 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Ну и подписчики у тебя не один а два\три. 1С еще есть. Короче цифры нужны. Что кто то задавит и нагрузит битрикс... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:00 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 обрабатывать топик2 запросы к б24 явно можно асинхронно, только надо продумать как такое задизайнить. видимо понятие стадия надо вводить. стадия один запрос к сделке, формирование запросов к товарам. стадия два запросы к товарам. что-то черезчур сложно выходит. б24 это приложение, которое вы делаете на спринг буте? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:39 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кофейник2 hck2 обрабатывать топик2 запросы к б24 явно можно асинхронно, только надо продумать как такое задизайнить. видимо понятие стадия надо вводить. стадия один запрос к сделке, формирование запросов к товарам. стадия два запросы к товарам. что-то черезчур сложно выходит. б24 это приложение, которое вы делаете на спринг буте? не, б24 это битрикс24 crm. я делаю на спринг буте апп1, апп2: https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331858&msg=22254580 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:46 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, >у меня еще не сформировался дизайн ВАРИАНТ архитектуры - апп1 выкидываем т.к. Кафка полностью заменяет его функционал - б24 умеет рест, поэтому шлет месс Заказ на рест java - либо кафка умеет его словить, либо апп2 ставит месс в очередь с ключиком New. - второй модуль апп2 подписчик на данный ключик и обрабатывает заказ до стадии Сформирован - апп2 пишет заказ уже в кафку с ключиком Сформирован. - 1С и Отчетник подписаны на эти ключики как хотят. Всё. У меня так автозапчасти приходят. По статусу Сформирован я могу идти в магаз за маслом и дворниками)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 19:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
У меня более простое предложение. Выкидываем кафку и заменяем нее на базу данных. Все красиво. Транзакционно. Ничего не теряется. Можно обсуждать детали. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 01:14 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Бд ест у всех шести подсистем. У битрикса, у 1С, у app1 app2, отчетника. И основные страхи ТС, что если апп2 в дауне, то ему надо через сутки его отремонтировать "и чтобы ничего не пропало"))))) Наверно зеркалирование его не устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 07:50 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Пускай переходят на схему работы БД primary-standby. Это надежнее и провереннее чем строить самокаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 11:56 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Да. Но это без рест и аппСервера. Это клиент-сервер на хранимках ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 12:01 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp. Ну что? Новогодняя крольчатина будет обсуждаться? Если честно у меня пока нет вопросов. Ну по крайней мере по документации. Надо читать. И обсуждать одиного кролика неинтересно. Авторский сайт достаточно плотно наполнен https://www.rabbitmq.com/ инфой. Надо обсуждать то чего там нет. А нет там например ... сравнения с Кафкой. Есть у нас вопросы по сравнению? Привет-мир мы напишем. И ... надо его смыслом наполнить. Пускай что-то умное передает. Например простые числа в каждом месседже. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 02:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Ну, только за автора топика работать. Если у тебя есть желания. Пиво он выставит. ... С кафкой я сравнил. Часа 3 почитал. Тоже нет вопросов). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 07:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, для себя я кролик пока совсем не рассматриваю. у меня на работе юзают spark+kafka и выглядит что мне по любому в нее придется погрузиться. плюс у powerbi вроде к кафке есть коннектор, к кролику нет. потому если переделывать на очередь собирусь, наверно все же кафка. но пока я думаю, вот прямо сейчас под той нагрузкой что есть, никакого смысла кроме как пообучаться нет смысла в полновесной очереди. весной вроде из кафки выкинут zookeeper, с которым у нас боль на хадупах, может это будет тригером для меня. что касается кролика, у меня знакомые пилят какую-то фигню для обмена валют и крипты и навелосипедили что-то свое для обмена сообщениями. говорят, что бы в пол секунды укладывать весь обмен. мне интересно на сколько кролик быстрее кафки на задаче доставки маленького сообщения, но как можно быстрее. и на сколько мое представление о том что кролик им бы идеально подошел, а кафка все таки больше про большие данные прокачивать, а не респонс тайм. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 09:53 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, Большие данные не прокачивает ни какая из систем сообщений. Обычно адрес пересылают на фильм. Прямой. И по прямому уже качают. Не через шину сообщений. Кафка скорость равна скорости самой сети. То есть тормозить ну никак не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 10:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, То ты пишешь придется погрузится, то переносишь на весну. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 10:13 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp hck2, Большие данные не прокачивает ни какая из систем сообщений. Обычно адрес пересылают на фильм. Прямой. И по прямому уже качают. Не через шину сообщений. в мире хадупов есть понятие лямда архитектуры, там быстрый слой это прокачка больших данных через очередь. у всяких ораклов есть решения на тему репликации стримить оракловый лог в кафку. на сколько я знаю мы тоже пишем уже не малые данные в кафку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 10:41 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 mayton, для себя я кролик пока совсем не рассматриваю. у меня на работе юзают spark+kafka и выглядит что мне по любому в нее придется погрузиться. плюс у powerbi вроде к кафке есть коннектор, к кролику нет. потому если переделывать на очередь собирусь, наверно все же кафка. но пока я думаю, вот прямо сейчас под той нагрузкой что есть, никакого смысла кроме как пообучаться нет смысла в полновесной очереди. весной вроде из кафки выкинут zookeeper, с которым у нас боль на хадупах, может это будет тригером для меня. По поводу zookeeper. Есть еще одна пред-новогодняя тема которую я хотел обсудить. Это - голосование в распределенных системах и протоколы Raft и Paxos. Если кому интересны децентрализованные системы без явного центра управления то мы можем поднять это вместо гречневой кафки или кролика ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:00 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 что касается кролика, у меня знакомые пилят какую-то фигню для обмена валют и крипты и навелосипедили что-то свое для обмена сообщениями. говорят, что бы в пол секунды укладывать весь обмен. мне интересно на сколько кролик быстрее кафки на задаче доставки маленького сообщения, но как можно быстрее. и на сколько мое представление о том что кролик им бы идеально подошел, а кафка все таки больше про большие данные прокачивать, а не респонс тайм. Тут - просто тех задание тянет на синхронную систему. Может быть при такой постановке и MQ как таковые не нужны. Их контракт больше ориентирован на пропускную способность а не на отклик. Хотя отклик в частных случаях может быть быстрым. Но я думаю что его регулировка будет задачей бесконечной сложности. Представь ты добился что одиночный месседж в бездействующей системе заходит от продюсера к консюмеру за 200 мс. Но стоит увеличить скорость - и за счет acknowledges и сетевых процессов которые происходят в TCP/IP - отклик упал на 3-5 секунд хотя в целом скорость стала еще лучше. MQ со своей задачей блестяще справляется и вроде бы претензий нету но твоё ТЗ не выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:06 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 PetroNotC Sharp hck2, Большие данные не прокачивает ни какая из систем сообщений. Обычно адрес пересылают на фильм. Прямой. И по прямому уже качают. Не через шину сообщений. в мире хадупов есть понятие лямда архитектуры, там быстрый слой это прокачка больших данных через очередь. у всяких ораклов есть решения на тему репликации стримить оракловый лог в кафку. на сколько я знаю мы тоже пишем уже не малые данные в кафку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:06 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2, А так, получается, чел в топике "тормозит" заявляет что "мы гоняем большие данные в кафке". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp hck2, Большие данные не прокачивает ни какая из систем сообщений. Обычно адрес пересылают на фильм. Прямой. И по прямому уже качают. Не через шину сообщений. Кафка скорость равна скорости самой сети. То есть тормозить ну никак не может. В мире big-data меняются роли между кодом и данными. Если в классическом RPC мы ходим запросом чтобы ЗАБРАТЬ данные и подтащить их ближе к коду. То в Spark/Hadoop - данные лежат стационарно и к ним ходит код. Тоесть мы деплоим код на те workers которые будут собирать данные с стореджей которые по сути своей банальные файловые системы с частичным redundancy наподобие RAID-5 только помедленнее. С размером блока в 128Мб. И поскольку наш код деплоиться максимально близко к стореджам то таких эффектов как в обычных интернетах у нас нет. Биг-дата получает задание по интернетам но процессинг данных работает обычно только в сетях датацентра. А там сами понимаете скорость меряется гигабитами. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:14 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Big data не знаю. Hello world нужен.)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:18 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Кстати базовики одобрительно кивают головами, когда код идет ближе к данным. Это - как компилляция хранимой процедуры в БД для достижения логики чуть более сложной чем просто SELECT, посмотреть и сделать парочки UPDATES. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:21 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
mayton, Ну дак есть двухзвенка и трех. Понятно что в двух код ближе к данным))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 11:25 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Ну дак есть двухзвенка и трех. Понятно что в двух код ближе к данным))) Трёзвенка позволяет целый ряд оптимизаций, но требует "что-то колхозить" для клиентов. Двухзвенка имеет кучу принципиальных недостатков, но для неё существует куча готовых компонент и обвязок к ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 13:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, >Расстояние между "кодом и данными" одинаково в обоих архитектурах. -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 14:12 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Категоричность и отсутствие аргументов - ваш фирменный стиль. Извините, что расстроил - больше не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 14:33 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ну ты же понимаешь логику? Чем больше конверты ходят по шине тем медленнее? понимаю. причем даже в курсе того что в самой популярно бигдата связке со spark там и реалтайма нет, spark streaming нифига не честный стриминг, а под низом spark на самом микробатчи устраивает. потому и считал кафку ближе к прокачке данных, зачастую больших, а кролика ближе к скоростной передачи мелких сообщений, но не данных. mayton По поводу zookeeper. Есть еще одна пред-новогодняя тема которую я хотел обсудить. Это - голосование в распределенных системах и протоколы Raft и Paxos. Если кому интересны децентрализованные системы без явного центра управления то мы можем поднять это вместо гречневой кафки или кролика на основной работе у нас zookeeper выбирает кто главный, а кто в режиме standby работает и станет главным, если с главнюку поплохеет. на мой вкус сложно как-то вышло. теперь в команде нужны люди которые глубоко понимают поведение zookeeper, знают где логи и на что обращать внимание. плюс оказалось, что выбор главнюка лишь малая часть, верно отреагировать на смену лидера бывает не так просто, не раз и не два вылавливали в этой части баги и знаем что еще какие-то есть. сталкивались с тем что zookeeper моет быть чувствителен к i/o, он что-то типа своего лог транзакций ведет и если диск кем-то занят начинались приключения. были странные переключения когда процессор клиента занят, видимо zookeeper сервер не получил вовремя heartbeat и инициировал смену лидера. по мне хорошая тема для отдельного топика, за одно почитать почему кафка выпиливает зукипер. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 15:21 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Категоричность и отсутствие аргументов - ваш фирменный стиль. Извините, что расстроил - больше не буду. Я тоже не увидел у вас аргументов. Может не дорос. Мы разными вещами в IT занимаемся. ... Код в хранимке ближе к данным. Что тут доказывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 16:01 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
"Дистанцированность" хранимки равна нулю и вообще никак не зависит от способа вызова - напрямую клиентом или через сервер приложений. P.S. Да, я готов аргументировать каждое своё утверждение. Хотя, чтобы не стирать (собственные) пальцы, делаю поправку на квалификацию и не пытаюсь объяснять очевидные (с моей кочки зрения) вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 16:27 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Я это тред с укуренным конем в атмосфере паров этилового спирта уже давно не читаю. Но все же возникает ряд вопросов: 1. Как связана "хранимка", "двухзвенка" и "шины данных" с темой топика и проблемой из первого сообщения? 2. Никто им модераторов балаган в последних 3-х темах прекратить не хочет? Лично я страдаю. Иногда в новые сообщения в темах заглядываю и моя психика не выдерживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 16:45 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, ))) С настурающим! )) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 16:48 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
p.s. Я понимаю, что при отсутвии нормальных тем/вопросов хочется хоть где-то пофлудить. (у самого такое желание). Но все же, на мой взгляд, накал бреда в последние время достигает какого-то апофиоза. Как вариант, может создать какую нибудь флудо-тему (а ла https://www.sql.ru/forum/1040818/topik-kak-ya-lazhanulsya или https://www.sql.ru/forum/111671/izvinite-za-oftop-prosto-posmeyatsya ), закрепить ее и всех отправлять туда? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 16:51 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, у тебя просто "ломка", брат. У меня тоже такое было после исхода на Дедофорум... Налей себе чего-нить крепкого.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 18:25 |
|
Tomcat из Spring boot перестает отвечать
|
|||
---|---|---|---|
#18+
hck2 на основной работе у нас zookeeper выбирает кто главный, а кто в режиме standby работает и станет главным, если с главнюку поплохеет. на мой вкус сложно как-то вышло. теперь в команде нужны люди которые глубоко понимают поведение zookeeper, знают где логи и на что обращать внимание. плюс оказалось, что выбор главнюка лишь малая часть, верно отреагировать на смену лидера бывает не так просто, не раз и не два вылавливали в этой части баги и знаем что еще какие-то есть. сталкивались с тем что zookeeper моет быть чувствителен к i/o, он что-то типа своего лог транзакций ведет и если диск кем-то занят начинались приключения. были странные переключения когда процессор клиента занят, видимо zookeeper сервер не получил вовремя heartbeat и инициировал смену лидера. по мне хорошая тема для отдельного топика, за одно почитать почему кафка выпиливает зукипер. Создал https://www.sql.ru/forum/1332205/prednovogodniy-protokol-vybora-mastera-v-seti-paxos-raft ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 20:35 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120566]: |
0ms |
get settings: |
23ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
2704ms |
get tp. blocked users: |
2ms |
others: | 297ms |
total: | 3105ms |
0 / 0 |