Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Реально ли написать мощный сервер на .NET? Добавлено: 16.11.11 10:06  

Автор вопроса:  AgentFire | ICQ: 192496851 
Реально ли написать на .NET такой сервер (допустим, под windows 2000 или R2, хз), который бы выдерживал десятки тысяч подключений на рядовом 8 ядернике с 32 гигами оперативки?

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 1
Автор ответа:
 Sergey



Вопросов: 4
Ответов: 5
 Профиль | | #1 Добавлено: 16.11.11 15:06
Как мне кажется - то да. Но это легко проверить. Написать маленький сервер(который только и умел бы подключать клиента) и клиента (котоый только и умел бы подключаться к серверу). Найти 20000 компов и сказать им всем в одно и тоже время подключиться к серваку. Проверку пройдёт (посмотреть загрузку компа) - хорошо, нет - значит проблему нужно искать. Возможно, что и сеть виновата будет при таком большом подключении. Может сеть не выдержать.

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 16.11.11 16:30
Sergey пишет:
Но это легко проверить: найти 20000 компов и...
угу спасибо, улыбнуло.
но меня интересует достоверная информация, которую кто-либо проверял в процессе собственного карьерного роста и не на маленьком сервере, а на крупном, с базой и шлюхами.

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 16.11.11 22:32
Реально. Я делал с шлюхами и блекджеком (!)
Причем для этого даже не нужен Windwos 2000 (FAIL!), 8 ядер и 32 гига оперативки.

Сервер будет реально держать указанное кол-во подключений (фактически кол-во подключений не будет ограничено со стороны дотнета) одновременно, принимать от них данные и отправлять данные.

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 17.11.11 05:15
Нужно понимать, что написание такой системы сопряжено с кучей проблем.

В частности, проблемы многопоточности из теоритических (когда их можно наблюдать только имитируя очень высокую нагрузку, реально не встречающуюся) становятся вполне реальными

Необходимо работать в асинхронном режиме (если есть вероятность завершить проект после релиза C# 5, стоит начать делать сразу на нем, так как там асинхронные операции делаются намного проще чем в предыдущих версиях).
Серьезно работать над сетевым протоколом (да, мой юный друг, SOAP уже не покатит, так как, передавая 4-байтное число в конверте весом 50 кб, просрешь все полимеры). И вообще на WCF я бы не опирался, так как аналогичная функциональность реализуется тысячей строк кода, над которыми будет полный контроль.

Ответить

Номер ответа: 5
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 18.11.11 09:53
свой XML протокол?

Ответить

Номер ответа: 6
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 18.11.11 16:45
ПОд асинхронными подразумеваются BeginXxx и EndXxx ?

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 19.11.11 02:53
да, но не BeginInvoke/EndInvoke
Можно свой XML, можно бинарный протокол

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 19.11.11 12:57
XML всё-таки тяжелый для парсинга. Бинарный будет лучше. Впрочем кто-то еще JSON пользует, тоже вариант.

Ответить

Номер ответа: 9
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #9 Добавлено: 19.11.11 17:15
Artyom пишет:
 И вообще на WCF я бы не опирался, так как аналогичная функциональность реализуется тысячей строк кода, над которыми будет полный контроль.
Подробнее плиииииз. Мне интересно почему?

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 20.11.11 18:37
Почему на WCF бы не опирался?

Я пробовал такой вариант сделать, емнип делал свой транспор и message encoder. Если с транспортом проблем не было, то с енкодером были, потому что вся система даже внутри сильно завязана на SOAP. Мне фактически приходилось свой формат данных преобразовывать в SOAP чтоб WCF мог дальше обрабатывать полученое сообщение. Возможно, можно было уйти глубже и обойти это, но времени на подобные эксперименты уже не было.

В результате после попыток сделать на WCF сделал без него. Получил 2-кратное ускорение сетевой части (впрочем небольшое утешение), и полный контроль за процесом.
Самой трудоемкой задачей кстати оказался сериализатор/десериализатор сообщений.
На тесте выдерживал любое кол-во одновременных подключений (лимит был со стороны ОС, по-моему 32 тысячи с лишним).

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 21.11.11 09:04
А одновременный обмен данных по хотя бы 3-5 тысячам из этих подключений?

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 22.11.11 00:51
Если хватит пропускной способности сетевых каналов для приема и передачи данных, оперативной памяти для хранения буферов приема/отправки и программных данных, ресурсов процессора для обрабокти входящих данных и подготовки новых данных для отправки, то возможен.

Ответить

Номер ответа: 13
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #13 Добавлено: 22.11.11 09:16
Artyom пишет:
да, но не BeginInvoke/EndInvoke
А что тогда?

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 22.11.11 09:34
AgentFire пишет:
А что тогда?

Поскольку речь идет о стримах, то я полагаю BeginRead/EndRead

Ответить

Номер ответа: 15
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #15 Добавлено: 22.11.11 09:40
А какие есть еще варианты?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам