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

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

Кто юзал Indy при большом к-ве клиентов на сервере? [D6, D7, NT4, Win2k, WinXP]


alienserg ©   (2004-06-14 02:19:00) 

Какое количество тредов/connections допустимо на сервере?
Авторы Indy говорят, что поскольку Indy сокеты работают в blocking mode, то неактивный тред практически не потребляет ресурсов и важно в основном количество активно работающих тредов.
У кого есть какой опыт на этот счет?
Есть ли выигрыш в этом смысле от перехода с Indy 9, который не может работать с fibers, к Indy 10, который вроде может?
Аппликация, которую делаю - что-то типа ICQ, т.е. к серверу коннектятся и в основном сокет простаивает, изредка получая сообщения от сервера о прибывших/ушедших клиентах, а переговоры идут напрямую peer2peer.


alienserg   (2004-06-14 16:28:00) [1]

alexvir   (14.06.04 09:34) [3]
Инди показался перегруженным ненужными функциями.
То, что в Indy масса всего, это не есть недостаток. Ненужное тебе может вполне оказаться нужным другому. Indy изначально заточен под многотредовось и использует blocking mode. Indy по любому производительнее чем стандартный TTcpServer. В конференции приводили случаи, когда он легко держит 500 активных(по которым идет активная работа) коннектов.

Erik1   (14.06.04 10:42) [4]
Тоесть будеш делать свой механизм Super Server? Когда имеется пул тредов, а ты переключаеш контенты для выполнения запросов клиентов?
Нет, Indy не может этого делать вроде. 1 коннект - 1 тред. Максимум, что может Indy - не уничтожать закрытые треды, а хранить их в ThreadManager и если приходит новый юзер, то запрашивать тред у ThreadManager и только если там нет свободных, то создавать заново.

Денис   (14.06.04 09:01) [2]
В стандартной поставке Indy есть куча примеров, в том числе и по SMTP. Их вполне достаточно для того, чтобы понять, как все работает. А не отвечают тебе потому, что твой вопрос очень сумбурный. Indy SMTP наследуется от Indy TCP:
TIdSMTPServer = class(TIdTCPServer)
А TCP через сокеты только и работает. Зачем ты пытаешься явно использовать сокеты? И вообще непонятно, что ты пытаешься использовать. Всегда указывай какие конкретные компоненты ты используешь, а не просто "сокс".


Erik1   (2004-06-14 10:42:00) [2]

Тоесть будеш делать свой механизм Super Server? Когда имеется пул тредов, а ты переключаеш контенты для выполнения запросов клиентов? В любом случае коннект держать придется! А это уже отделная нить. Если у тебя неболее 100 конектов одновремено, то незанимайся ерундой, постав Indy и все у тебя будет работать. У меня 1000 тредов работатла довольно сностно, но это была не сетевая задача.
 Если количество соеденений очень большое, то можеш подумать о UDP.


alexvir   (2004-06-14 09:34:00) [3]

Похожая проблема. С инди решил не работать и остановился на стандартном TTcpServer. Инди показался перегруженным ненужными функциями.
Один мой знакомый (уважаемый человек, хотя не программист), говорит, что больше 40 коннектов сервер не вытянет... в виду архитектуры винды (имеется в виду именно нити), мол они существенно начнут тормозить работу системы.
В общем я с ним не согласен. Все подтверждается на практике...


Денис   (2004-06-14 09:01:00) [4]

Привет! Сорри на твой вопрос ответа не знаю, а ты мне не подскажешь? буду очень рад. а то такое ощущение, что ответа не занют даже разработчики Инди     http://www.delphimaster.ru/cgi-bin/forum.pl?id=1087152399&n=4


alienserg   (2004-06-14 02:20:00) [5]

Я имею ввиду TIdTcpServer и connections незакрывающиеся длительное время.


Наверх

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