powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring async servlets support
98 сообщений из 98, показаны все 4 страниц
Spring async servlets support
    #39434172
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача cледующая:

Есть сервлет(он же контроллер в спринге)

внутри него пишется
Код: java
1.
externalSystenm.send(requestId, message);



То есть отправили сообщение в некую систему. id нужен для идентификации ответа.

система внешняя отвечает асинхронно.

то есть в другом потоке есть infinite lool внутри которого выполняется

Код: java
1.
2.
Message m = externalSystem.get();
m.getRequestId();// thus I should respond with this message to request



тут мы можем сматчить запрос и ответ.

Как это сделать в спринге?

в сервлетах насколько я понял можно просто asyncContext закидывать в мапу и когда ответ пришёл - вытаскивать из мапы и обрабатывать.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39434451
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять не понимаю - зачем отдельный поток и асинхронность, если до получения ответа от внешней системы вам всё равно нечего делать?
Что мешает ждать ответа в основном потоке запроса???
...
Рейтинг: 0 / 0
Spring async servlets support
    #39434509
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovОпять не понимаю - зачем отдельный поток и асинхронность, если до получения ответа от внешней системы вам всё равно нечего делать?
Что мешает ждать ответа в основном потоке запроса???

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

Асинхронность это данность. Так устроена внешняя система.

Хотите сказать, что асинхронные сервлеты не нужны?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39434532
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerтут мы можем сматчить запрос и ответ.

Как это сделать в спринге?

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

Почитайте про Spring-integration... может поможет.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435040
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТаких запросов может быть много.Ясен перец, что их будет много. Сколько клиенты навялят - столько и будь.
Вас это каким боком касается, если не вы пишите контейнер, в котором работает ваше приложение.Асинхронность это данность. Так устроена внешняя система.И?
В каком месте возникла необходимость отдельного потока, если вам всё равно ждать ответ внешней системы?Хотите сказать, что асинхронные сервлеты не нужны?Не все нужные вещи надо пихать затычками в разные неподходящие места.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435144
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovВ каком месте возникла необходимость отдельного потока, если вам всё равно ждать ответ внешней системы?

Синхронные сервлеты:
Пускай конетйнер даёт 200 потоков
а нам пришло сразу 500.

итого 200 потоков успешно отослали запрос во внешнюю систему висят.
300 потоков висят, ждут места в тредпуле.

асинхронные сервлеты:

приняли запрос от системы, положили в мапу, поток свободен.

с другой стороны имеем 1 поток, который разгребают асинхронные ответы и отвечают клиентам(пишут в респонс через асинк контекст)
Таким образом все 500 потоков сразу отослали запрос во внешнюю систему.

Мне кажется разница очевидна.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435148
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Сын церкви прекращает спор" (ц) Э.Л.Войнич, "Овод".
Про предположение, которое мать всех провалов - уже оскомину набило.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435154
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А конечно все понимаю, но вроде если тему данного топика забить в гугле, ответ находится за 2-3 мин.

Например http://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support Вроде совершенно нормальным английским языком по белому (прошу извинение у тех, у кого другая цветовая палитра в ОС) написано.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435159
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov"Сын церкви прекращает спор" (ц) Э.Л.Войнич, "Овод".
Про предположение, которое мать всех провалов - уже оскомину набило.

Неконструктивно, я ведь написал вам разницу от и до.

С чем Вы конкретно не согласны?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435160
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

спасибо, я кучу раз был на этой линке, но не видел её.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@RequestMapping("/quotes")
@ResponseBody
public DeferredResult<String> quotes() {
  DeferredResult<String> deferredResult = new DeferredResult<String>();
  // Add deferredResult to a Queue or a Map...
  return deferredResult;
}


// In some other thread...
deferredResult.setResult(data);
// Remove deferredResult from the Queue or Map
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435163
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerспасибо, я кучу раз был на этой линке, но не видел её.

Спасибо за ответ. Не поверишь, я тоже при чтение это не заметил ))) Но я между строк читал, т.к. Spring'а не знаю / не использовал. Зато в разделе Motivation в статье все по полочкам разложено, зачем и почему асинх. сервлеты нужны.

IMHO
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435190
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Кстати из той же ссылки
http://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support In other cases, where the result is required, we need to decouple processing from the Servlet container thread or else we'll exhaust its thread pool. Servlet 3 provides just such support where a Servlet (or a Spring MVC controller) can indicate the response should be left open after the Servlet container thread is exited.

То, что я написал, только на буржуйском
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435198
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
в прошлой теме вроде разобрали, что в веб проектах транзакции короткие 0,1 сек.
И тормозить сервлет каким то кодом странно.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435208
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
если вы в прошлой теме не написали ни строки кода:
Зачем нужны фичи servlet 3.0/3.1 ?
то зачем начинать новую со спрингом?
Ведь всё что может спринг, можно решить и без него. Это просто "клей", как тут говорят профи.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435231
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questioner,
в прошлой теме вроде разобрали, что в веб проектах транзакции короткие 0,1 сек.
И тормозить сервлет каким то кодом странно.
Авторитетно мнение, конечно, у всех прям 0.1

А у меня вот 1 минута и это даже не транзакция.

а тема новая потому, что вопрос более конкретный.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435237
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerАвторитетно мнение, конечно, у всех прям 0.1
выделяю для тебя ключевое слово. Чтобы не отвлекался.
автор в веб проектах транзакции короткие 0,1 сек.
автора тема новая потому, что вопрос более конкретный.
questionerА у меня вот 1 минута и это даже не транзакция.
Предложение решить эту тему в Вашей прошлой теме. А потом уже в спринге.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435462
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123выделяю для тебя ключевое слово. Чтобы не отвлекался.
автор в веб проектах транзакции короткие 0,1 сек.


А меня веб проект.

В любом случае в ответ на вопрос говорить, что забей, тебе это не надо как-то глупо.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435523
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerС чем Вы конкретно не согласны?Это не укладывается в вашу картинку мира и поэтому недоступно вашему разумению.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435541
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВ любом случае в ответ на вопрос говорить, что забей, тебе это не надо как-то глупо.
я не сказал глупо.
Я сказал что тебе дали ссылку на демку чата на асинхронных сервлетах.
Ты ноль реакции и завёл новую тему опять про бла бла бла.
Т.е. тебе не нужно решение задачи. Только удовлетворение своих мыслей про потоки.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435543
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Ведь на самом деле всё просто.
Если проект высоконагружен, то делают максимальный параметр количества потоков maxThreads=300
Потом увеличивать бесполезно. Просто добавляют ещё томкат)).
Это проекты _Веб_ у которых по 3000 запросов в сек.
Ты полез в какой то спринг. Зачем?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435549
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Ещё один пример.
Есть высоконагруженный проект.
Самое медленное звено - запросы к базе.
Что будет делать questioner? Будет перетирать 2 ветки про потоки и добавлять потоки.
Что делают 99,9 остальных процентов? Добавляют кеш один, два или три.
И ответ БД будет моментальным.
...
Это закон веб проектов - минимальные транзакции для горизонтального масштабирования.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435552
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конкретика
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
java -Xmx512m -Xms512m -cp bin/* org.apache.catalina.startup.Bootstrap start
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is  [info].
log4j: root level set to INFO
log4j: Class name: [org.apache.log4j.AsyncAppender]
log4j: Attaching appender named [console] to appender named [ASYNC].
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Setting property [threshold] to [INFO].
log4j: Parsing layout of class: "org.apache.log4j.EnhancedPatternLayout"
log4j: Setting property [conversionPattern] to [|%d{yyyy-MM-dd HH:mm:ss.SSS Z}|%-5p|%m%n%throwable{short}].
log4j: Adding appender named [ASYNC] to category [root].
|2017-04-10 03:00:58.736 +0800|INFO |Server version:        Apache Tomcat/8.0.43
|2017-04-10 03:00:58.736 +0800|INFO |Server built:          Mar 28 2017 14:42:59 UTC
|2017-04-10 03:00:58.736 +0800|INFO |Server number:         8.0.43.0
|2017-04-10 03:00:58.736 +0800|INFO |OS Name:               Windows 7
|2017-04-10 03:00:58.736 +0800|INFO |OS Version:            6.1
|2017-04-10 03:00:58.736 +0800|INFO |Architecture:          amd64
|2017-04-10 03:00:58.736 +0800|INFO |Java Home:             C:\Program Files\Java\jre8
|2017-04-10 03:00:58.736 +0800|INFO |JVM Version:           1.8.0_121-b13
|2017-04-10 03:00:58.736 +0800|INFO |JVM Vendor:            Oracle Corporation
|2017-04-10 03:00:58.736 +0800|INFO |CATALINA_BASE:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:00:58.736 +0800|INFO |CATALINA_HOME:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:00:58.736 +0800|INFO |Command line argument:  -Xmx512m 
|2017-04-10 03:00:58.736 +0800|INFO |Command line argument: -Xms512m
|2017-04-10 03:00:58.923 +0800|INFO |Initializing ProtocolHandler [" http-nio-127.0.0.1-80 "]
|2017-04-10 03:00:59.048 +0800|INFO |Using a shared selector for servlet write/read
|2017-04-10 03:00:59.048 +0800|INFO |Initialization processed in 1022 ms
|2017-04-10 03:00:59.094 +0800|INFO |Starting service Catalina
|2017-04-10 03:00:59.094 +0800|INFO |Starting Servlet Engine: Apache Tomcat/8.0.43
|2017-04-10 03:00:59.110 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\docs
|2017-04-10 03:00:59.500 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\docs has finished in 390 ms
|2017-04-10 03:00:59.500 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\examples
|2017-04-10 03:00:59.999 +0800|INFO |ContextListener: contextInitialized()
|2017-04-10 03:00:59.999 +0800|INFO |SessionListener: contextInitialized()
|2017-04-10 03:01:00.311 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\examples has finished in 811 ms
|2017-04-10 03:01:00.311 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager
|2017-04-10 03:01:00.498 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager has finished in 187 ms
|2017-04-10 03:01:00.498 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\manager
|2017-04-10 03:01:00.545 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\manager has finished in 47 ms
|2017-04-10 03:01:00.545 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT
|2017-04-10 03:01:00.576 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT has finished in 31 ms
|2017-04-10 03:01:00.592 +0800|INFO |Starting ProtocolHandler ["http-nio-127.0.0.1-80"]
|2017-04-10 03:01:00.748 +0800|INFO |Server startup in 1688 ms
результаты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
for %A in (100 500 1000) do @"C:\Program Files\httpd24\bin\ab.exe" -c %A -n 10000  http://127.0.0.1/examples/jsp/xml/xml.jsp 
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       100 
Time taken for tests:   8.689 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    1150.85 [#/sec] (mean)
Time per request:       86.892 [ms] (mean)
Time per request:       0.869 [ms] (mean, across all concurrent requests)
Transfer rate:          779.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      47
Processing:     0   87 245.0      0    1716
Waiting:        0   80 235.4      0    1716
Total:          0   87 245.0     16    1716

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     16
  75%     16
  80%     16
  90%    281
  95%    655
  98%   1045
  99%   1248
 100%   1716 (longest request)

--
Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       500 
Time taken for tests:   5.803 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    1723.18 [#/sec] (mean)
Time per request:       290.161 [ms] (mean)
Time per request:       0.580 [ms] (mean, across all concurrent requests)
Transfer rate:          1167.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0      16
Processing:     0  286 579.5     16    2777
Waiting:        0  282 576.9     16    2777
Total:          0  286 579.5     16    2777

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     62
  75%    172
  80%    390
  90%   1154
  95%   1685
  98%   2387
  99%   2543
 100%   2777 (longest request)

--
Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       1000 
Time taken for tests:   4.399 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    2273.14 [#/sec] (mean)
Time per request:       439.921 [ms] (mean)
Time per request:       0.440 [ms] (mean, across all concurrent requests)
Transfer rate:          1540.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      16
Processing:     0  423 685.1     16    2886
Waiting:        0  417 685.5     16    2886
Total:          0  423 685.1     16    2886

Percentage of the requests served within a certain time (ms)
  50%     16
  66%    234
  75%    593
  80%    874
  90%   1622
  95%   2028
  98%   2340
  99%   2465
 100%   2886 (longest request)
Результаты теста - при свёрнутом окне Apache Tomcat. Если развернуть - будет и сильно медленнее и статистика хуже.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39435563
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
java -Xmx512m -Xms512m -classpath bin/* org.apache.catalina.startup.Bootstrap start
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is  [info].
log4j: root level set to INFO
log4j: Class name: [org.apache.log4j.AsyncAppender]
log4j: Attaching appender named [console] to appender named [ASYNC].
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Setting property [threshold] to [INFO].
log4j: Parsing layout of class: "org.apache.log4j.EnhancedPatternLayout"
log4j: Setting property [conversionPattern] to [|%d{yyyy-MM-dd HH:mm:ss.SSS Z}|%-5p|%m%n%throwable{short}].
log4j: Adding appender named [ASYNC] to category [root].
|2017-04-10 03:30:21.711 +0800|INFO |Server version:        Apache Tomcat/8.0.43
|2017-04-10 03:30:21.727 +0800|INFO |Server built:          Mar 28 2017 14:42:59 UTC
|2017-04-10 03:30:21.727 +0800|INFO |Server number:         8.0.43.0
|2017-04-10 03:30:21.727 +0800|INFO |OS Name:               Windows 7
|2017-04-10 03:30:21.727 +0800|INFO |OS Version:            6.1
|2017-04-10 03:30:21.727 +0800|INFO |Architecture:          amd64
|2017-04-10 03:30:21.727 +0800|INFO |Java Home:             C:\Program Files\IBM\sdk80\jre
|2017-04-10 03:30:21.727 +0800|INFO |JVM Version:           pwa6480sr4fp1-20170215_01 (SR4 FP1)
|2017-04-10 03:30:21.727 +0800|INFO |JVM Vendor:            IBM Corporation
|2017-04-10 03:30:21.727 +0800|INFO |CATALINA_BASE:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:30:21.727 +0800|INFO |CATALINA_HOME:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Xoptionsfile=C:\Program Files\IBM\sdk80\jre\bin\compressedrefs\options.default
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument:
  -Xlockword:mode=default
 ,noLockword=java/lang/String
 ,noLockword=java/util/MapEntry
 ,noLockword=java/util/HashMap$Entry
 ,noLockword=org/apache/harmony/luni/util/ModifiedMap$Entry
 ,noLockword=java/util/Hashtable$Entry
 ,noLockword=java/lang/invoke/MethodType
 ,noLockword=java/lang/invoke/MethodHandle
 ,noLockword=java/lang/invoke/CollectHandle
 ,noLockword=java/lang/invoke/ConstructorHandle
 ,noLockword=java/lang/invoke/ConvertHandle
 ,noLockword=java/lang/invoke/ArgumentConversionHandle
 ,noLockword=java/lang/invoke/AsTypeHandle
 ,noLockword=java/lang/invoke/ExplicitCastHandle
 ,noLockword=java/lang/invoke/FilterReturnHandle
 ,noLockword=java/lang/invoke/DirectHandle
 ,noLockword=java/lang/invoke/ReceiverBoundHandle
 ,noLockword=java/lang/invoke/DynamicInvokerHandle
 ,noLockword=java/lang/invoke/FieldHandle
 ,noLockword=java/lang/invoke/FieldGetterHandle
 ,noLockword=java/lang/invoke/FieldSetterHandle
 ,noLockword=java/lang/invoke/StaticFieldGetterHandle
 ,noLockword=java/lang/invoke/StaticFieldSetterHandle
 ,noLockword=java/lang/invoke/IndirectHandle
 ,noLockword=java/lang/invoke/InterfaceHandle
 ,noLockword=java/lang/invoke/VirtualHandle
 ,noLockword=java/lang/invoke/InvokeExactHandle
 ,noLockword=java/lang/invoke/InvokeGenericHandle
 ,noLockword=java/lang/invoke/VarargsCollectorHandle
 ,noLockword=java/lang/invoke/ThunkTuple
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Xjcl:jclse7b_28
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument:
  -Dcom.ibm.oti.vm.bootstrap.library.path=C:\Program Files\IBM\sdk80\jre\bin\compressedrefs
 ;C:\Program Files\IBM\sdk80\jre\bin
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument:
  -Dsun.boot.library.path=C:\Program Files\IBM\sdk80\jre\bin\compressedrefs
 ;C:\Program Files\IBM\sdk80\jre\bin
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument:
  -Djava.library.path=C:\Program Files\IBM\sdk80\jre\bin\compressedrefs
 ;C:\Program Files\IBM\sdk80\jre\bin;C:\Windows\system32
 ;C:\Windows;C:\Program Files\IBM\sdk80\bin
 ;C:\Windows\system32
 ;C:\Windows;C:\Windows\System32\Wbem
 ;C:\Windows\System32\WindowsPowerShell\v1.0\;.
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Djava.home=C:\Program Files\IBM\sdk80\jre
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Djava.ext.dirs=C:\Program Files\IBM\sdk80\jre\lib\ext
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Duser.dir=C:\ProgramData\Apache\tomcat80
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Djava.runtime.version=pwa6480sr4fp1-20170215_01 (SR4 FP1)
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Dconsole.encoding=Cp1251
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Djava.class.path=.
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Xmx512m
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Xms512m
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument:
  -Djava.class.path=bin/bootstrap.jar
 ;bin/commons-daemon.jar;bin/tomcat-juli.jar
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Dsun.java.command=org.apache.catalina.startup.Bootstrap start
|2017-04-10 03:30:21.727 +0800|INFO |Command line argument: -Dsun.java.launcher=SUN_STANDARD
|2017-04-10 03:30:22.288 +0800|INFO |Initializing ProtocolHandler ["http-nio-127.0.0.1-80"]
|2017-04-10 03:30:22.397 +0800|INFO |Using a shared selector for servlet write/read
|2017-04-10 03:30:22.397 +0800|INFO |Initialization processed in 1265 ms
|2017-04-10 03:30:22.444 +0800|INFO |Starting service Catalina
|2017-04-10 03:30:22.444 +0800|INFO |Starting Servlet Engine: Apache Tomcat/8.0.43
|2017-04-10 03:30:22.491 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\docs
|2017-04-10 03:30:23.068 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\docs has finished in 577 ms
|2017-04-10 03:30:23.068 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\examples
|2017-04-10 03:30:23.599 +0800|INFO |ContextListener: contextInitialized()
|2017-04-10 03:30:23.599 +0800|INFO |SessionListener: contextInitialized()
|2017-04-10 03:30:25.143 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\examples has finished in 2,075 ms
|2017-04-10 03:30:25.143 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager
|2017-04-10 03:30:25.205 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager has finished in 62 ms
|2017-04-10 03:30:25.205 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\manager
|2017-04-10 03:30:25.268 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\manager has finished in 63 ms
|2017-04-10 03:30:25.268 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT
|2017-04-10 03:30:25.315 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT has finished in 47 ms
|2017-04-10 03:30:25.330 +0800|INFO |Starting ProtocolHandler ["http-nio-127.0.0.1-80"]
|2017-04-10 03:30:25.486 +0800|INFO |Server startup in 3082 ms

--

This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:      100
Time taken for tests:   2.636 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    3793.04 [#/sec] (mean)
Time per request:       26.364 [ms] (mean)
Time per request:       0.264 [ms] (mean, across all concurrent requests)
Transfer rate:          2570.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      16
Processing:     0   26  42.6     16     577
Waiting:        0   18  15.8     16     296
Total:          0   26  42.6     16     577

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     16
  75%     31
  80%     31
  90%     47
  95%     78
  98%    125
  99%    203
 100%    577 (longest request)
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:      500
Time taken for tests:   5.320 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    1879.84 [#/sec] (mean)
Time per request:       265.980 [ms] (mean)
Time per request:       0.532 [ms] (mean, across all concurrent requests)
Transfer rate:          1274.03 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.4      0      16
Processing:     0  261 542.8     94    4820
Waiting:        0  226 523.7     78    4742
Total:          0  261 542.8     94    4820

Percentage of the requests served within a certain time (ms)
  50%     94
  66%    156
  75%    234
  80%    281
  90%    546
  95%   1123
  98%   2168
  99%   3385
 100%   4820 (longest request)
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:      1000
Time taken for tests:   4.742 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    2108.63 [#/sec] (mean)
Time per request:       474.241 [ms] (mean)
Time per request:       0.474 [ms] (mean, across all concurrent requests)
Transfer rate:          1429.09 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0  10.5      0     530
Processing:    47  461 281.4    265     967
Waiting:       16  363 249.7    234     952
Total:         47  461 281.5    265     967

Percentage of the requests served within a certain time (ms)
  50%    265
  66%    749
  75%    764
  80%    764
  90%    842
  95%    874
  98%    905
  99%    936
 100%    967 (longest request)
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436196
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questioner,
Ещё один пример.
Есть высоконагруженный проект.
Самое медленное звено - запросы к базе.
Что будет делать questioner? Будет перетирать 2 ветки про потоки и добавлять потоки.
Что делают 99,9 остальных процентов? Добавляют кеш один, два или три.
И ответ БД будет моментальным.
...
Это закон веб проектов - минимальные транзакции для горизонтального масштабирования.
У меня нет БД. Зачем Вы мне всё это пишете? я спросил про одно, Вы отвечаете мне на другой вопрос?

У меня асинхронный сервис, который является кластером.

При асинхронных сервлетах поток работает меньше.

Один человек только в тему ответил.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436197
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov
конкретика
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
java -Xmx512m -Xms512m -cp bin/* org.apache.catalina.startup.Bootstrap start
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is  [info].
log4j: root level set to INFO
log4j: Class name: [org.apache.log4j.AsyncAppender]
log4j: Attaching appender named [console] to appender named [ASYNC].
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Setting property [threshold] to [INFO].
log4j: Parsing layout of class: "org.apache.log4j.EnhancedPatternLayout"
log4j: Setting property [conversionPattern] to [|%d{yyyy-MM-dd HH:mm:ss.SSS Z}|%-5p|%m%n%throwable{short}].
log4j: Adding appender named [ASYNC] to category [root].
|2017-04-10 03:00:58.736 +0800|INFO |Server version:        Apache Tomcat/8.0.43
|2017-04-10 03:00:58.736 +0800|INFO |Server built:          Mar 28 2017 14:42:59 UTC
|2017-04-10 03:00:58.736 +0800|INFO |Server number:         8.0.43.0
|2017-04-10 03:00:58.736 +0800|INFO |OS Name:               Windows 7
|2017-04-10 03:00:58.736 +0800|INFO |OS Version:            6.1
|2017-04-10 03:00:58.736 +0800|INFO |Architecture:          amd64
|2017-04-10 03:00:58.736 +0800|INFO |Java Home:             C:\Program Files\Java\jre8
|2017-04-10 03:00:58.736 +0800|INFO |JVM Version:           1.8.0_121-b13
|2017-04-10 03:00:58.736 +0800|INFO |JVM Vendor:            Oracle Corporation
|2017-04-10 03:00:58.736 +0800|INFO |CATALINA_BASE:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:00:58.736 +0800|INFO |CATALINA_HOME:         C:\ProgramData\Apache\tomcat80
|2017-04-10 03:00:58.736 +0800|INFO |Command line argument:  -Xmx512m 
|2017-04-10 03:00:58.736 +0800|INFO |Command line argument: -Xms512m
|2017-04-10 03:00:58.923 +0800|INFO |Initializing ProtocolHandler [" http-nio-127.0.0.1-80 "]
|2017-04-10 03:00:59.048 +0800|INFO |Using a shared selector for servlet write/read
|2017-04-10 03:00:59.048 +0800|INFO |Initialization processed in 1022 ms
|2017-04-10 03:00:59.094 +0800|INFO |Starting service Catalina
|2017-04-10 03:00:59.094 +0800|INFO |Starting Servlet Engine: Apache Tomcat/8.0.43
|2017-04-10 03:00:59.110 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\docs
|2017-04-10 03:00:59.500 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\docs has finished in 390 ms
|2017-04-10 03:00:59.500 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\examples
|2017-04-10 03:00:59.999 +0800|INFO |ContextListener: contextInitialized()
|2017-04-10 03:00:59.999 +0800|INFO |SessionListener: contextInitialized()
|2017-04-10 03:01:00.311 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\examples has finished in 811 ms
|2017-04-10 03:01:00.311 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager
|2017-04-10 03:01:00.498 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\host-manager has finished in 187 ms
|2017-04-10 03:01:00.498 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\manager
|2017-04-10 03:01:00.545 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\manager has finished in 47 ms
|2017-04-10 03:01:00.545 +0800|INFO |Deploying web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT
|2017-04-10 03:01:00.576 +0800|INFO |Deployment of web application directory C:\ProgramData\Apache\tomcat80\webapps\ROOT has finished in 31 ms
|2017-04-10 03:01:00.592 +0800|INFO |Starting ProtocolHandler ["http-nio-127.0.0.1-80"]
|2017-04-10 03:01:00.748 +0800|INFO |Server startup in 1688 ms
результаты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
for %A in (100 500 1000) do @"C:\Program Files\httpd24\bin\ab.exe" -c %A -n 10000  http://127.0.0.1/examples/jsp/xml/xml.jsp 
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       100 
Time taken for tests:   8.689 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    1150.85 [#/sec] (mean)
Time per request:       86.892 [ms] (mean)
Time per request:       0.869 [ms] (mean, across all concurrent requests)
Transfer rate:          779.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      47
Processing:     0   87 245.0      0    1716
Waiting:        0   80 235.4      0    1716
Total:          0   87 245.0     16    1716

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     16
  75%     16
  80%     16
  90%    281
  95%    655
  98%   1045
  99%   1248
 100%   1716 (longest request)

--
Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       500 
Time taken for tests:   5.803 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    1723.18 [#/sec] (mean)
Time per request:       290.161 [ms] (mean)
Time per request:       0.580 [ms] (mean, across all concurrent requests)
Transfer rate:          1167.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0      16
Processing:     0  286 579.5     16    2777
Waiting:        0  282 576.9     16    2777
Total:          0  286 579.5     16    2777

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     62
  75%    172
  80%    390
  90%   1154
  95%   1685
  98%   2387
  99%   2543
 100%   2777 (longest request)

--
Benchmarking 127.0.0.1 (be patient)
...
Finished 10000 requests

Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /examples/jsp/xml/xml.jsp
Document Length:        449 bytes

Concurrency Level:       1000 
Time taken for tests:   4.399 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      6940000 bytes
HTML transferred:       4490000 bytes
Requests per second:    2273.14 [#/sec] (mean)
Time per request:       439.921 [ms] (mean)
Time per request:       0.440 [ms] (mean, across all concurrent requests)
Transfer rate:          1540.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      16
Processing:     0  423 685.1     16    2886
Waiting:        0  417 685.5     16    2886
Total:          0  423 685.1     16    2886

Percentage of the requests served within a certain time (ms)
  50%     16
  66%    234
  75%    593
  80%    874
  90%   1622
  95%   2028
  98%   2340
  99%   2465
 100%   2886 (longest request)
Результаты теста - при свёрнутом окне Apache Tomcat. Если развернуть - будет и сильно медленнее и статистика хуже.

Что это за бенчмарк?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436206
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerУ меня нет БД. Зачем Вы мне всё это пишете?
вы программист? Тогда аналогия должна быть понятна.
questionerВы отвечаете мне на другой вопрос?
я спросил вас; "Вы прошлую тему закрыли?". Т.к. принято темы закрывать.
questionerОдин человек только в тему ответил.
Ещё он говорил, что "вам не понять".
С выводами у вас проблемы.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436207
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerУ меня асинхронный сервис, который является кластером.
При асинхронных сервлетах поток работает меньше.
странный набор слов. Покажите. Где он?
Может веб-сервис?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436211
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner\При асинхронных сервлетах поток работает меньше.
Если выполняемая работа одна и та же, то почему "работает меньше" ?

На практике, NIO на 5-10% медленнее, чем классический режим. Т.к. на практике, обработка усложняется, возникают дополнительные обмены/синхронизации между потоками и так далее.

НО, опять таки, при NIO потоков может быть на порядки меньше. Если у Вас есть ПРОБЛЕМА с КОЛИЧЕСТВОМ потоков - то NIO может помочь. Если же такой проблемы нет, "то гладиолус" и '"фиолетово". И, даже, как на первый взгляд не парадоксально звучит, медленнее. AFAIK из практики
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436274
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsevquestioner\При асинхронных сервлетах поток работает меньше.
Если выполняемая работа одна и та же, то почему "работает меньше" ?

Наверное я не ясно выразился раз никто не понимает.

У меня с одного рест сервиса работа делится на несколько машин.

То есть рест сервис - одна машина.
обработчики запроса - много машин.

поэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен.

ответ приходит асинхронно!!!
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436277
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123я спросил вас; "Вы прошлую тему закрыли?". Т.к. принято темы закрывать.


Что значит закрыть тему?

P.S. Конечно что Вы, что Basil самые умные.
куда уж писателю этой статьи http://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support до вас
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436278
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerLeonid Kudryavtsevпропущено...

Если выполняемая работа одна и та же, то почему "работает меньше" ?

Наверное я не ясно выразился раз никто не понимает.

У меня с одного рест сервиса работа делится на несколько машин.

То есть рест сервис - одна машина.
обработчики запроса - много машин.

поэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен.

ответ приходит асинхронно!!!
запросов приходит много, работа, которую делает внешний сервис - долгая
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧто значит закрыть тему?
Подвести итог для будущих поколений).
Что решено или что НЕ решено.
Детский сад прямо.
авторP.S. Конечно что Вы, что Basil самые умные.
куда уж писателю этой статьи
Интернет это большая свалка (с)
Если ты ТС, то работай больше САМ, а не кидай сюда ссылки.
С тобой уже 10-ю тему занятия проводят.
Уж извини за грубость.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436347
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНаверное я не ясно выразился раз никто не понимает.
это потому что ты с Servlet 3.1 демку не сделал.

questionerУ меня с одного рест сервиса работа делится на несколько машин.

То есть рест сервис - одна машина.
обработчики запроса - много машин.
впереди балансировщик (Ngin) + основной бекенд Томкат
Код: java
1.
/opt/tomcat/conf/server.xml = maxThreads=350


questionerТо есть рест сервис - одна машина.
обработчики запроса - много машин.
нет
Балансировщик нагрузку распределяет.

questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен.
ответ приходит асинхронно!!!
это ты придумал.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436348
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТо есть рест сервис - одна машина.
обработчики запроса - много машин.
т.е. ты пишешь свой Nginx по ходу?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436352
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Организовать цикл чтения/записи средствами контейнера. Этот сценарий может сэкономить число потоков.
Вы долбитесь в третий сценарий, который связан с созданием собственного пула потоков, что, в целом, не есть гут.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436353
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerНаверное я не ясно выразился раз никто не понимает.
это потому что ты с Servlet 3.1 демку не сделал.

questionerУ меня с одного рест сервиса работа делится на несколько машин.

То есть рест сервис - одна машина.
обработчики запроса - много машин.
впереди балансировщик (Ngin) + основной бекенд Томкат
Код: java
1.
/opt/tomcat/conf/server.xml = maxThreads=350


questionerТо есть рест сервис - одна машина.
обработчики запроса - много машин.
нет
Балансировщик нагрузку распределяет.

questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен.
ответ приходит асинхронно!!!
это ты придумал.


неадекватное мнение.

Говорю нет у меня никакого балансировщика! нееет!

Русским по белому сто раз написано.

по поводу свободности потока:
Если я это придумал - опровергни. Пока это просто пустословие. в ссылке, приведенной выше это написано. В Вашу пользов аргументов не найдено.



Petro123 Интернет это большая свалка (с)

Ага, и встречаются тут такие как Вы личности, которые никому ни разу не помогли на форуме, а просто разводят флуд в обсуждении не знаю зачем.
По сути 90% дельных советов в этом форуме от Blazkowicz, который как минимум сразу обычно не скатывается в троллинг.
Остальное-штучные ответы от других людей, как в этот раз.


а если тема интересна, то помедитируйте пока не дойдёт над этой фразой:


questionerпоэтому задача потока томката просто принять запрос и положить его в мапу. Всё поток становится свободен.
ответ приходит асинхронно!!!
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436356
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПо сути 90% дельных советов в этом форуме от Blazkowicz
Добро пожаловать в форум.
Он больше практик. Меня больше интересует архитектура. Вадю больше интересует JS.
Люди разные.
Ваши темы очень далеки от практики.
В первые ваши темы я не влезал.
Тма было системное программирование.
Теперь вы полезли в архитектуру. Зачем?
Тему с сервлетом решили?
Вы прикинулись что не поняли вопрос.
Занимайтесь системными потоками на уровне Thread.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436358
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 секунды потоки кончились - всё писец, приехали, новые запросы не принять.

при асинхронных

поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет.

и есть поток(ну или пул), который разгребает результаты.

Всё, проблема решена.

Что не так?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436359
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerПо сути 90% дельных советов в этом форуме от Blazkowicz
Добро пожаловать в форум.
Он больше практик. Меня больше интересует архитектура. Вадю больше интересует JS.
Люди разные.
Ваши темы очень далеки от практики.
В первые ваши темы я не влезал.
Тма было системное программирование.
Теперь вы полезли в архитектуру. Зачем?
Тему с сервлетом решили?
Вы прикинулись что не поняли вопрос.
Занимайтесь системными потоками на уровне Thread.

разочарую, это тема близка к практике.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436360
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerГоворю нет у меня никакого балансировщика! нееет!
Вы его пишите сами. Однако упираетесь и не говорите вслух).
Теперь сказали вслух и мне ваша тема неинтересна.
Нет проблем.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436364
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerразочарую, это тема близка к практике.
угу
Вот тут от вас опять флуд и никакого результата.
Зачем нужны фичи servlet 3.0/3.1 ? (1,2,3,4,все)
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436383
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНи во что я не долблюсь) всё получилось.
смотрите, приходит нам каждую секунду 100 запросов.
обработка - 1 минута. Обработка идёт на другой машине. она говотова исполнять сколько хочешь запросов но в любом случае это минута
При синхронных сервлетах - через 2 секунды потоки кончились - всё писец, приехали, новые запросы не принять.Уже здесь вы или нагло врёте или тупо не понимаете.
При ста HTTP-запросах в секунду IP-стек за минуту примет 60 тысяч подключений. Созданные 60 тысяч TCP-соединений будут существовать (при ваших исходных), как минимум, одну минуту - от подключения клиента до отправки ему последнего байта ответа.
Если ваша система в состоянии держать 60 тысяч TCP-соединений - 60 тысяч потоков исполнения не будут для неё слишком тяжким испытанием.
Лично я наблюдал JVM с ~15 тысячами потоков. Я сам создал эту стрессовую нагрузку и могу определённо утверждать, что ничего не зависло и всё работало. Сразу оговорюсь - активных потоков было на порядок меньше.questionerпри асинхронных поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет.
и есть поток(ну или пул), который разгребает результаты.
Всё, проблема решена.
Что не так?Ну что ж, давайте разберём ваш вариант:questionerЕсть сервлет(он же контроллер в спринге)
внутри него пишется
Код: sql
1.
externalSystenm.send(requestId, message);


То есть отправили сообщение в некую систему. id нужен для идентификации ответа.
система внешняя отвечает асинхронно.
то есть в другом потоке есть infinite lool внутри которого выполняется
Код: sql
1.
2.
Message m = externalSystem.get();
m.getRequestId();// thus I should respond with this message to request

Не я сказал "внешняя система", но я могу предположить, что с этой внешней системой мы общаемся по локальной сети.
Поскольку отсылки на авторитеты уже были, то и я позволю себе заметить, что IP-стек и умолчания для него делали весьма неглупые люди.
Так вот, тайм-аут записи составляет три, а чтения - пять минут. Если хотя бы один запрос вашего "infinite lool" (бесконечный цикл) повиснет - весь опрос будет остановлен на несколько минут.
Если, вдруг, опрос внешней системы станет чуточку медленнее (на десять миллисекунд для определённости) то с шестьюдесятью тысячами запросов (я вас за язык не тянул), потребуется лишних десять минут на очередную итерацию. Про закон подлости и "находится в последнем ящике" просто напомню.
Можно, конечно, и ещё поёрничать, но, блин, рано вам оптимизацией заниматься - пишите "как можно проще, лишь бы это работало".
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436409
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМожно, конечно, и ещё поёрничать, но, блин, рано вам оптимизацией заниматься - пишите "как можно проще, лишь бы это работало".
+1
Если ТС'у так упрямо решать с тормозами внешних систем (ответ 1 минута), то пусть внедряет Очередь сообщений. Их миллион всяких.
Даже до таких которые сами по JS работают.
http://activemq.apache.org/ajax.html
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
<script type="text/javascript">
  var amq = org.activemq.Amq;
  amq.init({ 
    uri: 'amq', 
    logging: true,
    timeout: 20
  });
</script>
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436424
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Basil
...Если хотя бы один запрос .... повиснет - весь опрос будет остановлен....

Можно, конечно, и ещё поёрничать...
[/quot]
Написали IMHO еще больший бред, чем у questioner. IMHO. NIO все же работает и не повисает. Про "infinite loop" не будем ))), это святое )))

В общем, флеймить можно много, но смысла в этом флейме нет.

Пусть questioner приглашает нас в ресторан, за кружкой пиво и можно обсудить: производительность, гранулярность, infinite loop'ы, tcp, 10G Ethernet и InfiniBand )))
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436432
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 и требует более сложного кода. Хотя конечно и экономит ресурсы.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436435
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНаписали IMHO еще больший бред, чем у questioner. IMHO. NIO все же работает и не повисаетNIO/BIO ... Какая разница, кто кинет IOException???
Тем более, что никакого NIO в примере questioner нет. NIO в асинхронных сервлетах делается несколько по другому, нежели циклический опрос готовности внешнего сервиса.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436437
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНо, если задачу можно решить двумя способами:
1) использовав 5-6 потоков и 512 Mb RAM
2) или сделать то же самое , с использованием 15 тысяч потоков и 20-30 Gb RAM.
или уменьшить время отклика подсистемы чтобы переиспользовать потоки или освобождать.
Решений куча и все будут работать (с)
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436439
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНо, если задачу можно решить двумя способами:
1) использовав 5-6 потоков и 512 Mb RAM
2) или сделать то же самое , с использованием 15 тысяч потоков и 20-30 Gb RAM.Вы совершенно напрасно не посмотрели то, что я выкладывал под спойлерами.

P.S. Читаете тоже невнимательно - я специально указывал число активных потоков.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436446
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В NIO (по крайне мере Apache HC), как раз что-то наподобие infinite loop. Ядро библиотеки взяло список активных channel'ов, пошли их обрабатывать. Разумеется, прикладной код channel'у через IOControl можно сказать suspend, request. Про exception'ы не понял, да и не помню кем и когда они генерируются.

Не буду спорить. Вопросы questioner с каждым разом все "страннее" и "страннее". Рассуждать теоретически можно много, но смысла в этом без пива нет. IMHO & AFAIK
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436455
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВы совершенно напрасно не посмотрели то, что я выкладывал под спойлерами.

Бенчмарки? Да, не смотрел.

Petro123Решений куча и все будут работать (с)
Полностью согласен
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436456
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВ NIO (по крайне мере Apache HC), как раз что-то наподобие infinite loop.В асинхронных сервлетах цикл организует не приложение, а контейнер. Приложение реализует два (для цикла записи) или три (для цикла чтения) метода, а контейнер дёргает эти методы по мере надобности.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436478
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovУже здесь вы или нагло врёте или тупо не понимаете.
При ста HTTP-запросах в секунду IP-стек за минуту примет 60 тысяч подключений. Созданные 60 тысяч TCP-соединений будут существовать (при ваших исходных), как минимум, одну минуту - от подключения клиента до отправки ему последнего байта ответа.
Если ваша система в состоянии держать 60 тысяч TCP-соединений - 60 тысяч потоков исполнения не будут для неё слишком тяжким испытанием.
Лично я наблюдал JVM с ~15 тысячами потоков. Я сам создал эту стрессовую нагрузку и могу определённо утверждать, что ничего не зависло и всё работало. Сразу оговорюсь - активных потоков было на порядок меньше.

с одной стороны:
60 TCP-соединений
с другой:
60 TCP-соединений + 60 потоков

Уже выигрыш.

Я не представляю сколько ресурсов надо для соединения в сравнении с потоком.
авторНе я сказал "внешняя система", но я могу предположить, что с этой внешней системой мы общаемся по локальной сети.
Поскольку отсылки на авторитеты уже были, то и я позволю себе заметить, что IP-стек и умолчания для него делали весьма неглупые люди.
Так вот, тайм-аут записи составляет три, а чтения - пять минут. Если хотя бы один запрос вашего "infinite lool" (бесконечный цикл) повиснет - весь опрос будет остановлен на несколько минут.
Если, вдруг, опрос внешней системы станет чуточку медленнее (на десять миллисекунд для определённости) то с шестьюдесятью тысячами запросов (я вас за язык не тянул), потребуется лишних десять минут на очередную итерацию. Про закон подлости и "находится в последнем ящике" просто напомню.
Можно, конечно, и ещё поёрничать, но, блин, рано вам оптимизацией заниматься - пишите "как можно проще, лишь бы это работало".

у меня несколько потоков, разгребающих разные очереди(про этот "infinite lool" идёт речь или какой?). в моём конкретном случае система не начнёт дольше отвечать, а если начнёт, то можно машин добавить.. Вот это point я не понял у Вас.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436487
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не могу общаться с людьми, которые не умеют умножать. Ни в уме, ни на калькуляторе.
Могли, хотя бы, меня поправить - сто запросов в секунду в течении минуты это шесть тысяч, а не шестьдесят.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436511
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще - меньше надо теоретизировать о ресурсоёмкости.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436517
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovЯ не могу общаться с людьми, которые не умеют умножать. Ни в уме, ни на калькуляторе.
Могли, хотя бы, меня поправить - сто запросов в секунду в течении минуты это шесть тысяч, а не шестьдесят.

Да мне неинтересно считать, вопрос в концепции.
И так понятно, что A+B>A(у нас цифры положительные)
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436530
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пойти, что ли, концепции почитать ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,  http://www.zeustech.net/ 
Licensed to The Apache Software Foundation,  http://www.apache.org/ 

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        11432 bytes

 Concurrency Level:      8000 
Time taken for tests:   81.744 seconds
Complete requests:       100000 
Failed requests:        1
   (Connect: 1, Receive: 0, Length: 0, Exceptions: 0)
Total transferred:      1157300000 bytes
HTML transferred:       1143200000 bytes
Requests per second:    1223.33 [#/sec] (mean)
Time per request:       6539.531 [ms] (mean)
Time per request:       0.817 [ms] (mean, across all concurrent requests)
Transfer rate:          13825.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0  12.0      0    1092
Processing:  1966 6423 1293.5   6443    9984
Waiting:      983 3741 1247.5   3604    7363
Total:       1966 6423 1293.5   6443    9984

Percentage of the requests served within a certain time (ms)
  50%   6443
  66%   7036
  75%   7316
  80%   7488
  90%   8050
  95%   8486
  98%   8970
  99%   9251
 100%   9984 (longest request)
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436571
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Что это за бенчмарк?

какого кода в первую очередь?

Что Вы хотите им показать?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436602
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerсмотрите, приходит нам каждую секунду 100 запросов.откуда идут? фронт/бэк?
questionerпри асинхронных

поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет.

и есть поток(ну или пул), который разгребает результаты.

Всё, проблема решена.

Что не так?потоки - освободили, но количество незакрытых подключений растет.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436635
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот что сделано
на java - о потоках/нагрузке сами судите
http://www.opencms.ru/opencms/ru/about/project/
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436644
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же, questioner флуд зажег знатный

Сферические потоки, сферическая нагрузка, сферические тесты... О чем мы спорим?

Хочет questioner делать на spring async servlets - пусть делает. Вроде УК РФ это не запрещает. Какая у него задача, железо и нагрузки ему должно быть виднее
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436656
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usmanquestionerсмотрите, приходит нам каждую секунду 100 запросов.откуда идут? фронт/бэк?

а разница есть? просто http запрос.
Usmanquestionerпри асинхронных

поток контейнера положил задачу в мапу и всё, свободен. Внешняя система получает все запросы с такой же скоростью, что и сервлет.

и есть поток(ну или пул), который разгребает результаты.

Всё, проблема решена.

Что не так?потоки - освободили, но количество незакрытых подключений растет.

Согласен, но это уже улучшение. Вопрос на сколько. Мне тяжело оценить.
Доказательств нет, но судя по всему держать соединение сильно дешевле, чем соединение и поток.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436674
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner         (a.k.a ВопрошЫтель)а разница есть? просто http запрос.Если бэк, можно переосмыслить процесс взаимодействия (и оставить sync)
questioner         (a.k.a ВопрошЫтель)Согласен, но это уже улучшение. Вопрос на сколько. Мне тяжело оценить.
Доказательств нет, но судя по всему держать соединение сильно дешевле, чем соединение и поток.тема для другого холивара: Thread per connection vs Thread per request (:
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436681
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman(a.k.a ВопрошЫтель
))
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436767
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧто это за бенчмарк?Там в копирайтах всё написано.какого кода в первую очередь?Стыдно не знать подпись Apache Tomcat .Что Вы хотите им показать?Прежде чем бороться с ветряными мельницами надо выглянуть из белокаменных башен.

P.S. Навыки аналитической работы, что, утеряны вместе с забытым эпистолярным жанром?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436828
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя http://www.opencms.ru/opencms/ru/about/project/ Нет там ни о нагрузках, ни о потоках.
Даже если заглянуть на родной сайт - всё, что можно узнать: "протестировано с Java7/8 и Tomcat 7/8".
Используются ли Servlet 3.x или WebSockets - совершенно непонятно.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436847
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадя http://www.opencms.ru/opencms/ru/about/project/ Нет там ни о нагрузках, ни о потоках.
Даже если заглянуть на родной сайт - всё, что можно узнать: "протестировано с Java7/8 и Tomcat 7/8".
Используются ли Servlet 3.x или WebSockets - совершенно непонятно.
я о том у кого развнрнуто. можно предствить нагрузку.
то что сервлет3 так это уже по умолчанию.
за ws не ручаюсь.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436853
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://tootallnate.github.io/Java-WebSocket/
можно посмотреть реализацию потоков
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436893
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, оптимальное решение исходного вопроса зависит от клиента. Если клиент - "более-менее браузер", то:
1. Принимаем запрос клиента, валидируем, перекидываем (асинхронному) сервису. Сразу проверяем наличие ответа и, если (вдруг) "уже готово" - возвращаем клиенту;
2. Опрос показал, что ответа ещё нет - отвечаем клиенту "временным перенаправлением" с заголовком Retry-After.
3. При повторном обращении клиента определяем идентификатор запроса и проверяем наличие ответа. Или возвращаем ответ или переходим на пункт 2.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436895
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя о том у кого развнрнуто. можно предствить нагрузку.Первые две ссылки - "сайт не существует" и "домен продаётся".

P.S. И программируете точно также - выбрали что-то из кучи информационного мусора и пошли нести веру христову язычникам.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436928
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяя о том у кого развнрнуто. можно предствить нагрузку.Первые две ссылки - "сайт не существует" и "домен продаётся".

P.S. И программируете точно также - выбрали что-то из кучи информационного мусора и пошли нести веру христову язычникам.
то, что не существует контор, это не проблема движка.
это ты в мой огород камень кинул?
если да, то сам такой.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436929
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
P.S. И программируете точно также - выбрали что-то из кучи информационного мусора и пошли нести веру христову язычникам.
это что ты называешь мусором, праведник?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436932
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечаю по пунктам.
1. Согласно документации, OpenCMS использует Servlet API 2.4/JSP 2.0. Каким боком это всё к асинхронным сервлетам - плохо понятно;

2. Если сайта не существует или он использует WordPress, то к движку OpenCMS претензий, естественно, никаких. Претензии к предоставленной ссылке и к наполнению по этой ссылке;

3. "Информационный мусор" это не метафора, а вполне реальное состояние современного интернета - слишком просто разместить произвольную информацию, слишком часто она копируется, слишком долго хранится и часто безответственно цитируется (см.п.2).
Желательно и даже необходимо, чтобы компетентный человек (специалист - в особенности) умел работать с недостоверной информации.
Как-то не очень наблюдается.

4. "Программируете точно так же" относилось, скорее, к автору топика. Как к очень яркому представителю.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436933
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэто ты в мой огород камень кинул?- Ты кто такой?!
- Нет, ты кто такой?!
... Паниковский понял, что сейчас его будут бить ...
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436938
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
странно, откуда они берут этот сервлет...,
скорее всего, просто не обновлённая инфа.
но судя по перечню, реализованы хорошо нагруженные сайты.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436939
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берут они оттуда, что нет прямой связи между "производительностью" сайта и техниками, которые этот сайт использует.
Servlet API 3.0 это Tomcat 7.0 . До появления этого контейнера было написано много кода и "бросаться на перепись" только потому, что "можно ещё и так", как минимум - глупо.

P.S. Tomcat приведён в качестве примера, т.к. согласно всё той же документация это один из основных (тестируемый) контейнер.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39436943
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovБерут они оттуда, что нет прямой связи между "производительностью" сайта и техниками, которые этот сайт использует.
Servlet API 3.0 это Tomcat 7.0 . До появления этого контейнера было написано много кода и "бросаться на перепись" только потому, что "можно ещё и так", как минимум - глупо.

P.S. Tomcat приведён в качестве примера, т.к. согласно всё той же документация это один из основных (тестируемый) контейнер.
в том и дело, что они пернписали всё с их 8 версии
но это к теме топика не имеет отношения.....
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437113
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov4. "Программируете точно так же" относилось, скорее, к автору топика. Как к очень яркому представителю.

А если Вы программируете как отвечаете, то уж поверьте, ничего хорошего не получится)) Ну и эго, что кругом все идиоты, а я дартаньян, это уже к другим специалистам.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437116
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНу и эго, что кругом все идиоты, а я дартаньян, это уже к другим специалистам.Могу только плечами пожать - я даже умнее, чем вы думаете.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437122
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНу и эго, что кругом все идиоты
в зеркало глянь.
Вторая тема тоже без твоего итогового кода будет?
Ты же ТС.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437131
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerНу и эго, что кругом все идиоты
в зеркало глянь.
Вторая тема тоже без твоего итогового кода будет?
Ты же ТС.

он на первой странице.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437136
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerон на первой странице.
2 строки с вопросом?
У тебя нарушен баланс между самостоятельной РАБОТОЙ и вопросами к окружающим.
А основной метод программиста - самостоятельное обучение.
Т.е. твоего кода должно быть поболее) в топиках.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437224
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro1232 строки с вопросом? 20380250
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437245
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
ok. Ещё две))
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437249
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ok. Ещё две))А что такого? Человек использовал штатную возможность спринга.
Решение? Решение. Задлянафига именно так? Ну такая вот потокофобия.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437270
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovРешение? Решение. Задлянафига именно так? Ну такая вот потокофобия.
+1
и я про это.
Ещё покажи его решение в прошлой теме без спринга и я совсем буду спокоен).
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437288
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Все зависит от числа запросов в секунду. Если их очень много, например тысячи 2, а для сервера приложений оптимальным размером пула является 500, то система подвиснет. Для этого и нужна асинхронность. Ответ, да, будет ждать, но сервкр приложений будет работать нормально.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437297
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinДля этого и нужна асинхронность.
вроде разбирали что 99% проектов делают кластер вместо асинхронности.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437315
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал бы под спойлер, но не знаю как. Еще раз повторюсь, обсуждаем:
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437326
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Valery ShiskinДля этого и нужна асинхронность.
вроде разбирали что 99% проектов делают кластер вместо асинхронности.

Ну они как бы и вместе могут жить. Почему нет?
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437336
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНу они как бы и вместе могут жить. Почему нет?
Мы про архитектуру или Г.проекты?
В архитектуре есть законы.
Например, сначала простое решение, а потом при _обосновании_ совмещаем\перемешиваем\переворачиваем.
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437352
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinВсе зависит от числа запросов в секунду. Если их очень много, например тысячи 2, а для сервера приложений оптимальным размером пула является 500, то система подвиснет. Для этого и нужна асинхронность. Ответ, да, будет ждать, но сервкр приложений будет работать нормально.Не нужна для этого асинхронность.
Я уже делал ограничение на использование ресурсов сервера приложений в синхронном сервлете и могу обоснованно утверждать, что асинхронный код для этой задачи - не проще и не лучше.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437368
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНе нужна для этого асинхронность...
Блин. Но что за сферические утверждения, для сферической задачи

Basil A. Sidorovчто асинхронный код для этой задачи - не проще и не лучше.
Согласен. По факту, асинхронный код получается сложнее и, как не удивительно, медленнее.

/ медленнее, по простой причине: код сложнее, больше строк на Java, больше машинных инструкций, больше тактов (времени) требуется ))) /

Но если проблема с кол-вом потоков есть (а не выдумана), то приходится ее решать.

Тесты по сферическим потокам в вакууме не показатель - в реальности и потоки могут быть не такие сферические и вакуум может быть не настолько чистым.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437375
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБлин. Но что за сферические утверждения, для сферической задачи
и тут же ниже вы пишите
Leonid KudryavtsevСогласен. По факту, асинхронный код получается сложнее и, как не удивительно, медленнее.
т.е. у вас просто любовь? Тоже абстрактная?
Тему вообще пора забыть. Автор в ней не заинтересован.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437407
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Тоже абстрактная
уже описывал что была реальную задача (и железяку), где пришлось переходить на NIO из за кол-во потоков и отгребать кучу глюков (собственно глюку мне и поручили искать, ушло > 1-1.5 месяца).

про "более медленно" можно почитать в И-нет. Почти все пишут, что становится немного медленнее (NIO vs классика, с сервлетами это не связано, т.к. сам контейнер и так уже на NIO). По нагрузочным тестам у меня получалось так же (5-10%).

Если 99% процентов сферических жеребцов нормально летают, это не отменяет тот факт, что у некоторых лошадей может быть врожденные проблемы с желудком и утечка газов. Что испортится и сферичность лошади (сдуется) и вакуум. При этом вести лошадь на скотобойню не выход, т.к. держат ее совершенно из-за других характеристик (на скачках кучу бабла зарабатывает).
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437424
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Leonid KudryavtsevБлин. Но что за сферические утверждения, для сферической задачи
и тут же ниже вы пишите
Leonid KudryavtsevСогласен. По факту, асинхронный код получается сложнее и, как не удивительно, медленнее.
т.е. у вас просто любовь? Тоже абстрактная?
Тему вообще пора забыть. Автор в ней не заинтересован.

Если бы тут кого то интересовала заинтересованность автора...

Вообще автор ответ получил ещё на первой странице и его заиспользовал.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437450
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБлин. Но что за сферические утверждения, для сферической задачиЧтобы подтвердить - недостаточно тысячи за. Чтобы опровергнуть - достаточно одного против.
Приведите контрпример, а то разбирать звон из уже приводившихся ссылок - очень не хочется.Тесты по сферическим потокам в вакууме не показатель - в реальности и потоки могут быть не такие сферические и вакуум может быть не настолько чистым.Могут, не могут ...
Если дефолтовый сайт типового сервлет-контейнера без всяких "jvm fine tuning" без проблем работает с явно запредельным числом потоков, то ужастики про "thread starvation" и всё такое прочее надо оставить там, где ему и место - в прошлом десятилетии. Если не раньше.

P.S. Скромный xml-example, который я кидал в первых спойлерах делает не так уж мало.
...
Рейтинг: 0 / 0
Spring async servlets support
    #39437458
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevуже описывал что была реальную задача (и железяку), где пришлось переходить на NIOЭто всё замечательно, но если смотреть проческие наставления по асинхронным сервлетам, то становится ясно, что ничего подобного не было продемонстрировано.
А вместо NIO - херня вокруг отдельного пула потоков.
Ссылки тоже зачётные. И не только старостью: "... я пробовал и tomcat7 и jetty8, но лучше всего получилось с Glassfish ...".
...
Рейтинг: 0 / 0
Spring async servlets support
    #39439044
serega_dgl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questioner,

Spring-integration должен помочь
...
Рейтинг: 0 / 0
98 сообщений из 98, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring async servlets support
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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