Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

А что будет быстрее работать при написании приложения для сети?   Найти похожие ветки 

 
Piter ©   (2004-04-10 13:55) [40]

Digitman (09.04.04 16:37) [6]
а вот максимального числа портов, которые могут быть открыты при каждой отдельной коннекции, с твоими миллионными аппетитами заведомо не хватит) ... нумерация же портов - от 1 до 65к


что-то я не очень понял!!!! DIGITMAN!!!  Причем здесь порты? Что, неужели теперь каждый клиент обязан коннектиться на свой ОТДЕЛЬНЫЙ порт?!
Что за фигня...


 
Verg ©   (2004-04-10 14:04) [41]


> Что, неужели теперь каждый клиент обязан коннектиться на
> свой ОТДЕЛЬНЫЙ порт?!


Не "на", а "со".


 
Piter ©   (2004-04-10 18:46) [42]

Verg (10.04.04 14:04) [41]

что "со" ?!?!
Сервер никуда не коннектится, это к нему коннектятся! На один порт... о чем вы с Digitman"ом вообще говорите?


 
TButton ©   (2004-04-10 19:31) [43]

я тоже че-т никак не пойму. порт нужен только один. вопросв том, сколько клиентов можно на один порт на вешать.


 
Verg ©   (2004-04-10 20:24) [44]

Piter ©   (10.04.04 18:46) [42]


> Специфика проги - Держать много открытых коннекшенов TCP
> и обменивать данные между ними.


Где тут про СЕРВЕР?
Ты вообще внимательно читаешь?


 
Verg ©   (2004-04-10 20:32) [45]


> Piter ©   (10.04.04 18:46) [42]


Умеешь же ты, Piter, "выдергивать" фразы из контекста...

>  о чем вы с Digitman"ом вообще говорите?


Лично я, например, вообще не понял - а о чем же говоришь тут ТЫ?

Я от тебя тут не видел ни одного утверждения - одни вопросы с многочисленными восклицаниями и сокрушениями. Возмущение, граничещее с истерикой...
Ты по subj можешь что-нибудь сказать или аргументированно, а глваное спокойно и вдумчиво возразить, приведя свои доводы?


 
TButton ©   (2004-04-10 21:11) [46]

а по сабжу "намного ли будет тормознутее работать" трудно сказать, если помимо указаного "Держать много открытых коннекшенов TCP и обменивать данные между ними" она не будет ничего делать - одинаково. а вообще скорость зависит не только от компилятора, но и от того как вы напишите код и какие технологии будете использовать.


 
Piter ©   (2004-04-10 21:26) [47]

Verg (10.04.04 20:24) [44]
Где тут про СЕРВЕР?
Ты вообще внимательно читаешь?


видимо, внимательнее тебя:

>Ето сервер будет:)) который должен с этим справиться:)
>У клиента будет одно соединение - к серверу и все. С клиентом вопросов не возникает. Впрос с сервером,
>хочу прикинуть потянетли все ето киликс или нет?

И ты это сам понял:

>Для сервера, впрочем, это не так важно

Да и Digitman вроде понял:

Digitman (09.04.04 16:41) [7]
в т.ч. и по этой причине в сетях, аналогичных ICQ, работает множество связанных между собою серверов


А вот теперь я не понимаю фразы:

Digitman (09.04.04 16:37) [6]
а вот максимального числа портов, которые могут быть открыты при каждой отдельной коннекции, с твоими миллионными аппетитами заведомо не хватит) ... нумерация же портов - от 1 до 65к


Вот при чем здесь нумерация портов? Какая разница сколько портов? Я так думаю все клиенты будут коннектится на один порт? Или у вас другое мнение?

Verg (10.04.04 20:32) [45]
Ты по subj можешь что-нибудь сказать


не могу. Я не знаю сколько сокетов может открыть максимально NT и Linux. Также я не знаю "на сколько это медленнее будет работать".
Я только заметил, что вы с Digitman"ом, имхо, не о том говорите. Человек же не спрашивает какова нумерация портов в TCP...


 
Polevi ©   (2004-04-10 21:48) [48]

>Piter ©   (10.04.04 21:26) [47]
>не могу. Я не знаю
а чего возмущаешься то ? смоги, узнай и возмущайся аргументировано


 
Verg ©   (2004-04-10 21:52) [49]


> Ето сервер будет:)) который должен с этим справиться:)
> >У клиента будет одно соединение - к серверу и все. С клиентом
> вопросов не возникает. Впрос с сервером,
> >хочу прикинуть потянетли все ето киликс или нет?


Это он сказал в ответ уже на мои уточняющие вопросы ([17], например), как ты внимательный должен был тоже заметить.


> не могу. Я не знаю сколько сокетов может открыть максимально
> NT и Linux. Также я не знаю "на сколько это медленнее будет
> работать".
> Я только заметил, что вы с Digitman"ом, имхо, не о том говорите.
> Человек же не спрашивает какова нумерация портов в TCP...


Так ответь на то, о чем человек спрашивает. Что же ты?

Ни кто же тебя не спрашивал - о том ли говорят Verg с Digitman-ом. Тут вообще все говорят о том, что может принести пользу и себе и окружающим, и спрашивающему и отвечающим. Здесь не "экзамен на право быть...". Понимаешь? Или хочешь повозмущаться чьим-либо "недостойным поведением" или заткнуть рот?

Тогда "потрепаться" - это 10-ая дверь направо...


 
nikkie ©   (2004-04-10 22:02) [50]

>Verg
тебя я совсем перестал понимать.

давайте поспокойнее. ограничение на количество клиентских подключений к одному серверному сокету должно быть. вопрос только, какое это ограничение - 100, 65000 или 4 миллиарда.

первая попавшаяся ссылка в гугле
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=8&t=000041

Q: When I try to run server application on Window-NT, serversocket can accept upto 65 K client connections & maintain it. But the same application on Solaris only allows 53 client socket connection.

A:This is UNIX, not Java thing.
Type "ulimit -n" at your shell prompt to see how many
open file descriptors can you have at once. I bet you"ll see "64" there. To enable you server app to open 50K connections, you should raise this limit (that can"t be done from the shell)
To do this, you have to find where you got this restrictions up to small number of descriptors and change it (perhaps this is in some scripts in /etc). I don"t know Solaris this well, may be you should ask this in Unix/Linux forum.


итак, видимо общее ограничение для нормальных операционных систем - 65K, реально может получиться чуть меньше. может потребоваться какая-то настройка OS. от выбора языка C/Kylix это никак не зависит.

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


 
Verg ©   (2004-04-10 22:28) [51]


> nikkie ©   (10.04.04 22:02) [50]


Если говорить про Windows, то максимальное количество открытых сокетов (в сумме и клиенты и серверы с присоединенными сокетами) для одного процесса можно увидеть в структуре WSAData после WSAStartup.

При установлении исходящего соединения (клиент, connect), кроме этого ограничения есть еще одно - количество свободных на данный момент номеров портов из "временного диапазона", т.к. при установлении исходящего соединения ядро (или приложение само)обязано присвоить какое-то уникальное значение localport для сокета.
При входящем соединении (сервер, accept) - образуется новый сокет и их количество в сумме с уже существующими не может превосходить установленный лимит.
Все.
Вопрос для сервера заканчивается только этим "лимитом" - сокетов на процесс.


 
nikkie ©   (2004-04-10 22:46) [52]

>максимальное количество открытых сокетов (в сумме и клиенты и серверы с присоединенными сокетами) для одного процесса можно увидеть в структуре WSAData после WSAStartup.
unsigned short iMaxSockets
Retained for backward compatibility, but should be ignored for Windows Sockets version 2 and later, as no single value can be appropriate for all underlying service providers.

При установлении исходящего соединения (клиент, connect) ... присвоить какое-то уникальное значение localport для сокета.
это понятно. но давай не будем мешать все в одну кучу. проблемы клиента нас не волнуют, мы говорим про сервер.

Вопрос для сервера заканчивается только этим "лимитом" - сокетов на процесс.
ок. предполагаем, что все присоединеные сокеты обслуживаются одним процессом. какой это лимит? те самые 65K? значит диспетчер должен разводить на разные порты, каждый из которых обслуживается отдельным процессом. если возможно получить 50K сокетов на процесс, то достаточно 20 серверных сокетов и процессов, их обслуживающих, чтобы поддержать миллион подключений.


 
Verg ©   (2004-04-10 23:06) [53]


> ок. предполагаем, что все присоединеные сокеты обслуживаются
> одним процессом. какой это лимит? те самые 65K? значит диспетчер
> должен разводить на разные порты, каждый из которых обслуживается
> отдельным процессом. если возможно получить 50K сокетов
> на процесс, то достаточно 20 серверных сокетов и процессов,
> их обслуживающих, чтобы поддержать миллион подключений.


Нет не 65к. Для Winsock2 - это вообще, как я понял, ограничивается чисто системными ресурсами.
Их обрабатывать - для поддержки каждого клиента все равно надо хоть сколько-нибудь связанной именно с ним памяти управляющей структуры+размеры буферов как минимум. Сколько думаешь кил на клиент ? - Кил 8-10 минимум (вместе с буферами). Плюс поток. Один для каждого? Да хоть один на несколько (сотен?).
Память процесса сколько? Реально доступной? 2 гига?
Поделим хотя бы на миллион (соединений)? :))


 
Piter ©   (2004-04-10 23:13) [54]

nikkie (10.04.04 22:46) [52]
ок. предполагаем, что все присоединеные сокеты обслуживаются одним процессом. какой это лимит? те самые 65K?


о, nikkie как всегда все понял, говорит по делу.

Если честно - не думаю, что лимит в 65k. Неужели он равен количеству возможных портов в TCP? Я знаю, что в 9x маскимальное количество сокетов было 255, причем это ограничение не на процесс, а на систему вообще, на все процессы.
В NT это значение явно больше. Намного больше. Я даже думаю, что это зависит от поставки, в NT server этот лимит, наверняка, больше, чем в NT prof и home


 
Verg ©   (2004-04-10 23:26) [55]

Я так считаю, что разводить на разные порты вовсе не обязательно - это можно делать запуском дополнителных процессов с передачей им дублицированных дескрипторов присоединенных (полученных accept-ом) сокетов и закрытием их же в "слушающем процессе". К примеру, каждой 500-ке принятых соединений - новый процесс. Те процессы сами группируют эти сокеты по потокам обработки, например, по 60-100 штук.

Но,.... я бы не рискнул "валить" это все на один комп. Хот SuSe, хоть 64-бита... Изначально ограничивать "парк" техники, способной поднять такую задачу?
На мой взгляд, нужно сразу в архитектуре закладывать распределенную, масштабируемую систему, наподобии ICQ.


 
Piter ©   (2004-04-10 23:36) [56]

Polevi (10.04.04 21:48) [48]
смоги, узнай и возмущайся аргументировано


по-моему, ты не по адресу вмешался. Я и не говорил, что знаю ответа на вопрос. Я просто сделал замечание...
Или если я знаю, что человек говорит не то, но сам ответа не знаю - мне запрещается высказываться?


 
nikkie ©   (2004-04-11 00:21) [57]

Я так считаю, что разводить на разные порты вовсе не обязательно - это можно делать запуском дополнителных процессов с передачей им дублицированных дескрипторов присоединенных (полученных accept-ом) сокетов и закрытием их же в "слушающем процессе".
бестолково, наверное, рассуждать какая схема работы сервера окажется лучше. надо пробовать.

а вот интересный FAQ, имхо
http://www.opennet.ru/base/dev/server_way.txt.html

Но,.... я бы не рискнул "валить" это все на один комп.
это точно...



Страницы: 1 2 вся ветка

Форум: "Сети";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.58 MB
Время: 0.083 c
11-1074237028
<Falcon>
2004-01-16 10:10
2004.05.30
QueryEndSession и вход в систему под другим именем


11-1072781364
Vadim Petrov
2003-12-30 13:49
2004.05.30
XHelpgen и новаый KOL


1-1084857153
MikePol
2004-05-18 09:12
2004.05.30
COM-port


3-1083821859
Mamed
2004-05-06 09:37
2004.05.30
get database name


7-1083354207
ArchAngel
2004-04-30 23:43
2004.05.30
Мониторинг приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский