|
|
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Вопрос не совсем для этого топика, но т.к. писать собираюсь на Си, то и спросить решил тут. Есть 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. пишут что есть ограничения у провайдера на количество одновременных соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2011, 19:23 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
касательно вопроса 1) на вин-хп есть ограничение на 10 (автивных вроде б) подключений, всего - много может быть. для хп это патчится (не совсем правильным патчем). на линухе такого не должно быть, как и на 2003/2008 виндах. 2) зависит от провайдера. может быть а может и не быть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2011, 19:36 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Гордый Корень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, а так же акк для сервера. Положили файлы, сервер (или тот, кто положил), как и задумано тобой отправляет сообщение адресату. Единственный минус, что стабильность сервера ты не контролируешь. Но такие публичные сервера падают редко и не надолго. Ну и другая проблема, которая не зависит от того, публичный или свой джаббер, - как осуществлять переключение на старый механизм опроса при пропадении связи в джаббер-клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2011, 21:33 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, 10 - это количество полуоткрытых соединений. Т.е. соединений в стадии установления. Патчится прогой TCP-Z до 100. Можно на время сессии в памяти, можно пропатчить системный файл навсегда. Проблем не вызывает, зато торренты начинают работать, а не курить бамбук в ожидании подключений. Насколько это законно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 06:28 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
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 р. в месяц, сумма подъемная, будет глючить вынесу свой сервер на провайдера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 10:36 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Dima TКак я понимаю роутеры работают на уровне передачи IP-пакетов. Т.е. мой ДИР300 будет делать следующее: принимать пакет где указано "IP клиента:порт" на свой порт 5222 и тупо пересылать на порт 5222 компа с моим джаббер сервером (т.к. это прописано в настройках ДИР300). При этом он даже не НАТит пакет (проверил: север видит IP клиента, а не ДИР300) гыы а подробнее можно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 11:32 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Дональдак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 конекшинов, это ни о чем не скажет ни по нашему вопросу, ни даже по вопросу реальной "скорострельности" создания подключений с реальными людьми в тех же торрентах )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 12:13 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Edd.DragonТак что там у тебя не натится то? Все натится. ))) В смысле, что суть ната: - в исходящих от тебя пакетах отправитель (ты локальный) заменяется на адрес роутера; - во входящих пакетах получатель (роутер) заменяется на твой локальный адрес. А ты почему-то решил, что нат должен менять во входящих пакетах отправителя (некий 1.2.3.4) на адрес роутера. С каких делов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 12:17 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Edd.Dragonавторпроверил: север видит IP клиента, а не ДИР300 Ну а с каких делов не видеть в ответном пакете адрес, на который я собственно свой пакет отправлял? А вот твой адрес - локальный. И задача НАТа заключается в том, чтобы, отправляя твой пакет адресату, заменить в нем твой локальный адрес на свой внешний, а потом не попутать кому в локалке какие ответные пакеты раздать. Так что там у тебя не натится то? Все натится. ))) Согласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов: У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2. т.е. адрес отправителя не подменяется на внутренний IP ДИР300-1, иначе бы маршрутизация не мешала. Думаю что мощности НАТа в ДИР300 хватит, операции достаточно простые, интелекта не требуют: 1. Входяший пакет из инета - передать на IP:порт прописанный в правиле. 2. Исходящий пакет в инет - заменить локальный IP отправителя на внешний ДИРа, заменить номер порта на внешний порт из правила. Хотя не исключаю что в ДИРе это как-то усложнено и возникнут ограничения. В этом случае можно инет напрямую в сервер воткнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 14:27 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Дима, по смыслу это напоминает пиринговую сеть с координатором в центре. Возникает вопрос, нужно-ли вообще централизовывать файлы? Может быть клиентам проще пробрасывать сокеты непосредственно друг с другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2011, 18:34 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
mayton1Дима, по смыслу это напоминает пиринговую сеть с координатором в центре. Возникает вопрос, нужно-ли вообще централизовывать файлы? Может быть клиентам проще пробрасывать сокеты непосредственно друг с другом? Нужен центральный сервер: 1. Получатель может быть недоступен в момент отправки. 2. Не у всех клиентов можно настроить прием входящих соединений. Многие сидят в локалках за роутерами, не везде есть админы, а там где есть - админа надо еще убедить чтобы он под твой софт сетку настроил. 3. На самом деле система более сложная чем я описал, описанная задача является лишь частью сервера, который кроме передачи файлов рулит правами доступа пользователей, контролирует актуальность инфы и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 10:07 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Dima TСогласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов: У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2. Так и должно происходить при пробросе портов. Причем здесь убогость рутера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 11:17 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima TСогласен, как-то НАТится, но как-то убого ДИР300 это делает при мэппинге портов: У меня два канала, два ДИР300 соответственно. На компе есть прога, на которую с ДИР300-1 замэплен порт, стоит переключить на компе шлюз по умолчанию на ДИР300-2 и прога становится недоступной из инета, все ответные пакеты шлет на ДИР300-2. Так и должно происходить при пробросе портов. Причем здесь убогость рутера? Проблема в том что невозможно сменить шлюз на компе если на него настроен мэппинг порта. Как следствие нельзя одновременно пробросить на один комп порты от разных роутеров. Богатого опыта в этом вопросе не имею, может оно и в цисках точно также устроено. Плюс такой проброски в том что сервер видит IP того кто зацепился, а не роутера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 13:03 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Dima TКак следствие нельзя одновременно пробросить на один комп порты от разных роутеров. Если проброс с разных рутеров делать на разные интерфейсы сервера, то в линуксе можно достаточно просто настроить чтобы ответные пакеты шли по тому же интерфейсу откуда пришло соединение. В винде наверно тоже как-то можно настроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 13:26 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Кстати, а зачем вам на сервере винда? Да еще и несерверная версия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 13:32 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima TКак следствие нельзя одновременно пробросить на один комп порты от разных роутеров. Если проброс с разных рутеров делать на разные интерфейсы сервера, то в линуксе можно достаточно просто настроить чтобы ответные пакеты шли по тому же интерфейсу откуда пришло соединение. В винде наверно тоже как-то можно настроить. Насколько я знаю такое только в линуксах возможно. В винде интерфейсов можно понаделать, но ответ все-равно пойдет на шлюз по умолчанию. Anatoly MoskovskyКстати, а зачем вам на сервере винда? Да еще и несерверная версия. Все в целях экономии. Пользуем что имеем. Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются. Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 13:57 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Dima TВсе в целях экономии. Пользуем что имеем. Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются. Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить. Сомнительная экономия. Баксов на 200 Зато гемор уже начался еще до написания самой программы :). Поверьте, это еще не все прелести с которыми вам придется столкнуться в сетевом программировании под винду, да еще и на голом С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 14:17 |
|
||
|
Возможно обслуживание 3000 входящих соединений на "домашнем" компе?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima TВсе в целях экономии. Пользуем что имеем. Это не сервер в обычном понимании. Это отдельно стоящий комп, выполняющий ряд задач, которые с планировщика запускаются. Комп достаточно мощный, загружен он не сильно, работает круглосуточно, вот и решил еще один сервис на него повесить. Сомнительная экономия. Баксов на 200 Зато гемор уже начался еще до написания самой программы :). Не совсем понял как я его могу порешать за 200$ ? Поставить серверный виндовс? так у него с маршрутизацией все также как в десктопном. Линукс я туда поставить не могу. Гимор в принципе уже полечили, для переключения на резервный канал меняется не шлюз по умолчанию, а только маршруты до тех IP, которые нужны другому софту. Есть простое и красивое решения гимора с двумя каналами: выкинуть ДИРы, воткнуть оба канала в комп с линуксом и сделать его шлюзом. Тогда и порты пробрасывать можно будет так как хочется, и канал по умолчанию переключать. Anatoly MoskovskyПоверьте, это еще не все прелести с которыми вам придется столкнуться в сетевом программировании под винду, да еще и на голом С. Клиентская часть будет своя самописная, тут ОС не повыбираешь - все юзеры с виндой. Что касается jabber-сервера, так поэтому и беру готовый софт, хотя под мою простую задачу можно было бы свой велосипед поизобретать. И "план Б" заготовлен (выше писал): если все-таки вылезут какие-то глюки или ограничения на моем самодельном сервере - хостинг провайдеры предлагают виртуальные сервера за 500-700 р. в месяц, сумма подъемная, будет глючить вынесу свой jabber-сервер на провайдера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2011, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37173385&tid=1343056]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
4891ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 5231ms |

| 0 / 0 |
