Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > WinSock Accept Количество одновременно открытых по


Автор: lollollollol 22.9.2014, 10:50
Известно что с помощью winsock можно октрыть примерно 5000 портов.

Пишется сервер, открыто будет 1000 портов.

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


Вопрос, получается что винда способно работать, допустим сразу с 64 000 активными соединениями, или лимит 5 000 это именно на активные соединения, а не на порты?

Автор: kami 22.9.2014, 18:07
Цитата(lollollollol @  22.9.2014,  10:50 Найти цитируемый пост)
Известно что с помощью winsock можно октрыть примерно 5000 портов.

имхо, не совсем корректно.
Я нашел информацию о 4000 установленных соединений, например http://msdn.microsoft.com/ru-ru/library/dd335942.aspx
А http://forum.vingrad.ru/index.php?showtopic=276064&view=findpost&p=1999330 Mikel говорит о спокойно устанавливаемых 8000 соединений.

Зачем открывать такое огромное количество портов? Или речь идет про соединения?
Сегодня ночером ради интереса попробую наваять тестовые программки

Автор: lollollollol 22.9.2014, 19:39
приложение сервер, к каждому клиенту один порт. Программа клиент устанавливает 64 одновременных соединения.

Вот мне нужно рассчитать сколько клиентов может обработать один сервер на windows .


например 100 клиентов это 6400 активнх соединений, но этого мало. Вот нужно увидеть "потолок". 



Буду очень признателен за информацию по вопросу

Автор: kami 22.9.2014, 20:54
Цитата(lollollollol @  22.9.2014,  19:39 Найти цитируемый пост)
приложение сервер, к каждому клиенту один порт.

Расточительно. Пожалейте хотя бы сисадмина. Что-то неладное у вас или с архитектурой, или с протоколом сетевого обмена. На однотипные соединения вполне достаточно одного порта. Порт 80 - тому наглядный пример.

Если по сути вопроса:
Простой тест показал, что моя система (Win7, 2Gb RAM) держит 4300 исходящих (ClientSocket) + 4300 входящих (ServerSocket) соединений, все - на одном порту (для теста взял 4558), дальше просто не стал нагружать - и без того всё затормозилось до невозможности. По всем соединениям велся незначительный обмен, выглядело это как-то так:
Код

procedure TForm8.tmrMaxActiveConnectionsTimer(Sender: TObject);
var
  i: Integer;
  tmpClient: TDataTransferClient;
begin
  for i := 0 to 50 do // наращиваем группировку соединений
    begin
      tmpClient := TDataTransferClient.Create(nil);
      tmpClient.TCPPort := MaxConnPort;
      tmpClient.IP := '127.0.0.1';
      tmpClient.Active := True;
      FClientList.Add(tmpClient);
    end;

  for i := 0 to FClientList.Count - 1 do // отправляем в них данные
    FClientList[i].SendData('123');
end;

На самом деле - можно было и больше, но 100% загрузка процессора как-то поднапрягла (больше всего загружал его Outpost, но тем не менее).

Провести реальный тест не смогу, извините - никто не выделит мне серверную платформу для подобных экспериментов smile

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

Добавлено через 7 минут и 36 секунд
Цитата(kami @  22.9.2014,  20:54 Найти цитируемый пост)
моя система ... держит

Имхо, если оставлять всё как есть - каждому по порту и куче соединений, то всё зависит от мощи сервера (аппаратная часть) и вычислительной нагрузки, которой "запряжет" его сервер (программная часть).

Конечные цифры даст только эксперимент с реальным обменом.

Автор: lollollollol 23.9.2014, 06:46
спасибо, буду тесты проводить как вернусь к работе (наверно же завтра), о результатах отпишусь

Автор: kami 23.9.2014, 07:45
Цитата(lollollollol @  23.9.2014,  06:46 Найти цитируемый пост)
буду тесты проводить

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

Автор: lollollollol 23.9.2014, 14:46
это мои причуды smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)