|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос по MIDAS приложению
Ситуация:
Имеется трехзвенное приложение доступа к БД (вопрос НЕ про БД). Клиентов много - подключаются к серверу приложений на удаленной машине (в пределах локалки). Подключение через сокет-сервер (стандартный scktsrvr.exe). На стороне клиента: TSocketConnection На сервере приложений: Remote Data Module (как обычно везде в примерах). При подключении пользователя производится запрос в БД - извлекаются некоторые данные (НЕ таблица) - и прям в функции подключения возвращаются пользователю. -- upd. Аналогичная проблема и без обращения к БД вообще - проверено. Проблема: При одновременном подключении ДЕСЯТОГО (именно ДЕСЯТОГО - проверено) пользователя - сервер приложений подвисает - ДО вызова процедуры подключения в сервере приложений. Первые ДЕВЯТЬ пользователей при этом ничего кроме подключения не делают. Если сервер приложений перегрузить - то первые девять пользователей отключатся - а этот десятый - автоматически подключится и будет работать как ни в чем не бывало. В момент зависания - в списке scktsrvr.exe (есть там список - кто через него подключен) указаны ВСЕ 10 пользователей. Хотя бы посоветуйте - где можно копать?? UPD: Есть подозрение, что проблема в сокет сервере .. там было установлено "10 подключений"... но - переставил на 100 - а все равно на 10-м виснет |
#2
|
|||
|
|||
Была похожая проблема с тем же составом (scktsrvr.exe, midas.dll и пр.).
Но только похожая: после 35-коннекта к серверу-приложению все коннекты сбрасывались. Проблему удалось решить переустановкой ОС сервера и, насколько помню, был установлен какой-то другой Win сервер. Сейчас уже больше полугода все 52 коннекта работают без сбоев (жалоб нет). Хотя, конечно, в каждом конкретном случае может быть чего угодно. На штатный борландовский scktsrvr.exe грешить не приходится - работает нормально. А "10 подключений" - это не подключения, а Thread Caching, что само по себе не является количеством подключений. Если сервер приложение - это COM сервер, то при создании экземпляра сервера (TComponentFactory.Create) лучше применять значение "ciSingleInstance", тогда сервер работает намного стабильнее (хотя, конечно, это не всегда приемлемо). Не забывайте делать резервные копии |