![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про TServerSocket [D5, D6, D7, Win95/98, WinME, Win2k, WinXP]
Интересующийся © (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 неполучаю
Быть того не может...