powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервер на 10к коннектов
32 сообщений из 32, показаны все 2 страниц
Сервер на 10к коннектов
    #37884690
prostohz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, форумчане!
В рамках тестового задания встала проблема реализации highload-кэш-сервера(от 10к долгоживущих соединений) с большим количеством запросов(40к/ceк). А проблема собственно в том, как бы это все правильно реализовать. Не создавать же 10к потоков?
Спасибо!
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37884823
drsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prostohz, пробуй это https://netty.io/
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37884880
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 10K простых решений не существует. Спросите у гугла про C10K problem.
Нужно проанализировать требования и погонять прототипы на нагрузочных тестах.
10K потоков с небольшим стеком (Linux NPTL), могут оказаться быстрее чем NIO, например. Тем более если соединения долгоживущие.

Если спросите у гугла про C10K в Java, то найдёте много рецептов на что нужно обратить внимание в первую очередь.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37884917
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит "долгоживущих"? Долго выполняются?
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37884970
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошее тестовое задание.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885031
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Извините, почему не существует простых решений? Netty - простое решение. 10К оно решает.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885040
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prostohz,

Думаю, стоит обратить внимание именно на Netty. А именно использование вебсокетов.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885051
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитИзвините, почему не существует простых решений? Netty - простое решение. 10К оно решает.
Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885101
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczБольшой Синий КитИзвините, почему не существует простых решений? Netty - простое решение. 10К оно решает.
Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят.

Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :)
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885105
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитДумаю, стоит обратить внимание именно на Netty. А именно использование вебсокетов.
Почему "вебсокетов"?
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885116
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с вебсокетами, сервер нетти подключает клиента. В дальнейшем получает запрос - отправляет ответ.
Я делал что-то вроде шттп прокси на нетти.
Цепочка:
http запрос --> сервер нетти --> клиент-нетти --> HttpServer
выдавала мне throghput ~ 800 в секунду при 1100 потоках
И клиент, и сервер, и httpserver находились на одной машине.

При этом клиент декодировал ChannelBuffer в HttpRequest и преобразовывал хедеры.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885120
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Потому что это очень удобно. Полнодуплексная связь, канал все время открыт, данные пересылать можно в бинарном виде. Авторизация в конце концов тут же.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885122
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитBlazkowiczпропущено...

Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят.

Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :)

есть потоки, seda всякие...
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885123
tumblerrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитBlazkowicz,

Потому что это очень удобно. Полнодуплексная связь, канал все время открыт, данные пересылать можно в бинарном виде. Авторизация в конце концов тут же.

Т.е. вы хотите сказать, что у обычных сокетов всего этого нет? ))
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885128
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tumblerrr,

Почему нет. Есть конечно. Просто использовать вебсокеты удобнее, на мой взгляд.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885129
tumblerrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДля 10K простых решений не существует. Спросите у гугла про C10K problem.
Нужно проанализировать требования и погонять прототипы на нагрузочных тестах.
10K потоков с небольшим стеком (Linux NPTL), могут оказаться быстрее чем NIO, например. Тем более если соединения долгоживущие.

Если спросите у гугла про C10K в Java, то найдёте много рецептов на что нужно обратить внимание в первую очередь.

Это уже давно не проблема... в лохматых годах это было проблемой...
Щас все больше слышу по C100K и C500K problem )))
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885139
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov VladimirБольшой Синий Китпропущено...


Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :)

есть потоки, seda всякие...

Новый поток, который что-то выполняет на каждый запрос? Это не подходит. Ограниченное количество потоков, которые выполняют вброшенные задания - тоже можно упереться в более 1 секунду.
Seda - возможно.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885198
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитSeda - возможно.

даже более чем возможно. 10к в сек - это детский сад для седы
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885200
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,

Я понимаю, просто интерпретировал это решение на 1 машину.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885204
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. На одной машине, возможно, и seda не спасет. Все зависит от того, что нужно делать на сервере.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885464
zeehond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно полюбопытствовать, чё вы всё про эту seda так увлечённо затираете?
это же ведь не продукт
а просто диссертация с каким-то прототипом из начала 200х годов

годный highload-кэш-сервер это, например, Varnish
ну или nginx с proxy плагином, там попроще всё
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885573
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне на этом форуме пару дней назад посоветовали
Erlang - специально для таких случаев было сделано.
Сам еще не тестировал, но тема интересная.

И вот еще: C10k
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885579
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeehondа можно полюбопытствовать, чё вы всё про эту seda так увлечённо затираете?
это же ведь не продукт
а просто диссертация с каким-то прототипом из начала 200х годов


у нас эта дисертация 20к событий в секунду (со сложной логикой, хождением в hbase итп) работает как часы и не напрягается
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885612
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODEМне на этом форуме пару дней назад посоветовали
Erlang - специально для таких случаев было сделано.
Сам еще не тестировал, но тема интересная.
И вот еще: C10k
Хабр только сюда приплетать не нужно. Там качество материала не выдерживает никакой критики.
Там какой-то непонятый webbit выступает за всю Java. Круто.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885618
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirу нас эта дисертация 20к событий в секунду (со сложной логикой, хождением в hbase итп) работает как часы и не напрягается
Есть мнение что на современных ОС и железе выигрышь от асинхронности минимален. Тысячи потоков справляются с аналогичной задачей не хуже. При этом логика более линейная, соответственно проще. Только потребление памяти поболе.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885674
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть SEDA в том, что задача разбивается на стадии, которые выполняются параллельно т.е. само приложение должно содержать части, которые могут работать независимо над входными данными и чем у нас таких частей больше, тем больше выигрыш в производительности.
Допустим за основу берем какой-нибудь netty, чтобы не изобретать велосипед. И сколько таких стадий можно выделить в кэш сервере?
Скорее все вызовы сервисов, которые должны кэшировать и отдельный тред пулл, и остальное I/O (запись на диск, когда кэш в памяти не удерживается) туда же может быть пойдет, хотя лучше в отдельный тред пулл его выделить.
Что-то мне SEDA напоминает баззворд SoA (только его не продают вендоры за много $$) или я что-то не так понимаю?
Просто как-то немного отдает Капитаном Очевидностью.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885699
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwa,
Я вот тоже не ворвусь при чем тут SEDA и что в ней такого особого? Fork/Join и Message Queue?
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885781
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже хочется узнать ответ на этот вопрос.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885923
prostohz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл указать, что подразумевается ручная работа с сокетами, посему netty - не подходит.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37885970
zeehond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirzeehondа можно полюбопытствовать, чё вы всё про эту seda так увлечённо затираете?
это же ведь не продукт
а просто диссертация с каким-то прототипом из начала 200х годов


у нас эта дисертация 20к событий в секунду (со сложной логикой, хождением в hbase итп) работает как часы и не напрягается

без указаний количества и типа cpu это как бы ничего не говорит, может у вас там 32-головый монстр какой-то
и что за код у вас там конкретно работает? Sandstorm, JCyclone?
или вы сами у себя реализовали концепцию SEDA?
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37886002
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeehond,

У меня есть библиотека использующая асинхронные каналы из Java7 (nio2). Запускаю тест эхосервера на 2х ядерном ноутбуке, так что считай сервер работает на одном ядре (и пуле потоков, штуки 4). Обрабатывает 7-10 К запросов в секунду. То есть для 40К вам надо будет 4 ядра только на то, чтобы принять и отправить, и неизвестно сколько, чтобы обработать запрос. Это я к тому, что может вам сразу нужно подумать о кластере, а не о единичном сервере.
...
Рейтинг: 0 / 0
Сервер на 10к коннектов
    #37886023
zeehond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfqzeehond,

У меня есть библиотека использующая асинхронные каналы из Java7 (nio2). Запускаю тест эхосервера на 2х ядерном ноутбуке, так что считай сервер работает на одном ядре (и пуле потоков, штуки 4). Обрабатывает 7-10 К запросов в секунду. То есть для 40К вам надо будет 4 ядра только на то, чтобы принять и отправить, и неизвестно сколько, чтобы обработать запрос. Это я к тому, что может вам сразу нужно подумать о кластере, а не о единичном сервере.

ээ
ну это не совсем показательный тест

во-первых у нотбуков совсем-совсем не те процессоры, какие ставят в сервера
и их "ядра" нельзя сравнивать, особенно во многопоточных сценариях - хотя бы по размеру L2-кэша

во-вторых если клиент, создающий нагрузку, запускается на самом нотбуке, то он может отжирать половину ресурсов на себя
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервер на 10к коннектов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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