powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat из Spring boot перестает отвечать
25 сообщений из 174, страница 2 из 7
Tomcat из Spring boot перестает отвечать
    #40028883
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или 10 или 1 мегабайт я не помню точно.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40028885
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2,

авторнет, идея иметь самое примитивное приложение на переднем крае, в котором нечему ломатся и которое не пропустит вызовы от б24. а вот апп2 тяжелое и может себе позволить не успеать или вовсе упасть. когда поднимется, разгрести очередь из mariadb.
Аффтар!
Я поражаюсь. Вот вы счас обосновали выбор Message Driven архитектуру. Два раза произнесли слово очередь.
А построили два синхронных экзешника друг в друге?
Какой у вас сервер очередей?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40028889
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2,

По постановке тоже интересно.
Бизнес логика тяжелая, 2 минуты сохраняет заявку на сантехника.
Может не успеть куда?
Потом вы сами решили что ему можно упасть?
И вы решили что все запросы можно сохранить куда то, чтобы тот жирный сервер поднялся и все разгреб!
А юзверю вы на кнопу Создать заявку отписали что создана? Хотя сервер в дауне?
Ниче не понятно по юзкейсам.
Удачи аффтару!
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40028906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно когда Async-Servlets тоже не помогают
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029227
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
открыл для себя утилиту 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, а тут выглядит что некая очередь образовалась.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029233
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот поток в состоянии Runnable, и он ждёт ответа от сервиса.
Заблокированы потоки были бы blocked или waiting
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029234
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно имеет смысл подтюнить httpclient, задать размер пула подключений, установить connection timeout и read timeout
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029236
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public RestTemplate restTemplate(RestTemplateBuilder builder) {

        RestTemplate restTemplate = builder
                .setConnectTimeout(Duration.ofMillis(120_000))
                .setReadTimeout(Duration.ofMillis(360_000))
                .build();

        restTemplate.getMessageConverters()
                .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

        return restTemplate;
    }
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029244
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
и теперь у меня вопрос, а что же произошло

Нужно давать больше цифр.
Например, логи где тормозит, по крупному.
То есть сколько идёт запрос на app2 и на app1
Сколько требуется по ТЗ и расчётная длительность по нагрузкам.
Если 10 одновременных юзверей вешают систему то надо пересмотреть архитектуру. Например не логировать каждый запрос в сессии, а только начало сессии. Или писать в оперативку а не на диск или ....
Разобраться нужно ли вам помнить что запрашивалось когда сервер был в дауне на перезагрузке.
И кто это будет помнить.
Долго вы думаете над обычными вещами по техническому заданию ака ТЗ.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029300
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

там 10 юзеров, нет там никакой нагрузки. в целом за день порядка 10-15к вызовов, с пиками до 4 тысячи в отдельные часы. даже у связанных апп1 и апп2 еще запас на увеличение нагрузки в тысячи раз. проблема кажется найдена, присмотревшись к jstack логу увидел, что те что BLOCKED, они все уперлись в synchronized метод. это я подправлю.

но у меня остался вопрос по логу с Thread.State: RUNNABLE, почему у restTemplate не отработал ReadTimeout ? я помню, что летом у моего restTemplate был дефолтный timeout и я заметил, что у меня вылетали по timeout попытки записи огромных сделок с сотнями продуктов. потому добавил setReadTimeout(), но похоже вместо timeout получил бесконечное ожидание.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029302
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2,
Ну если нет нагрузки то вам решать.
Приложение одного окна может в принципе и 500 запросов в сек слать при ОДНОМ переходе на окно Аналитика заказов.
Вам виднее.
...
Метод синхронизации должен отсутствовать везде. С этого надо начинать топик.
Везде убрали?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029675
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм, а теперь я получил
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 возвращать ?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029676
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
хм, а теперь я получил
java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1631)

Тут похоже ты из двух потоков бегаешь итераторами по массиву и без синхронизации его изменяешь.

По PROTOTYPE ничего не могу сказать т.к. я пока не вижу связи. И вообще на рубеже 1-й страницы
пора уже нам увидеть твои исходники.

Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029681
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот один вариант. Со ссылкой на

https://www.codejava.net/java-core/concurrency/java-concurrent-collection-copyonwritearraylist-examples

Код: java
1.
2.
3.
List<String> unsafeList = new ArrayList<>();
List<String> safeList = Collections.synchronizedList(unsafeList);
 
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029685
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2,
>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029688
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В связи с короной появилось так много желающих засунуть свой код в поток.
Казалось бы, что изменилось за последние месяцы?
Но многие почему то хотят распарралелить и самому а коде наплодить потоков.
Одновременно заявляя выше - "нагрузка у нас небольшая! Штук 10 юзверей)))))) LOL
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029690
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
hck2,
>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.


это ж как бэ разное. блокирующий и thread safe. Тут где то callback(requestCallback) хитрый/неявный возможно передается это раз,
Два в параметры точно передаются immutable structures?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029694
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Ну дак они зависят друг от друга.
Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации.
И блокировать ничего не надо.
Железная логика?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029695
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТЗ
1. Нагрузка небольшая - 10 юзверей
2. Все встает колом...
3. Возможно причина в блокировках.
Вопрос - что из трех лишнее в архитектуре (оверхед)?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029697
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.


PetroNotC Sharp
lleming,
Ну дак они зависят друг от друга.
Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации.
И блокировать ничего не надо.
Железная логика?


Нет. Фраза стояла синхронный клиент имеется ввиду блокирующий поток клиент, при этому он может быть как и thread safe и не thread safe.

jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029698
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton

Тут похоже ты из двух потоков бегаешь итераторами по массиву и без синхронизации его изменяешь.

но стектрейс же уходит глубоко в restTempalte потроха. или я чего-то глобально не понимаю ?

mayton

По PROTOTYPE ничего не могу сказать т.к. я пока не вижу связи.

ну а как остальные используют restTempalte ? врятли же выстраивают в очередь все вызовы рест клиента.
по стектрейсу четко видно, что внутри restTemplate что-то ломается при параллельных вызовах. как я понимаю самый адекватный ответ - PROTOTYPE и плодить на каждый вызов отдельный инстанс restTemplate
или я совсем неверно рассуждаю ?

mayton
Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно.

так там же весь проект тогда надо выставлять, я еще к такому не готов.

PetroNotC Sharp
hck2,
>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.

я понял что речь о том что каждый мой поток синхронно ответ получит.

PetroNotC Sharp
В связи с короной появилось так много желающих засунуть свой код в поток.
Казалось бы, что изменилось за последние месяцы?
Но многие почему то хотят распарралелить и самому а коде наплодить потоков.
Одновременно заявляя выше - "нагрузка у нас небольшая! Штук 10 юзверей)))))) LOL


это проект, не основная моя работа и на половину ради того, что бы именно такие вещи для себя прокачать. долбить параллельно это правильно, ставить в очередь во первых не правильно, во вторых я попробовал. тот самый synchronized метод, который существенную часть нагрузки выстроил в очередь и я получил тысячи blocked тредов.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029707
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
PetroNotC Sharp

>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.


PetroNotC Sharp
lleming,
Ну дак они зависят друг от друга.
Если нет потоков то и нет вопроса про thread safe и нет нужды в установке синхронизации.
И блокировать ничего не надо.
Железная логика?


Нет. Фраза стояла синхронный клиент имеется ввиду блокирующий поток клиент, при этому он может быть как и thread safe и не thread safe.

jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон.

Странный ты.
Thread safe это доступ из не кольких потоков.
Конечно если блокировать олновременный доступ то и вопрос теряет смысл.
Уже пофигу становится, thread on safe или нет))).
В jdbc как раз - одно соединение на поток. И все будет нормально.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029708
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2

mayton
Т.к. сам понимаешь мы не можем играть в гадалок с хрустальными шарами. Это нудно. И обидно.

так там же весь проект тогда надо выставлять, я еще к такому не готов.

Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса.

Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029709
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон.
Он синхронный и не Thread Safe, ПОЭТОМУ приходится плодить!
Причина и следствие!
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029712
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2,
Ты в курсе что "в очередь" не существует в веб.
Контейнер сам плодит потоки для запросов.
Есть потоки серверные и есть потоки КЛИЕНТСКОГО КОДА.
...
Рейтинг: 0 / 0
25 сообщений из 174, страница 2 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat из Spring boot перестает отвечать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]