powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
19 сообщений из 19, страница 1 из 1
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37172869
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не совсем для этого топика, но т.к. писать собираюсь на Си, то и спросить решил тут.

Есть FTP сервер через который клиенты передают файлы друг-другу.
Для приема клиенты раз в 10-15 минут опрашивают сервер для проверки наличия файлов.
Количество клиентов 3000.
Необходимо повысить скорость доставки. Уменьшать интервал опроса не выход.

Хочу параллельно поднять Jabber/XMPP сервер, через который отправитель будет оповещать получателя об отправке файлов.
Таким образом получатель сразу же узнает об наличии файла и будет соединяться с рабочим сервером только в нужных случаях, и не будет в холостую долбить сервер постоянными проверками.

Т.к. падение данной системы не вызовет никаких проблем в общей работе (при падении все будет работать как сейчас), то вкладываться в ее надежность смысла нет. Да и ресурсов не так уж и много под это дело.
В особенностях работы TCP/IP я очень слабо разбираюсь, поэтому описываю подробно как будет жить сервер:
Есть комп с Win7Prof на котором будет Jabber-сервер (смотрю пока на OpenFire, может кто еще чего посоветует)
Комп подключен к инету через роутер DLink DIR300 (сервер смотрит наружу через мэппинг порта) Сам интернет "домашний", т.е. обычное офисное Ethernet-подключение 2 Мбита к обычному провайдеру.

Трафика получается 30-40 Мб в сутки: 20-30 тыс. полезных сообщений в сутки (пусть 1КБ каждое, итого 20-30 Мб), допустим еще какие-то keepalive пакеты пойдут раз в 5-10 минут (на 3000 клиентов 10 Мб хватит)

ВОПРОС: Будет ли работать 3000 клиентов с этим Jabber-сервером при моих исходных данных?
1. пишут о каком-то ограничении 10 соединений несерверных ОС (в т.ч. Win7), не совсем понимаю о каких соединениях речь, но увеличивается эта цифра до 255 максимум.
2. пишут что есть ограничения у провайдера на количество одновременных соединений.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37172884
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
касательно вопроса
1) на вин-хп есть ограничение на 10 (автивных вроде б) подключений, всего - много может быть. для хп это патчится (не совсем правильным патчем). на линухе такого не должно быть, как и на 2003/2008 виндах.
2) зависит от провайдера. может быть а может и не быть...
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37172985
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гордый Корень1) на вин-хп есть ограничение на 10 (автивных вроде б) подключений, всего - много может быть. для хп это патчится (не совсем правильным патчем). на линухе такого не должно быть, как и на 2003/2008 виндах.

А как же на XP торренты работают?

10 - это количество полуоткрытых соединений. Т.е. соединений в стадии установления. Патчится прогой TCP-Z до 100. Можно на время сессии в памяти, можно пропатчить системный файл навсегда. Проблем не вызывает, зато торренты начинают работать, а не курить бамбук в ожидании подключений.


Dima T,
Ну а по поводу ограничений провайдера - тут только опытным путем. Оно есть в любом случае, т.к. железо, которого на пути от твоего ПО к выходу во внешний мир у провайдера не мало, тоже не безгранично по возможностям. Простенький DIR-300 вовсе не обязан справляться с таким количеством подключений - это не его цель. Его цель - потреблять не больше 10 ватт энергии и обеспечивать домашние нужды. Не удивлюсь, если его проц и/или память захлебнутся на нескольких сотнях активных коннектов. Но мало ли. У провайдера роутеры/концентраторы по крышам (или где там он у вас) не "домашние", но они обслуживают не одного тебя и потому тоже мильён подключений тебе не обеспечат.

Ну и линукс обычно показывает более высокую максималку по кол-ву подключений нежели винда.

Примерно оценить потолок можно например тут: http://www.speed.io/index_en.html
Тестить лучше в IE. Правда что-то флешка ошибку выкидывает, раньше такого не было. Но нажимаем "Пропустить" и стартуем тест без проблем. У меня подключение прямое, без роутера. До первых 300 гиг траффика в отчетном периоде скорость не лимитируется и ее потолок колеблется от 50 до 70 мбит/с. Конечно же тестовая площадка не у прова и потому результаты тестирования не только от меня зависят. По траффику этот тест показал 2.5 Мбит на закачку и 9 МБит на аплоад. Подключений я "сорвал" аж 1500. Возможно в линуксе пару штук получится, лень перезагружаться, чтобы проверить.

Интересно, сколько у тебя выйдет через роутер.


Вопрос в том, а стОит ли вообще держать онлайн 3000 пользователей у себя? Т.е. почему бы всех их не зарегистрировать на том же jabber.org, а так же акк для сервера. Положили файлы, сервер (или тот, кто положил), как и задумано тобой отправляет сообщение адресату.

Единственный минус, что стабильность сервера ты не контролируешь. Но такие публичные сервера падают редко и не надолго.

Ну и другая проблема, которая не зависит от того, публичный или свой джаббер, - как осуществлять переключение на старый механизм опроса при пропадении связи в джаббер-клиенте?
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173282
Дональдак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,
10 - это количество полуоткрытых соединений. Т.е. соединений в стадии установления. Патчится прогой TCP-Z до 100. Можно на время сессии в памяти, можно пропатчить системный файл навсегда. Проблем не вызывает, зато торренты начинают работать, а не курить бамбук в ожидании подключений.

Насколько это законно?
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173349
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon10 - это количество полуоткрытых соединений. Т.е. соединений в стадии установления. Патчится прогой TCP-Z до 100. Можно на время сессии в памяти, можно пропатчить системный файл навсегда. Проблем не вызывает, зато торренты начинают работать, а не курить бамбук в ожидании подключений.
В Win7 вроде как это снято, по крайней мере VistaSP2 точно снято
В любом случае ключевое слово полуоткрытые , т.е. блокируется попытка одновременно установить более 10 соединений.
Как я понял процесс установки соединения занимает определенное время и ОС не дает начать 11-е пока 10 в процессе установки.
Мешает это P2P клиентам, которые хотят сразу со всеми законнектится. В моем случае клиенты одновременно не будут цепляться.
Edd.DragonПримерно оценить потолок можно например тут: http://www.speed.io/index_en.html
Тестить лучше в IE. Правда что-то флешка ошибку выкидывает, раньше такого не было. Но нажимаем "Пропустить" и стартуем тест без проблем. У меня подключение прямое, без роутера. До первых 300 гиг траффика в отчетном периоде скорость не лимитируется и ее потолок колеблется от 50 до 70 мбит/с. Конечно же тестовая площадка не у прова и потому результаты тестирования не только от меня зависят. По траффику этот тест показал 2.5 Мбит на закачку и 9 МБит на аплоад. Подключений я "сорвал" аж 1500. Возможно в линуксе пару штук получится, лень перезагружаться, чтобы проверить.
Интересно, сколько у тебя выйдет через роутер.
Под IE вообще не заработал тест, запустил со своего компа в Chrome под XP SP3 - Закачка 4 Мбит, Аплоад 4,5 Мбит, Соединений 950. Но как я понял это не одновременных соединений, а соединений в секунду.
Опять же тест показывает скорость пропускания канала, что важно при закачке большого объема. Т.е. в моем случае скорость полезной передачи 0,5 Мбайт в секунду, т.е. мои плановые 30-40 Мб в сутки проскочат за 1-2 минуты.
Edd.DragonПростенький DIR-300 вовсе не обязан справляться с таким количеством подключений - это не его цель. Его цель - потреблять не больше 10 ватт энергии и обеспечивать домашние нужды
Как я понимаю роутеры работают на уровне передачи IP-пакетов. Т.е. мой ДИР300 будет делать следующее: принимать пакет где указано "IP клиента:порт" на свой порт 5222 и тупо пересылать на порт 5222 компа с моим джаббер сервером (т.к. это прописано в настройках ДИР300). При этом он даже не НАТит пакет (проверил: север видит IP клиента, а не ДИР300). В обратную сторону точно также тупо переслать в инет, т.к. "IP клиента:порт" уже указано при отправке джаббер-сервером.
Т.е. в данном случае роутеру без разницы принять/отправить 1000 пакетов от одной точки или по одному пакету от 1000 точек. То же самое касается оборудования провайдеров.

Edd.DragonВопрос в том, а стОит ли вообще держать онлайн 3000 пользователей у себя? Т.е. почему бы всех их не зарегистрировать на том же jabber.org, а так же акк для сервера. Положили файлы, сервер (или тот, кто положил), как и задумано тобой отправляет сообщение адресату.
Была такая мысль, только там нельзя скриптом 3000 учеток зарегать, а руками как-то не охота. И нет никакой гарантии что владельцы сервера не начнут что-то менять в протоколе обмена в один прекрасный день, как это с аськой происходит.
Edd.DragonЕдинственный минус, что стабильность сервера ты не контролируешь. Но такие публичные сервера падают редко и не надолго.
Ну и другая проблема, которая не зависит от того, публичный или свой джаббер, - как осуществлять переключение на старый механизм опроса при пропадении связи в джаббер-клиенте?
Тут все просто и надежно. Падение сервера или пропадание моего "домашнего" инета переводят работу клиентов в старый режим.
Старый механизм опроса не отменяется. Cейчас висит у пользователя прога которая раз в 10-15 минут проверяет свою папку на FTP.
Хочу переделать так: в проге добавляется ожидание извещений типа "проверь папку", по извещению папка проверяется незамедлительно и контрольная проверка раз в час если более часа не было извещений, в случае отсутствия соединения с джаберром - старый режим с периодом проверки 10-15 минут.

Главное что мне не давало покоя - это ограничение "10 соединений" зашитое в винду, спасибо что помог разобраться что оно означает.

PS Нашел решение на крайний случай если все-таки вылезут какие-то глюки или ограничения на моем самодельном сервере - хостинг провайдеры предлагают виртуальные сервера за 500-700 р. в месяц, сумма подъемная, будет глючить вынесу свой сервер на провайдера.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173385
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКак я понимаю роутеры работают на уровне передачи IP-пакетов. Т.е. мой ДИР300 будет делать следующее: принимать пакет где указано "IP клиента:порт" на свой порт 5222 и тупо пересылать на порт 5222 компа с моим джаббер сервером (т.к. это прописано в настройках ДИР300). При этом он даже не НАТит пакет (проверил: север видит IP клиента, а не ДИР300)

гыы а подробнее можно )))
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173409
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДональдакEdd.Dragon,
10 - это количество полуоткрытых соединений. Т.е. соединений в стадии установления. Патчится прогой TCP-Z до 100. Можно на время сессии в памяти, можно пропатчить системный файл навсегда. Проблем не вызывает, зато торренты начинают работать, а не курить бамбук в ожидании подключений.

Насколько это законно?
Не волнует. Нет настройки в стандартном интерфейсе или реестре - значит патчим как можем. Тормоза не устраивают. Возмущений от представителей Микрософта в интернетах не видел ни разу (они это ограничили исключительно для усложнения жизни троянам, которые устраивают на коме жертвы перевалочные пункты и спам-центры, т.к. внимать к аккуратности пользователя - бесполезно). Тест на валидность винда тоже не проваливает от этого. Апдейтам тоже не мешает.

авторпроверил: север видит IP клиента, а не ДИР300
Ну а с каких делов не видеть в ответном пакете адрес, на который я собственно свой пакет отправлял?
А вот твой адрес - локальный. И задача НАТа заключается в том, чтобы, отправляя твой пакет адресату, заменить в нем твой локальный адрес на свой внешний, а потом не попутать кому в локалке какие ответные пакеты раздать.

Так что там у тебя не натится то? Все натится. )))


авторСоединений 950. Но как я понял это не одновременных соединений, а соединений в секунду.

Да, ты прав, только не в секунду, а в минуту:
http://www.speed.io/faq_en.html What is the connection test and how do you measure it?
Our connection test is measuring how many connection your local computer can establish to the internet per minute . This results are determined by requesting a very small file from our worldwide server-cluster and analyzing the number of successful connections.

Жаль. По сути он может показывать хоть 6000 конекшинов, это ни о чем не скажет ни по нашему вопросу, ни даже по вопросу реальной "скорострельности" создания подключений с реальными людьми в тех же торрентах ))
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173412
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonТак что там у тебя не натится то? Все натится. )))

В смысле, что суть ната:
- в исходящих от тебя пакетах отправитель (ты локальный) заменяется на адрес роутера;
- во входящих пакетах получатель (роутер) заменяется на твой локальный адрес.

А ты почему-то решил, что нат должен менять во входящих пакетах отправителя (некий 1.2.3.4) на адрес роутера. С каких делов?
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173532
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragonавторпроверил: север видит IP клиента, а не ДИР300
Ну а с каких делов не видеть в ответном пакете адрес, на который я собственно свой пакет отправлял?
А вот твой адрес - локальный. И задача НАТа заключается в том, чтобы, отправляя твой пакет адресату, заменить в нем твой локальный адрес на свой внешний, а потом не попутать кому в локалке какие ответные пакеты раздать.

Так что там у тебя не натится то? Все натится. )))
Согласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов:
У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2.
т.е. адрес отправителя не подменяется на внутренний IP ДИР300-1, иначе бы маршрутизация не мешала.

Думаю что мощности НАТа в ДИР300 хватит, операции достаточно простые, интелекта не требуют:
1. Входяший пакет из инета - передать на IP:порт прописанный в правиле.
2. Исходящий пакет в инет - заменить локальный IP отправителя на внешний ДИРа, заменить номер порта на внешний порт из правила.
Хотя не исключаю что в ДИРе это как-то усложнено и возникнут ограничения. В этом случае можно инет напрямую в сервер воткнуть.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37173727
mayton1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дима, по смыслу это напоминает пиринговую сеть с координатором в центре. Возникает вопрос, нужно-ли вообще централизовывать файлы? Может быть клиентам проще пробрасывать сокеты непосредственно друг с другом?
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174058
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton1Дима, по смыслу это напоминает пиринговую сеть с координатором в центре. Возникает вопрос, нужно-ли вообще централизовывать файлы? Может быть клиентам проще пробрасывать сокеты непосредственно друг с другом?
Нужен центральный сервер:
1. Получатель может быть недоступен в момент отправки.
2. Не у всех клиентов можно настроить прием входящих соединений. Многие сидят в локалках за роутерами, не везде есть админы, а там где есть - админа надо еще убедить чтобы он под твой софт сетку настроил.
3. На самом деле система более сложная чем я описал, описанная задача является лишь частью сервера, который кроме передачи файлов рулит правами доступа пользователей, контролирует актуальность инфы и т.д.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174086
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСогласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов:
У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2.

Так и должно происходить при пробросе портов.
Причем здесь убогость рутера?
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174137
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyDima TСогласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов:
У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2.

Так и должно происходить при пробросе портов.
Причем здесь убогость рутера?
Проблема в том что невозможно сменить шлюз на компе если на него настроен мэппинг порта. Как следствие нельзя одновременно пробросить на один комп порты от разных роутеров.
Богатого опыта в этом вопросе не имею, может оно и в цисках точно также устроено. Плюс такой проброски в том что сервер видит IP того кто зацепился, а не роутера.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174152
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКак следствие нельзя одновременно пробросить на один комп порты от разных роутеров.
Если проброс с разных рутеров делать на разные интерфейсы сервера, то в линуксе можно достаточно просто настроить чтобы ответные пакеты шли по тому же интерфейсу откуда пришло соединение.
В винде наверно тоже как-то можно настроить.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174161
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а зачем вам на сервере винда? Да еще и несерверная версия.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174176
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyDima TКак следствие нельзя одновременно пробросить на один комп порты от разных роутеров.
Если проброс с разных рутеров делать на разные интерфейсы сервера, то в линуксе можно достаточно просто настроить чтобы ответные пакеты шли по тому же интерфейсу откуда пришло соединение.
В винде наверно тоже как-то можно настроить.
Насколько я знаю такое только в линуксах возможно.
В винде интерфейсов можно понаделать, но ответ все-равно пойдет на шлюз по умолчанию.
Anatoly MoskovskyКстати, а зачем вам на сервере винда? Да еще и несерверная версия.
Все в целях экономии. Пользуем что имеем.
Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются.
Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174195
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВсе в целях экономии. Пользуем что имеем.
Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются.
Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить.
Сомнительная экономия. Баксов на 200
Зато гемор уже начался еще до написания самой программы :).
Поверьте, это еще не все прелести с которыми вам придется столкнуться в сетевом программировании под винду, да еще и на голом С.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174218
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyDima TВсе в целях экономии. Пользуем что имеем.
Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются.
Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить.
Сомнительная экономия. Баксов на 200
Зато гемор уже начался еще до написания самой программы :).
Не совсем понял как я его могу порешать за 200$ ? Поставить серверный виндовс? так у него с маршрутизацией все также как в десктопном. Линукс я туда поставить не могу.
Гимор в принципе уже полечили, для переключения на резервный канал меняется не шлюз по умолчанию, а только маршруты до тех IP, которые нужны другому софту.
Есть простое и красивое решения гимора с двумя каналами: выкинуть ДИРы, воткнуть оба канала в комп с линуксом и сделать его шлюзом. Тогда и порты пробрасывать можно будет так как хочется, и канал по умолчанию переключать.
Anatoly MoskovskyПоверьте, это еще не все прелести с которыми вам придется столкнуться в сетевом программировании под винду, да еще и на голом С.
Клиентская часть будет своя самописная, тут ОС не повыбираешь - все юзеры с виндой.
Что касается jabber-сервера, так поэтому и беру готовый софт, хотя под мою простую задачу можно было бы свой велосипед поизобретать.
И "план Б" заготовлен (выше писал): если все-таки вылезут какие-то глюки или ограничения на моем самодельном сервере - хостинг провайдеры предлагают виртуальные сервера за 500-700 р. в месяц, сумма подъемная, будет глючить вынесу свой jabber-сервер на провайдера.
...
Рейтинг: 0 / 0
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
    #37174319
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВсе в целях экономии. Пользуем что имеем.
линукс xD ?

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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