Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2 3

nester ©   (2004-04-09 16:08:00) 

Меня интересует намного ли будет тормознутее работать сетевая прога написаная на Делфи/Kylix под линух по сравнению с С.
Специфика проги - Держать много открытых коннекшенов TCP и обменивать данные между ними.
Коннекшенов будет ооооочень много, порядка милионов, ну железо тоже будет соответствующее.
Вод думаю на Делфи/Kylix под линух писать. Но прежде интересуюсь на сколько это медленнее будет работать, желательно ответ услышать типа примерно в х раз%)))
Заранее благадарю


Verg   (2004-04-09 17:47:00) [41]


> nester ©   (09.04.04 17:42) [16]


Да нет, я не про то спрашиваю. Я про, - это будет клиент, который устанавливает и поддерживает соединения, или это будет сервер, который долже справится с таким количеством входящих седенений?


nester   (2004-04-09 17:42:00) [42]

2Verg [13]
> "Держать много открытых коннекшенов TCP... " - это поддерживать соединения или принимать входящие.

Это значит держать его открытым, то есть держать открытым сразу много соединений и меняться данными между ними.
Но не так открыл, послал данные, закрыл,
А так - отрыл, послал данные, НЕ закрыл, ждемс, опять данные послал, НЕ закрыл ...


Verg   (2004-04-09 17:39:00) [43]


> Digitman ©   (09.04.04 17:26) [12]


А.а! Вон что: я там перепутал - там там не accept, а connect конечно.
У сервера-то как раз все должно быть нормально.


nester   (2004-04-09 17:38:00) [44]

Похоже мы о раззных вещах говорим.
Я говорю о file-max. Я имел в виду максимально возможное число открытых дискрипторов. оно по умолчанию кажется у редхата 7 1024 стоит - вечно былы с этим проблеммы на больших серверах. И действительно максимум можно было поставить 65к, но сисадмин както ето решил. Я так понял перекомпилял ядро.

Теперь я понял о чем тут речь ведется. Мне кажется господа вы путаете понятия соединения и порт. Сервис будет на одном фиксированом порту висеть(может на нескольких).
Я не собираюсь на каждого юзверя выделять по порту%))) все в один%))) Как по вашему апач работает?
Число возможных соединений решается довольно просто - много айпишников у одного сервера(скажем n). Следовательно число возможных открытых одновременоо сокетов будет 65к*n - ну а остальное упреться в производительность сервера и максимальное число открытых дискрипторов(которое задается перекомпилированием ядра)

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


Verg   (2004-04-09 17:28:00) [45]


> nester ©   (09.04.04 16:08)  


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


Digitman   (2004-04-09 17:26:00) [46]


> Verg ©   (09.04.04 17:22) [11]


поясни свою мысль ..


Verg   (2004-04-09 17:22:00) [47]


> Digitman ©   (09.04.04 17:02) [10]


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


Digitman   (2004-04-09 17:02:00) [48]


> nester ©   (09.04.04 16:46) [8]


да компилять-то ядро ты волен как угодно)

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


Verg   (2004-04-09 16:58:00) [49]


> nester ©   (09.04.04 16:46) [8]


> 64-х битная версия SuSe Linux поддерживает более 65k коннекшенов.

В протоколе TCP порт задается 16-битовам числом.

Как же назаначаются в этой замечательной SuSe Linux эти значения ф-цией accept, когда диапазон в 65к, обусловленный протоколом, заканчивается?


nester   (2004-04-09 16:46:00) [50]

:)))ето я понял.
В sysctl мнеяется етот параметр на большее число.
64-х битная версия SuSe Linux поддерживает более 65k коннекшенов. Сейчас на сервере, где я работаю стоит 100к коннекшенов. А ето редхат 9.
А вообще етот параметр можно менять при перекомпиляции ядра как мне кажется, как ядро вы компильнете - так оно и поплывет:)))


Digitman   (2004-04-09 16:41:00) [51]


> nester ©   (09.04.04 16:35) [5]


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


Digitman   (2004-04-09 16:37:00) [52]


> Это же на каждый коннекшн будет выделяться память


память то ладно еще ... а вот максимального числа портов, которые могут быть открыты при каждой отдельной коннекции, с твоими миллионными аппетитами заведомо не хватит) ... нумерация же портов - от 1 до 65к .. из них вычти порты фиксированных сервисов в младжем 1к ... что у тебя остается ? шиш да маленько по сравнению с "миллионами")


nester   (2004-04-09 16:35:00) [53]

Теперь понял. :)))


Reindeer Moss Eater   (2004-04-09 16:28:00) [54]

Это же на каждый коннекшн будет выделяться память, вот интересно, она будет выделяться дефовскими мерками или сишными?

Он так и не понял, что хоть на VB пиши, но сокеты и память под них будет выделяться стеком протоколов.


nester   (2004-04-09 16:26:00) [55]

Угадал%)))
За что деньги платять то и делаемс:)))
Тогда такой вопрос, а с памятью как дела обстоять будут?
Это же на каждый коннекшн будет выделяться память, вот интересно, она будет выделяться дефовскими мерками или сишными?
А то если на каждый коннешкшен кил эдак по 50 - то никакой оперативы не хватит.
И еще вопрос такой тогда - как лучше написать, все через сервер или лучше директ коннекшинами когда возможно?


Digitman   (2004-04-09 16:21:00) [56]


> Коннекшенов будет ооооочень много, порядка милионов


никак новую "а-ля ICQ" сеть сотворяем ?)


Reindeer Moss Eater   (2004-04-09 16:19:00) [57]

Данными по сети обмениваются не сами программы написанные на С или Delphi.
Реальную работу выполняют модули стека протоколов которые написаны на С.
Программы лишь вызывают функци этих библиотек. Так что все будет одинаково. Примерно одинаково.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо