|
|
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Привет, форумчане! В рамках тестового задания встала проблема реализации highload-кэш-сервера(от 10к долгоживущих соединений) с большим количеством запросов(40к/ceк). А проблема собственно в том, как бы это все правильно реализовать. Не создавать же 10к потоков? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 02:12:19 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
prostohz, пробуй это https://netty.io/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 09:26:08 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Для 10K простых решений не существует. Спросите у гугла про C10K problem. Нужно проанализировать требования и погонять прототипы на нагрузочных тестах. 10K потоков с небольшим стеком (Linux NPTL), могут оказаться быстрее чем NIO, например. Тем более если соединения долгоживущие. Если спросите у гугла про C10K в Java, то найдёте много рецептов на что нужно обратить внимание в первую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 10:11:16 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
что значит "долгоживущих"? Долго выполняются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 10:34:31 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Хорошее тестовое задание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 11:01:18 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Извините, почему не существует простых решений? Netty - простое решение. 10К оно решает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 11:33:56 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
prostohz, Думаю, стоит обратить внимание именно на Netty. А именно использование вебсокетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 11:36:11 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитИзвините, почему не существует простых решений? Netty - простое решение. 10К оно решает. Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 11:41:43 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczБольшой Синий КитИзвините, почему не существует простых решений? Netty - простое решение. 10К оно решает. Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят. Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:04:13 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитДумаю, стоит обратить внимание именно на Netty. А именно использование вебсокетов. Почему "вебсокетов"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:04:57 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
В случае с вебсокетами, сервер нетти подключает клиента. В дальнейшем получает запрос - отправляет ответ. Я делал что-то вроде шттп прокси на нетти. Цепочка: http запрос --> сервер нетти --> клиент-нетти --> HttpServer выдавала мне throghput ~ 800 в секунду при 1100 потоках И клиент, и сервер, и httpserver находились на одной машине. При этом клиент декодировал ChannelBuffer в HttpRequest и преобразовывал хедеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:12:05 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Потому что это очень удобно. Полнодуплексная связь, канал все время открыт, данные пересылать можно в бинарном виде. Авторизация в конце концов тут же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:14:02 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитBlazkowiczпропущено... Если сервер больше ничего не делает, кроме как клиентов подключает, то "да". Решает. Но, обычно, сервер ещё много чем занят. Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :) есть потоки, seda всякие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:14:41 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитBlazkowicz, Потому что это очень удобно. Полнодуплексная связь, канал все время открыт, данные пересылать можно в бинарном виде. Авторизация в конце концов тут же. Т.е. вы хотите сказать, что у обычных сокетов всего этого нет? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:15:26 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
tumblerrr, Почему нет. Есть конечно. Просто использовать вебсокеты удобнее, на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:16:48 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДля 10K простых решений не существует. Спросите у гугла про C10K problem. Нужно проанализировать требования и погонять прототипы на нагрузочных тестах. 10K потоков с небольшим стеком (Linux NPTL), могут оказаться быстрее чем NIO, например. Тем более если соединения долгоживущие. Если спросите у гугла про C10K в Java, то найдёте много рецептов на что нужно обратить внимание в первую очередь. Это уже давно не проблема... в лохматых годах это было проблемой... Щас все больше слышу по C100K и C500K problem ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:17:00 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Penkov VladimirБольшой Синий Китпропущено... Но Вы же станете спорить, что если сервер делает что-то еще, кроме как подключение клиентов, 40К в секунду на одной машине не добиться. Просто потому, что само это "что-то делание" может занимать более 1 секунды :) есть потоки, seda всякие... Новый поток, который что-то выполняет на каждый запрос? Это не подходит. Ограниченное количество потоков, которые выполняют вброшенные задания - тоже можно упереться в более 1 секунду. Seda - возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:21:14 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитSeda - возможно. даже более чем возможно. 10к в сек - это детский сад для седы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:49:44 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Penkov Vladimir, Я понимаю, просто интерпретировал это решение на 1 машину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:51:06 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
P.S. На одной машине, возможно, и seda не спасет. Все зависит от того, что нужно делать на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 12:52:57 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
а можно полюбопытствовать, чё вы всё про эту seda так увлечённо затираете? это же ведь не продукт а просто диссертация с каким-то прототипом из начала 200х годов годный highload-кэш-сервер это, например, Varnish ну или nginx с proxy плагином, там попроще всё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 14:53:17 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Мне на этом форуме пару дней назад посоветовали Erlang - специально для таких случаев было сделано. Сам еще не тестировал, но тема интересная. И вот еще: C10k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 15:32:01 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
zeehondа можно полюбопытствовать, чё вы всё про эту seda так увлечённо затираете? это же ведь не продукт а просто диссертация с каким-то прототипом из начала 200х годов у нас эта дисертация 20к событий в секунду (со сложной логикой, хождением в hbase итп) работает как часы и не напрягается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 15:34:57 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
ART-CODEМне на этом форуме пару дней назад посоветовали Erlang - специально для таких случаев было сделано. Сам еще не тестировал, но тема интересная. И вот еще: C10k Хабр только сюда приплетать не нужно. Там качество материала не выдерживает никакой критики. Там какой-то непонятый webbit выступает за всю Java. Круто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 15:49:11 |
|
||
|
Сервер на 10к коннектов
|
|||
|---|---|---|---|
|
#18+
Penkov Vladimirу нас эта дисертация 20к событий в секунду (со сложной логикой, хождением в hbase итп) работает как часы и не напрягается Есть мнение что на современных ОС и железе выигрышь от асинхронности минимален. Тысячи потоков справляются с аналогичной задачей не хуже. При этом логика более линейная, соответственно проще. Только потребление памяти поболе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 15:50:57 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37885129&tid=2131326]: |
0ms |
get settings: |
14ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 287ms |
| total: | 420ms |

| 0 / 0 |
