powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с ConcurrentHashMap
24 сообщений из 99, страница 4 из 4
Проблема с ConcurrentHashMap
    #38525955
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelРебята. Нет никакой проблемы с id-шниками и т.д у меня. Сейчас все работает как надо. Всем огромнейшее СПАСИБО! Вопрос в следующем... К примеру у меня 2000 подключений. И вдруг они разом отключаются, мне нужно зарегистрировать это в БД. Сейчас при таком раскладе у меня сразу будет 2000 подключений к БД(та самая функция removeSession которую мы тут обсуждали). Я же хочу чтобы на это дело потоки вставали в очередь... Просто реально нет времени объяснять как устроена и что у меня тут за система. Можете посмотреть по моим темам. Еще раз спасибо!Хотите - не хотите, но объяснить, зачем вы хотите ставить потоки в очередь, вам придется :-)
Окей, 2000 соединений оборвалось. Первым делом замечу, что с таким количеством клиентов, да если еще и каждому выделено по потоку, вашему приложению уже будет достаточно плоховасто. При таком количестве потоков здесь с большой вероятностью напрашивается NIO-сервер, который бы разруливал все IO и работу с СУБД в ограниченном небольшом количестве потоков.

Как бы то ни было, пуксай у вас стандартные блокирующие сокеты, и по потоку на соединение. Вдруг две тысячи соединений сдохли. Они все начинают разом ломиться в базу. Но если у вас по уму сделана работа с базой, то есть пул соединений, с которым вы работаете через DataSource, то ничего страшного в этом нет - у вас в каждый момент времени будет работать не более N потоков, где N - количество соединений в пуле. То есть это уже и есть некий аналог очереди.

С другой стороны, если у вас нет никаких проблем с блокировками в СУБД, и по факту закрытия соединения вам надо обновить одну строку в СУБД, и больше никогда ее не трогать, то в целях оптимизации можно задуматься о вынесении логики по "закрытию" сессии в СУБД в отдельный поток, который будет фигачить эти обновления батчами. То есть вам надо застартавать поток, который в бесконечном цикле будет смотреть на какую-нибудь коллекцию. А в этой коллекцию вы складываете все айдишники закрытых коннекторв. А поток либо по таймауту, либо по факту превышения коллекцией определенного размера, забирает эти айдишники из коллекции, и далее либо формирует 1 (один) запрос в СУБД, либо же формирует по одному запросу на каждый ID, как это у вас сделано сейчас, но делает bulk update.

Резюмируя:
1) Если вы паритесь о производительности, то вам надо в первую очередь смотреть в сторону NIO, ибо 2000 потоков от 2000 клиентов могут вообще не выжить у вас. Одновременная запись в базу из этих 2000 потоков является намного меньшим злом, чем сам факт наличия этих потоков в таком огромном количестве.
2) Если все равно хочется заоптимизировать закрытия сессии, то попробуйте сделать так, как я описал выше. Одна коллекция. Один поток в бесконечном цикле, который периодически смотрит на эту коллекцию, и применяет накопленные изменения либо через один большой SQL, либо через множество маленьких SQLей, но в bulk режиме.
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38525967
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovPetro123GorloPavel,
каждый поток пусть сам пишет в БД.
Так же как это делает банальный JSP при модели сервлет-поток.
События конца юзер-сессии не так чАсты, чтобы беспокоиться.Повбывавбы.
Нет, достаточно количество ядер, конечно и сотни одновременных обновлений одной таблицы разрулят, но за подход - повбывавбы
именно СУБД заточена на МНОГОпользовательскую ПАРАЛЛьельную работу.
Лишь бы соблюдалось - поток = коннект(соединение).
Так что при чём тут ядра?
Для уменьшения Одновременных соединений (< 3000) есть пул.

Если ты сервер, не суетись под клиентом ))) (с)
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38525968
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv1) Если вы паритесь о производительности, то вам надо в первую очередь смотреть в сторону NIO, ибо 2000 потоков от 2000 клиентов могут вообще не выжить у вас. Одновременная запись в базу из этих 2000 потоков является намного меньшим злом , чем сам факт наличия этих потоков в таком огромном количествеВыделено мною.
На менее топовом железе пробовали работать?
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526334
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может посмотреть в сторону netty ?
Зачем Вам собственный цик с гвоздями ??? возьмите готовый :

http://habrahabr.ru/post/136765/
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526342
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1может посмотреть в сторону netty ?
Зачем Вам собственный цик с гвоздями ??? возьмите готовый :

http://habrahabr.ru/post/136765/
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526344
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1может посмотреть в сторону netty ?
Зачем Вам собственный цик с гвоздями ??? возьмите готовый :

http://habrahabr.ru/post/136765/

Было: 15391945

И мне больше вот эта статья нравится
http://habrahabr.ru/post/136456/ ...Уже почти год мы пишем свою реализацию сервера, рассчитанную на больше чем 40 человек... В руки совершенно случайно попала библиотека Netty
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526356
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
http://habrahabr.ru/post/136765/

Было: 15391945

И мне больше вот эта статья нравится
http://habrahabr.ru/post/136456/ ...Уже почти год мы пишем свою реализацию сервера, рассчитанную на больше чем 40 человек... В руки совершенно случайно попала библиотека Netty

Эту тоже хотел предложить :) -но потом - чисто Фон Нейманский метод : прочитайте мою статью №1- потом №2 :)

по поводу Было: 15391945 - так не бывает - нужно взять и переписать ,уверен времени займет меньше чем свой велосипед - особенно такого качества :(( и в нем искать ошибку ..

а то получается выстрел в ногу как тут http://habrahabr.ru/post/143074/ и зачем? идти по такому пути?
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526424
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nio мне точно не подходит. По поводу 2000 потоков.... ерунда у меня их в пике нагрузки под 15к и все работает стабильно и быстро. И все это работает на ОЧЕНЬ скромном железе. В принципе вариант с отдельным потоком для удаления из БД мне подходит. Пул соединений тоже бы подошел, но я так и не нашел пример его реализации :(
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526573
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelNio мне точно не подходит. По поводу 2000 потоков.... ерунда у меня их в пике нагрузки под 15к и все работает стабильно и быстро. И все это работает на ОЧЕНЬ скромном железе. В принципе вариант с отдельным потоком для удаления из БД мне подходит. Пул соединений тоже бы подошел, но я так и не нашел пример его реализации :(

Как вариант - рассмотрите ( хотя бы для тестов ) jetty 9 - хороший сервер - на котором описать ваше решение - не более 50 -100 строк кода .

http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty

Код: java
1.
2.
3.
  Server server = new Server(8080);
        server.start();
        server.join();



Возьмите простой сервлет и к нему реализуйте простой WebListener - скорее всего вам будет достаточно
использовать методы sessionCreated и sessionDestroyed

Если я правильно понял вашу задачу.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@WebListener()
public class ServletListener implements ServletContextListener , HttpSessionListener , HttpSessionAttributeListener{
...
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        System.out.println("---- ServletListener sessionCreated ----"); 
        System.out.println("session created: " + event.getSession().getId());
         if(event.getSession().isNew()){
          inc();
         }
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        System.out.println("---- ServletListener sessionDestroyed ----"); 
        System.out.println("session destroyed: " + event.getSession().getId());
            dec();
    }



по поводу пула - посмотрите хотя бы c3p0

http://www.mchange.com/projects/c3p0/

http://www.mkyong.com/hibernate/how-to-configure-the-c3p0-connection-pool-in-hibernate/
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526588
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
Откуда там взяться сервлетам, если к автора нет HTTP?
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526654
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvAtum1,
Откуда там взяться сервлетам, если к автора нет HTTP?

TCP протокол ? protobuf ?
https://code.google.com/p/protobuf/

все равно можно смотреть в сторону веб-сокетов и jetty


http://www.jansipke.nl/websocket-tutorial-with-java-server-jetty-and-javascript-client/
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526694
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 ,
А protobuf здесь причем? :-) Ни HTTP, ни protobuf автору никак не поможет. В его ситуации это просто ненужные навороты сверху, которые не решать ни одной из его проблем. А какие-то вещи могут даже усугубить. Например, если у него сервер работает не по принципу request-response, а сам что-то шлет клиентам без запроса с их стороны.
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526742
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelПул соединений тоже бы подошел, но я так и не нашел пример его реализации :(
не может быть). Где искал?
Тормозит ли бд при записи Поток - Соединение - Запись проверил?
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526747
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv Atum1 ,
А protobuf здесь причем? :-) Ни HTTP, ни protobuf автору никак не поможет. В его ситуации это просто ненужные навороты сверху, которые не решать ни одной из его проблем. А какие-то вещи могут даже усугубить. Например, если у него сервер работает не по принципу request-response, а сам что-то шлет клиентам без запроса с их стороны.

Какая то мифическая разработка - которая работает на нагрузке 15k? да еще и сама что то рассылает ?

авторерунда у меня их в пике нагрузки под 15к и все работает стабильно и быстро. И все это работает на ОЧЕНЬ скромном железе

сложно помочь когда не знаешь архитектуры ,что делает приложение и как оно должно работать ...
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38526897
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Какая то мифическая разработка - которая работает на нагрузке 15k? да еще и сама что то рассылает ?

Нет. Сервис аналог TeamViewer.
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527010
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelAtum1Какая то мифическая разработка - которая работает на нагрузке 15k? да еще и сама что то рассылает ?

Нет. Сервис аналог TeamViewer.
субд какая, шифровальщик ты наш? )))
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527152
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123GorloPavelпропущено...

Нет. Сервис аналог TeamViewer.
субд какая, шифровальщик ты наш? )))
MySQL. имеется в виду не 15к соединений к MySQL, а клиентских потоков.
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527174
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelMySQL. имеется в виду не 15к соединений к MySQL, а клиентских потоков.
разумеется). Зачем нам технические потоки.
У тебя проблема - иметь актуальную табличку в СУБД с актуальными реальными клиентами.
Напрашивается вывод - если приравнять сессию клиента к сессии СУБД, то сам коннект в БД и будет этой табличкой.
В оракле всегда можно посмотреть количество активный соединений (сессий).
При масштабировании и выходе твоего приложения на уровень гугла - вставляем пул для СУБД.
Подходит? Не вижу проблемы для 5-ой страницы топика. Переписывать свою ИС ты всё равно будешь)).
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527273
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelПросто реально нет времени объяснять как устроена и что у меня тут за система. Можете посмотреть по моим темам.

Ну чтож, спасибо, что хоть без регистрации и смс! Но все равно мы смотреть не будем. Просто реально нет времени обьяснять где там у вас ошибки, можете посмотреть по гуглу типичные ошибки.

ps. Судя по 5 станицам воды, у вас очень много времени
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527589
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokGorloPavelПросто реально нет времени объяснять как устроена и что у меня тут за система. Можете посмотреть по моим темам.

Ну чтож, спасибо, что хоть без регистрации и смс! Но все равно мы смотреть не будем. Просто реально нет времени обьяснять где там у вас ошибки, можете посмотреть по гуглу типичные ошибки.

ps. Судя по 5 станицам воды, у вас очень много времени

Ну это хотябы увлекательно нам дают кусочек кода а мы должны угадать где ошибка в огромной системе. )

Хоть какое то разнообразие .
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527684
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята. Я уже писал ранее что проблемы больше нет. Ошибка найдена и исправлена. Я уже другой вопрос задал :)
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527688
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelРебята. Я уже писал ранее что проблемы больше нет. Ошибка найдена и исправлена. Я уже другой вопрос задал :)

Сладко поете:) Я конечно желаю чтобы у вас действительно все было тип-топ, но вероятность того что у вас все работает гаратированно правильно чуть больше нуля(без обид)
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527722
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelРебята. Я уже писал ранее что проблемы больше нет. Ошибка найдена и исправлена. Я уже другой вопрос задал :)Для других вопросов создаются отдельные темы... это правило хорошего тона...
...
Рейтинг: 0 / 0
Проблема с ConcurrentHashMap
    #38527798
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovGorloPavelРебята. Я уже писал ранее что проблемы больше нет. Ошибка найдена и исправлена. Я уже другой вопрос задал :)Для других вопросов создаются отдельные темы... это правило хорошего тона...
Просто он в том же контексте.
...
Рейтинг: 0 / 0
24 сообщений из 99, страница 4 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с ConcurrentHashMap
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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