|
|
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerУ меня нет БД. Зачем Вы мне всё это пишете? вы программист? Тогда аналогия должна быть понятна. questionerВы отвечаете мне на другой вопрос? я спросил вас; "Вы прошлую тему закрыли?". Т.к. принято темы закрывать. questionerОдин человек только в тему ответил. Ещё он говорил, что "вам не понять". С выводами у вас проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 23:55 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerУ меня асинхронный сервис, который является кластером. При асинхронных сервлетах поток работает меньше. странный набор слов. Покажите. Где он? Может веб-сервис? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 00:00 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questioner\При асинхронных сервлетах поток работает меньше. Если выполняемая работа одна и та же, то почему "работает меньше" ? На практике, NIO на 5-10% медленнее, чем классический режим. Т.к. на практике, обработка усложняется, возникают дополнительные обмены/синхронизации между потоками и так далее. НО, опять таки, при NIO потоков может быть на порядки меньше. Если у Вас есть ПРОБЛЕМА с КОЛИЧЕСТВОМ потоков - то NIO может помочь. Если же такой проблемы нет, "то гладиолус" и '"фиолетово". И, даже, как на первый взгляд не парадоксально звучит, медленнее. AFAIK из практики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 00:14 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevquestioner\При асинхронных сервлетах поток работает меньше. Если выполняемая работа одна и та же, то почему "работает меньше" ? Наверное я не ясно выразился раз никто не понимает. У меня с одного рест сервиса работа делится на несколько машин. То есть рест сервис - одна машина. обработчики запроса - много машин. поэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен. ответ приходит асинхронно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 08:55 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Petro123я спросил вас; "Вы прошлую тему закрыли?". Т.к. принято темы закрывать. Что значит закрыть тему? P.S. Конечно что Вы, что Basil самые умные. куда уж писателю этой статьи http://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support до вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 08:58 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerLeonid Kudryavtsevпропущено... Если выполняемая работа одна и та же, то почему "работает меньше" ? Наверное я не ясно выразился раз никто не понимает. У меня с одного рест сервиса работа делится на несколько машин. То есть рест сервис - одна машина. обработчики запроса - много машин. поэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен. ответ приходит асинхронно!!! запросов приходит много, работа, которую делает внешний сервис - долгая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 09:00 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerЧто значит закрыть тему? Подвести итог для будущих поколений). Что решено или что НЕ решено. Детский сад прямо. авторP.S. Конечно что Вы, что Basil самые умные. куда уж писателю этой статьи Интернет это большая свалка (с) Если ты ТС, то работай больше САМ, а не кидай сюда ссылки. С тобой уже 10-ю тему занятия проводят. Уж извини за грубость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:28 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerНаверное я не ясно выразился раз никто не понимает. это потому что ты с Servlet 3.1 демку не сделал. questionerУ меня с одного рест сервиса работа делится на несколько машин. То есть рест сервис - одна машина. обработчики запроса - много машин. впереди балансировщик (Ngin) + основной бекенд Томкат Код: java 1. questionerТо есть рест сервис - одна машина. обработчики запроса - много машин. нет Балансировщик нагрузку распределяет. questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен. ответ приходит асинхронно!!! это ты придумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:34 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerТо есть рест сервис - одна машина. обработчики запроса - много машин. т.е. ты пишешь свой Nginx по ходу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:40 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerзапросов приходит много, работа, которую делает внешний сервис - долгаяВот навалилась на вас тысяча клиентов. Сначала прислали тысячу запросов, потом им отправлена тысяча ответов. Существует ненулевая вероятность, что в какой-то момент вам всё равно понадобится тысяча потоков. Возникает вопрос: что лучше - узнать, что мы не можем обслужить тысячу потоков при старте приложения или упасть с OOM в процессе работы? Это первое. Второе. 32-разрядная Oracle JVM может создать и обслужить тысячу потоков, но не может - две тысячи. И, если вам, кровь из носу, надо именно 32-разрядную Oracle JVM - да, потоки надо экономить. Но есть ньюанс. Поскольку у меня есть и Oracle Hotspot и IBM J9, я сравнил четыре варианта - две JVM8 обоих разрядностей каждая. Так вот, 32-разрядная IBM J9 прекрасно создаёт и обслуживает две тысячи потоков. Учитывая, что все тесты делались на достаточно хилом десктопе (Athlon II X-2 250/3ГГц/6Гб), лично я хочу понять - насколько дохлым должен быть сервер, чтобы задача "минимизировать число потоков исполнения любой ценой" - вообще могла возникнуть. P.S. У асинхронных сервлетов есть два назначения: 1. Получить от контейнера отдельный поток исполнения. Этот сценарий может и увеличить используемое число потоков; 2. Организовать цикл чтения/записи средствами контейнера. Этот сценарий может сэкономить число потоков. Вы долбитесь в третий сценарий, который связан с созданием собственного пула потоков, что, в целом, не есть гут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:45 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Petro123questionerНаверное я не ясно выразился раз никто не понимает. это потому что ты с Servlet 3.1 демку не сделал. questionerУ меня с одного рест сервиса работа делится на несколько машин. То есть рест сервис - одна машина. обработчики запроса - много машин. впереди балансировщик (Ngin) + основной бекенд Томкат Код: java 1. questionerТо есть рест сервис - одна машина. обработчики запроса - много машин. нет Балансировщик нагрузку распределяет. questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен. ответ приходит асинхронно!!! это ты придумал. неадекватное мнение. Говорю нет у меня никакого балансировщика! нееет! Русским по белому сто раз написано. по поводу свободности потока: Если я это придумал - опровергни. Пока это просто пустословие. в ссылке, приведенной выше это написано. В Вашу пользов аргументов не найдено. Petro123 Интернет это большая свалка (с) Ага, и встречаются тут такие как Вы личности, которые никому ни разу не помогли на форуме, а просто разводят флуд в обсуждении не знаю зачем. По сути 90% дельных советов в этом форуме от Blazkowicz, который как минимум сразу обычно не скатывается в троллинг. Остальное-штучные ответы от других людей, как в этот раз. а если тема интересна, то помедитируйте пока не дойдёт над этой фразой: questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен. ответ приходит асинхронно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:45 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerПо сути 90% дельных советов в этом форуме от Blazkowicz Добро пожаловать в форум. Он больше практик. Меня больше интересует архитектура. Вадю больше интересует JS. Люди разные. Ваши темы очень далеки от практики. В первые ваши темы я не влезал. Тма было системное программирование. Теперь вы полезли в архитектуру. Зачем? Тему с сервлетом решили? Вы прикинулись что не поняли вопрос. Занимайтесь системными потоками на уровне Thread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:49 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovquestionerзапросов приходит много, работа, которую делает внешний сервис - долгаяВот навалилась на вас тысяча клиентов. Сначала прислали тысячу запросов, потом им отправлена тысяча ответов. Существует ненулевая вероятность, что в какой-то момент вам всё равно понадобится тысяча потоков. Возникает вопрос: что лучше - узнать, что мы не можем обслужить тысячу потоков при старте приложения или упасть с OOM в процессе работы? Это первое. Второе. 32-разрядная Oracle JVM может создать и обслужить тысячу потоков, но не может - две тысячи. И, если вам, кровь из носу, надо именно 32-разрядную Oracle JVM - да, потоки надо экономить. Но есть ньюанс. Поскольку у меня есть и Oracle Hotspot и IBM J9, я сравнил четыре варианта - две JVM8 обоих разрядностей каждая. Так вот, 32-разрядная IBM J9 прекрасно создаёт и обслуживает две тысячи потоков. Учитывая, что все тесты делались на достаточно хилом десктопе (Athlon II X-2 250/3ГГц/6Гб), лично я хочу понять - насколько дохлым должен быть сервер, чтобы задача "минимизировать число потоков исполнения любой ценой" - вообще могла возникнуть. P.S. У асинхронных сервлетов есть два назначения: 1. Получить от контейнера отдельный поток исполнения. Этот сценарий может и увеличить используемое число потоков; 2. Организовать цикл чтения/записи средствами контейнера. Этот сценарий может сэкономить число потоков. Вы долбитесь в третий сценарий, который связан с созданием собственного пула потоков, что, в целом, не есть гут. Ни во что я не долблюсь) всё получилось. смотрите, приходит нам каждую секунду 100 запросов. обработка - 1 минута. Обработка идёт на другой машине. она говотова исполнять сколько хочешь запросов но в любом случае это минута При синхронных сервлетах - через 2 секунды потоки кончились - всё писец, приехали, новые запросы не принять. при асинхронных поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет. и есть поток(ну или пул), который разгребает результаты. Всё, проблема решена. Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:51 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Petro123questionerПо сути 90% дельных советов в этом форуме от Blazkowicz Добро пожаловать в форум. Он больше практик. Меня больше интересует архитектура. Вадю больше интересует JS. Люди разные. Ваши темы очень далеки от практики. В первые ваши темы я не влезал. Тма было системное программирование. Теперь вы полезли в архитектуру. Зачем? Тему с сервлетом решили? Вы прикинулись что не поняли вопрос. Занимайтесь системными потоками на уровне Thread. разочарую, это тема близка к практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:53 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerГоворю нет у меня никакого балансировщика! нееет! Вы его пишите сами. Однако упираетесь и не говорите вслух). Теперь сказали вслух и мне ваша тема неинтересна. Нет проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:54 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerразочарую, это тема близка к практике. угу Вот тут от вас опять флуд и никакого результата. Зачем нужны фичи servlet 3.0/3.1 ? (1,2,3,4,все) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 10:56 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
questionerНи во что я не долблюсь) всё получилось. смотрите, приходит нам каждую секунду 100 запросов. обработка - 1 минута. Обработка идёт на другой машине. она говотова исполнять сколько хочешь запросов но в любом случае это минута При синхронных сервлетах - через 2 секунды потоки кончились - всё писец, приехали, новые запросы не принять.Уже здесь вы или нагло врёте или тупо не понимаете. При ста HTTP-запросах в секунду IP-стек за минуту примет 60 тысяч подключений. Созданные 60 тысяч TCP-соединений будут существовать (при ваших исходных), как минимум, одну минуту - от подключения клиента до отправки ему последнего байта ответа. Если ваша система в состоянии держать 60 тысяч TCP-соединений - 60 тысяч потоков исполнения не будут для неё слишком тяжким испытанием. Лично я наблюдал JVM с ~15 тысячами потоков. Я сам создал эту стрессовую нагрузку и могу определённо утверждать, что ничего не зависло и всё работало. Сразу оговорюсь - активных потоков было на порядок меньше.questionerпри асинхронных поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет. и есть поток(ну или пул), который разгребает результаты. Всё, проблема решена. Что не так?Ну что ж, давайте разберём ваш вариант:questionerЕсть сервлет(он же контроллер в спринге) внутри него пишется Код: sql 1. То есть отправили сообщение в некую систему. id нужен для идентификации ответа. система внешняя отвечает асинхронно. то есть в другом потоке есть infinite lool внутри которого выполняется Код: sql 1. 2. Не я сказал "внешняя система", но я могу предположить, что с этой внешней системой мы общаемся по локальной сети. Поскольку отсылки на авторитеты уже были, то и я позволю себе заметить, что IP-стек и умолчания для него делали весьма неглупые люди. Так вот, тайм-аут записи составляет три, а чтения - пять минут. Если хотя бы один запрос вашего "infinite lool" (бесконечный цикл) повиснет - весь опрос будет остановлен на несколько минут. Если, вдруг, опрос внешней системы станет чуточку медленнее (на десять миллисекунд для определённости) то с шестьюдесятью тысячами запросов (я вас за язык не тянул), потребуется лишних десять минут на очередную итерацию. Про закон подлости и "находится в последнем ящике" просто напомню. Можно, конечно, и ещё поёрничать, но, блин, рано вам оптимизацией заниматься - пишите "как можно проще, лишь бы это работало". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 11:29 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovМожно, конечно, и ещё поёрничать, но, блин, рано вам оптимизацией заниматься - пишите "как можно проще, лишь бы это работало". +1 Если ТС'у так упрямо решать с тормозами внешних систем (ответ 1 минута), то пусть внедряет Очередь сообщений. Их миллион всяких. Даже до таких которые сами по JS работают. http://activemq.apache.org/ajax.html Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 11:59 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
[quot Basil ...Если хотя бы один запрос .... повиснет - весь опрос будет остановлен.... Можно, конечно, и ещё поёрничать... [/quot] Написали IMHO еще больший бред, чем у questioner. IMHO. NIO все же работает и не повисает. Про "infinite loop" не будем ))), это святое ))) В общем, флеймить можно много, но смысла в этом флейме нет. Пусть questioner приглашает нас в ресторан, за кружкой пиво и можно обсудить: производительность, гранулярность, infinite loop'ы, tcp, 10G Ethernet и InfiniBand ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:23 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЛично я наблюдал JVM с ~15 тысячами потоков. Все же, не будем спорить, но 15 тысяч потоков это в любом случае ДОФИГА По многим причинам, например использование памяти под stack. Если под stack по 1 Mb = то это ужа 15 Gb RAM. Хотя, конечно, под такие задачи и сервера ставят соответственные. Но, если задачу можно решить двумя способами: 1) использовав 5-6 потоков и 512 Mb RAM 2) или сделать то же самое , с использованием 15 тысяч потоков и 20-30 Gb RAM. Мне кажется, ответ на вопрос "зачем это нужно" очевиден. При том, что мы говорим о потреблении ресурсов только для выполнения вспомогательного, системного кода. IMHO & AFAIK P.S. Уже говорил, по практике: NIO оказывается медленнее, чем классический IO и требует более сложного кода. Хотя конечно и экономит ресурсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:40 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНаписали IMHO еще больший бред, чем у questioner. IMHO. NIO все же работает и не повисаетNIO/BIO ... Какая разница, кто кинет IOException??? Тем более, что никакого NIO в примере questioner нет. NIO в асинхронных сервлетах делается несколько по другому, нежели циклический опрос готовности внешнего сервиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:48 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНо, если задачу можно решить двумя способами: 1) использовав 5-6 потоков и 512 Mb RAM 2) или сделать то же самое , с использованием 15 тысяч потоков и 20-30 Gb RAM. или уменьшить время отклика подсистемы чтобы переиспользовать потоки или освобождать. Решений куча и все будут работать (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:51 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНо, если задачу можно решить двумя способами: 1) использовав 5-6 потоков и 512 Mb RAM 2) или сделать то же самое , с использованием 15 тысяч потоков и 20-30 Gb RAM.Вы совершенно напрасно не посмотрели то, что я выкладывал под спойлерами. P.S. Читаете тоже невнимательно - я специально указывал число активных потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:52 |
|
||
|
Spring async servlets support
|
|||
|---|---|---|---|
|
#18+
В NIO (по крайне мере Apache HC), как раз что-то наподобие infinite loop. Ядро библиотеки взяло список активных channel'ов, пошли их обрабатывать. Разумеется, прикладной код channel'у через IOControl можно сказать suspend, request. Про exception'ы не понял, да и не помню кем и когда они генерируются. Не буду спорить. Вопросы questioner с каждым разом все "страннее" и "страннее". Рассуждать теоретически можно много, но смысла в этом без пива нет. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2017, 12:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39436277&tid=2122980]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 450ms |

| 0 / 0 |
