Цитата(sobr @ May 30 2012, 17:44)

Какой контроллер, вы о чем?
Я имею в виду сервер в дата-центре.
Суть в том, что щас делаю ТСР сервер к которому будут коннектиться
Десятки тысяч девайсов через GPRS. А сдругой стороны столько же юзеров с компов и айфонов.
Wooow!
Цитата
Сервер создает практически прозрачный канал между девайсом в машине и юзером, и тот в онлайне мониторит и управляет.
Я правильно понимаю, сервер просто из тцп/удп сокета айфона отправляет в тцп/удп сокет прибора, и наоборот? Т.е. практически обработки информации нет. Это резко меняет дело. Потому, что когда речь идёт о БД, о вебе со скриптами, об каких-то других приложениях -- это одно. А тут просто proxy.
Если так, то в принципе почти хватит обычного IBM-PC. Но -- десятки тысяч, это сколько? Тут дальше начинаются вопросы связанные в основном с архитектурой ПО в первую очередь, во второй очереди лимит количества (полу)пустых пакетов в секунду, на сетевом интерфейсе. Для 100Мбит сети во втором случае речь будет идти где-то о 64к пакетов в секунду, с другой стороны поддержать более 64к коннектов на один тцп/удп порт тоже не получится. Но 100МБит сеть закончится в пределах датацентра и дааалеко не факт, что хостинг-провайдер будет иметь достаточно хорошую связность с опсосами, но это отдельный вопрос и пока далёкий. Зато недалёким видится вопрос в регулярной нарушении оной связности, что бывает в любом датацентре, и жалобы десятков тысяч клиентов. А также различные сбои ПО, сети, чего угодно ещё. Напрашивается по меньшей мере два различных сервера на двух разных площадках, множественные A-записи в DNS, и ещё скорей какие-то методы балансирования нагрузки на уровне IP-протокола (маршрутизации). Если это только прокси. Иначе ещё и репликация БД.
Что касается архитектуры ПО. google C10k problem. Вопрос в архитектуре ПО сервера. Скорей это небольшое число потоков и параллельных программ (в 2-4 раза большее, чем количество процессоров в сервере), где каждый из потоков (я бы не рекомендовал увлекаться многопоточным программированием без нужды, классические средства межпроцессного взаимодействия позволяют всё то же самое, почти, но при этом граница между процессами более явно видна не сложно вляпаться в неочевидные трудности) или программ обрабатывает достаточно большое (единицы тысяч) соединений. Здесь становится очевидно, что proxy таким образом построить достаточно легко (пример nginx), а сложные приложения, со своей сложной логикой, БД и т.п. -- не очень-то. И стоит сказать про ограничения операционной системы. По-умолчанию обычно больше ~1024 файлов (соединнений) на процесс не открыть, придётся настраивать ОС, вплоть до перекомпиляции ядра (я немножко не в теме, но знаю, проблема есть). Объём ОЗУ опять же. Несколько десятков-сотен КБайт на стек и соединение (одно!) при многопоточном программировнии (C10k -- можно забыть) или несколько килобайт при описываемом подходе.
Цитата
Вот и встал вопрос какой мощности железо надо ставить в датацентре.
VPS. Позволяет масштабирование по ресурсам и деньгам в весьма широких пределах.
Цитата
Пока выкрутился так: сам сервер VPS 600 MGz, на другом таком же плодятся клиенты в количестве 1000 и хором каждую секунду на мой сервак отправляют пакеты по 100 байт.
Проц нагрузился на 15%. тест конечно не очень коректный, но в первим приближении пойдет.
Бредовая оценка. Зачастую лимитирует отнюдь не процессор. А (зависит от софта) размер ОЗУ, ограничения ОС на число открытых сокетов, пропускная способность сети и даже непосредственно сетевой карты. А также тип технологии виртуализации.
Цитата
А те виртуальные серверы под винду на которые вы ссылки привели попробуйте хотя бы 1000 сокетов нагрузить, скорее всего разочаруетесь.
AFAIK винда просто не позволяет более N соединений по лицензионным соображениям. Какие десятки тысяч? Только если ultimate-enterprise edition.