|
|
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Вопрос такой есть ли от такого решения профит? Есть 1000 пользователей , у каждого создается и храниться сессия, все активно обращаются к базе за данными , база mysql. Есть tomcat 7 c maxThreads="100" - не более 100 тредов . DataSource - это pool c3p0 propertise , где создается 10 коннетов базе. Код: java 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. 1)будет ли такой сервлет эффективнее обычного не синхронного ? 2)ThreadPoolExecutor - имеет ли смысл создавать больше 10 тредов? (по количеству коннектов к базе ?) 3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 22:08 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
3) как я понимаю Если все потоки заняты, то запрос ставится в очередь (по умолчанию = 100) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 22:12 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Соотношение числа запросов к размеру пула определяется исключительно скоростью обработки запросов. Т.е. не протестируете - не узнаете. Но десять подключений к базе для тысячи активных пользователей - "этврятли". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 22:26 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Atum13) как я понимаю Если все потоки заняты, то запрос ставится в очередь (по умолчанию = 100) ?Неправильно - запрос обламывается. Поэтому - не надо экономить на размере пула запросов сервлет-контейнера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 22:32 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, а как установить счетчик запросов которые обломились??? ServletFilter ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 22:40 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Atum1а как установить счетчик запросов которые обломились???Зачем? Лог смотрите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 23:14 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
возник такой вот вопрос , после прочтения доков по сервлетам http://docs.oracle.com/javaee/7/tutorial/doc/servlets017.htm и по сокетам http://docs.oracle.com/javaee/7/tutorial/doc/websocket.htm модель сайта такая : клиент подключился - авторизовался на сайте - и больше ничего не делает - только смотрит "мультик" и и посылает запрос на обновление данных. ( ajax GET getInfo()) - ему вернеться json . чтобы не мучить сервер постоянные запросами о том обновились ли данные или нет - можно пойти таким путем (асинхронный чат или сокеты) я правильно понял что : на асинхронных сервлетах можно построить такую схему общения ,как : клиенты подключаются (авторизуются ) для них создается сессия и они добавляются в очередь ... как только появились обновления- они автоматом в цикле все рассылаются клиентам - по средствам long pooling и того что сервлет асинхронный и держит соединение . вопрос какие накладные расходы на http сессию ? если у нас 5000 пользователей , значит ли это что нам надо в среднем 5 МБ одну http сессию - итого (5*5000 = 25 Гб оперативки?) сколько весит сессия? ( tomcat ? jetty?) как постоит такой чат? асинхронный тред будет делать out.flush() - чтобы отправить новые данные? Второй подход - это вебсокеты : как описано тут http://findevelop.blogspot.de/2013/02/websocket-tomcat-7.html но тогда вопрос - в такой схеме максимальное количество пользователей какое? 60000 ? по количеству портов или как? фактически все что нужно - это просто после авторизации пользователя - обновлять данные в его бразузере, больше никакой активности нет . Сколько это по памяти? по какому пути пойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 10:57 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
смотри websockets - это решение твоих проблем можно организовать клиентов по типу "пидписки" если событие отвечает данной подписки - ему отправляются данные, причем данные могут отправлятся без подключения к базе, можно проанализировать изменения и отправить клиенту данные без обращения к базе. websockets снимают нагрузка на сервер многократно, если у тебя 5000 клиентов и каждый долбит сервер в ожидании обновлений, и каждое требование это обращение к базе....даже если каждое обращение раз в минуту...бедняжка сервер... websockets снимает это, обращение к базе будут только при изменении данных, ну и если это изменение требует обязательного обращения к базе, но при этом обращение будет одно и данные будут разосланы множеству "подписчиков" основное преимущество websockets - сервер сам рассылает данные, а не отправляет их по запросу. причем это будет работать и для клиента-браузера, и для клиента-андроида. для сервера никакой разницы нет. одновременно обслуживаются клиенты на андроидах и браузерах - с софтом меньше проблем правда во всех примерах есть один ньюанс, о котором умалчивается.... я его решил. я тащусь от websockets ..... количество подключений - вопрос интересный, но 60 000 подключений (клиентов) - это круто.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 12:24 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадясмотри websockets - это решение твоих проблем можно организовать клиентов по типу "пидписки" если событие отвечает данной подписки - ему отправляются данные причем это будет работать и для клиента-браузера, и для клиента-андроида. для сервера никакой разницы нет. одновременно обслуживаются клиенты на андроидах и браузерах - с софтом меньше проблем правда во всех примерах есть один ньюанс, о котором умалчивается.... я его решил. я тащусь от websockets ..... количество подключений - вопрос интересный, но 60 000 подключений (клиентов) - это круто.... тогда сразу два вопроса : Первый что за нюанс? Второй как быть с безопасностью - websockets и прозрачные прокси ?! будут ли сокеты работать везде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 16:46 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
т.е с асинхронностью вот хороший пример : https://plumbr.eu/blog/how-to-use-asynchronous-servlets-to-improve-performance ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 17:17 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Сервлет-контейнер принял запрос, сервлет обнаружил, что есть изменения и отправил отклик. Сервлет-контейнер принял запрос, сервлет обнаружил, что изменений пока нет, сформировал часть заголовков ответа. Сервлет подождал секунд тридцать и, если изменений не появилось, сформировал остальные заголовки и отправил отклик "нет изменений". Т.е. в самом худшем случае клиент будет опрашивать сервер не чаще двух раз в минуту. Никого не напряжёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 17:59 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСервлет-контейнер принял запрос, сервлет обнаружил, что изменений пока нет, сформировал часть заголовков ответа. Сервлет подождал секунд тридцать и, если изменений не появилось, сформировал остальные заголовки и отправил отклик "нет изменений".Сервлет-контейнер принял запрос, сервлет обнаружил, что изменений пока нет и, если в течении тридцати секунд изменений не появилось, отправил отклик "нет данных". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 18:28 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
авторПервый что за нюанс? Второй как быть с безопасностью - websockets и прозрачные прокси ?! будут ли сокеты работать везде? мыло в профиле, позволю себе сохранить интригу :) с безопасностию - существуют wss, которые к тому ж спокойно ходят через прокси, в отличие от ws я для авторизации использую типа http://findevelop.blogspot.de/2013/10/web-spring-security-100.html и после авторизации включаю (открываю) страницы для работы с передачей данных по websocketss если изменения данных раз в 5 минут ( к примеру) - сервер 5 минут курит бамбук. изменение пришло - сервер отработал 0.05 (ну или чуть больше, по месту) и курит бамбук... никакого таймера на клиентах, на сервере.... и логика работы прозрачная. для мобильных - трафик ниже плинтуса авторТ.е. в самом худшем случае клиент будет опрашивать сервер не чаще двух раз в минуту. Никого не напряжёт. один клиент конечно не напряжёт. а если их 5000? 5000 пустых обращений в минуту.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 19:55 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадяодин клиент конечно не напряжёт. а если их 5000? 5000 пустых обращений в минуту....При пяти тысячах клиентов опрос два раза в минуту станет последней проблемой с которой вы будете разбираться. Если, конечно, вообще заметите эту проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 20:38 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovвадяодин клиент конечно не напряжёт. а если их 5000? 5000 пустых обращений в минуту....При пяти тысячах клиентов опрос два раза в минуту станет последней проблемой с которой вы будете разбираться. Если, конечно, вообще заметите эту проблему. 5000 клиентов в минуту = 80 в секунду не много, но это пустые обращения, и куча коонектов к базе.. и оперативность получения данных клиентом страдает... при ws данные на клиенте обновляются практически "мнгновенно". и загрузка сервера намного меньше - соответственно, требования к серверу меньше. если есть современное, более качественное решение - зачем использоать старое? я работал с прочими решениями, куча головняков. особенно когда данные от сервера - через довольно долгие запросы/процедуры. причем через ws клиент может получать данные по любому количеству процессов. к примеру куча графиков на экране и все отображают данные в реальном времени, а не с задержкой. и главное - логика проще некуда, пришли данные - изменения в базу при помощи хранимки, из этой же храмнимки данные для рассылки. кода минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 21:07 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадя5000 клиентов в минуту = 80 в секунду не много, но это пустые обращения, и куча коонектов к базе..Если "куча коннектов", то это кривые руки. Никто не заставляет брать соединение из пула раньше времени и держать его вне пула дольше, чем надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 21:12 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
если есть инструмент, при котором множество проблем просто не возникают, и поэтому незачем задумываться даже голове с прямыми руками, надо использовать этот инструмент, а на голову загружать более нужными задачами. я ведь не говорю что решений нет без ws, просто с ws решения более красивые и дешёвые. и прямые ручки могут заработать больше. при ws (повторюсь) клиент может быть и браузером, и приложением - серверу на это наплевать - он отправляет данные однообразно, не надо делать разный код для отправки браузеру и приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 21:31 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадяпри ws (повторюсь) клиент может быть и браузером, и приложением - серверу на это наплевать - он отправляет данные однообразно, не надо делать разный код для отправки браузеру и приложению.На уровне HTTP не различаются браузеры и приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 21:54 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, ты отвергаешь ws? или? ты их пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 21:57 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
Atum1модель сайта такая : клиент подключился - авторизовался на сайте - и больше ничего не делает - только смотрит "мультик" и и посылает запрос на обновление данных. ( ajax GET getInfo()) - ему вернеться json . чтобы не мучить сервер постоянные запросами о том обновились ли данные или нет - можно пойти таким путем (асинхронный чат или сокеты) всё таки - связь двухсторонняя или нет? Асинхронность \ чат \ простой сайт с пулом - никак не связаны между собой. Выбери из 3-х вопросов - один. По 1 вопросу у тебя не требуется асинхронность, чат и обновление клиента с сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 22:21 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадя, для ws тут нет ТЗ imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 22:21 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
любой из 3 просто решается через ws ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 23:12 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадялюбой из 3 просто решается через ws ты отвергаешь HTTP? или? ты их пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 23:16 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
вадяты отвергаешь ws? или? ты их пробовал?Я отвергаю восторги по поводу их появления. Нет, не пробовал и не собираюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 23:26 |
|
||
|
Async servlet db connection
|
|||
|---|---|---|---|
|
#18+
я не отвергаю HTTP я делаю проекты на ws. и впервом проекте (когда ws ещё только появились) у меня используется два протокола jax-ws и ws ws "идет поверх" http, поэтому отвергать http просто неразумно. я не отвергаю старые инструменты, я утверждаю, что с новым инструментом (ws/wss) можно пржние проблемы решать намного проще, а некоторых проблем просто нет. у ws есть один недостаток -ie10 отлично с ними работают FF и CHrome. поэтому выбор зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 23:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38626703&tid=2127219]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 457ms |

| 0 / 0 |
