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

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

Вопрос про TServerSocket [D5, D6, D7, Win95/98, WinME, Win2k, WinXP]


Страницы:   1 2

Интересующийся ©   (2006-02-07 05:13:00) 

Подскажите плиз!

Может кто уже сталкивался с подобным вопросом:
Сколько максимальное количество клиентов может обработать TServerSocket и по какой технологии.

Я используюя потоки, больше 10 неполучаю :(

P.S.
Работаю на машине где Cel 1200 и 512 памяти.


Digitman   (2006-02-09 10:48:00) [21]


> Всем устраивает, но у меня сервер под TThread заточен


В режиме stThreadBlocking компонент TServerSocket заточен именно под TThread.


> примерчик работы сервера при ServerType = stThreadBlocking


Borland Socket Server (scktsrvr.dpr) - в штатной поставке Делфи.


Интересующийся   (2006-02-09 10:45:00) [22]

> Чем не устроил вариант с ServerType = stThreadBlocking ?

Всем устраивает, но у меня сервер под TThread заточен.

Хотя если есть смысл отказаться от TThread и перейти на другой вариант, можно и сервер переделать!

P.S.
Если у кого есть примерчик работы сервера при ServerType = stThreadBlocking, может поделитесь?


Digitman   (2006-02-09 09:43:00) [23]


> работаю при неблокированном сокете, а многопоточность создаю
> при помощи TThread


Чем не устроил вариант с ServerType = stThreadBlocking ?


Интересующийся   (2006-02-09 09:37:00) [24]

> Что такое "запрос"?

Запрос - это один блок данных (пакет) получаемый сервером от клиента с указанием какой ресурс требуется клиенту и другой инфой посылаемой клиентом (IE, Oper ...) моему серверу.

> У тебя ошибки в программе.

Возможно и ошибка, но скорей всего не в программе, а в логике которую она реализует.

Алгоритм таков:
1. Обробатываю OnConectсервера и передаю инфу в поток с высоким приоритетом.
2. Поток определяетавторизацию клиента и наличние требуемого ресурса.
3. Если авторизация пройдена и ресурс существует определяем тип ресурса.
4. Если ресурс текстовыйотдаем его как текст с указанием служебной инфы (тип сервера, mime и т.д.), если ресурс - рисунок или файл посылаем через буферс размером 1024 (ставил 512и 256, результат неизменился).
5. Производится запись в лог (IP клиента, дата начала и конца работы с запросом,время работы, код ответа, требуемый ресурс).
6. Производим отключение клиента.

P.S.
При работе через буфер удается передать только те файлы у которых отсутствует пометка "Только для чтения".
Работа ведется через AssignFile().

Предпологаю, что ошибка может возникать при одновременном обращение к одному файлу, что на практике подтвердить пока к сожалению не смог.


Digitman   (2006-02-09 08:21:00) [25]


> загрузка одного процессора


Никакого отношения имеющееся ограничение числа коннектов к загрузке процессора (одного или нескольких - неважно) не имеет.


> иногда проходит 12-15 запросов.
> Пиковая нагрузка 18-20, после чего машина вешается


У тебя ошибки в программе.


> какие максимальные значения можно получить


Максимальные значения чего?
Что такое "запрос" ?


Интересующийся   (2006-02-09 05:25:00) [26]

Про технологию!

Я работаю при неблокированном сокете, а многопоточность создаю при помощи TThread.
Вся обрпботка выполняется в потоке.

Есть запись в лог (Текстовый файл), без нее никак!

Основной проблемой по тестовым наблюдениям является загрузка одного процессора.

При тестировании в логе по общему числу запросов получается, что иногда проходит 12-15 запросов.
Пиковая нагрузка 18-20, после чего машина вешается.

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


Интересующийся   (2006-02-09 05:12:00) [27]

piople ©   (07.02.06 11:33) [3]

> Все правильно, но в реестре есть ключ снимающий это ограничение :)

Хотелось бы узнать про этот "Золотой" ключик реетра, если можно :)
У меня XP Prof.

P.S.
При тестировании у меня выходило значение 12-15 запросов одновремменно, но там или часть инфы терялась или ядро системы наглухо вешалось.

Про сообщения о невозможносмти создать сокет и другие я неговорю! (:


Digitman   (2006-02-07 12:12:00) [28]

Да, это (еще одно и в дан.случае важное) ограничение я упустил из вида.


Ботвин Дмитрий   (2006-02-07 11:47:00) [29]

piople ©   (07.02.06 11:33) [3]

Согласен, но любая прикладная прога должна работать с установками "по умолчанию", иначе в комплект поставки программы будет входить "куча гемороя" на случай если у текущего пользователя прав на запись в реестр не хватит :-)))


piople   (2006-02-07 11:33:00) [30]


> Может, у него скорее всего ОС не серверная стоит на том
> компе, куда он подключается, а не серверные ОС допускают
> макс. кол-во подключений не больше 10 :-)))

Все правильно, но в реестре есть ключ снимающий это ограничение :)


Ботвин Дмитрий   (2006-02-07 11:30:00) [31]

Digitman ©   (07.02.06 08:18) [1]

>Быть того не может...

Может, у него скорее всего ОС не серверная стоит на том компе, куда он подключается, а не серверные ОС допускают макс. кол-во подключений не больше 10 :-)))


Digitman   (2006-02-07 08:18:00) [32]


> Сколько максимальное количество клиентов может обработать
> TServerSocket


Это зависит от диапазона значений, которые может хранить переменная Integer-типа и от наличия ряда свободных ресурсов (процесса и системы в целом).


> по какой технологии


Что подразумевается под "технологией" ?


> больше 10 неполучаю


Быть того не может...


Страницы:   1 2

Наверх

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