Форум: "Corba";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизКак избежать подвисания клиента при попытке сконнектиться? Найти похожие ветки
← →
Aleksandr © (2003-05-22 15:44) [0]Бывают ситуации, когда сервер МИДАС по какой-то системной причине не реагирует на попытку связи клиента. И тогда клиентская программа просто висит, ожидая этой реакции. Причем то, что она не умирает, очевидно из следующего - если сервер снять из задач, то после снятия клиент запустит новый экземпляр. А как-то избежать этого обработкой на клиенте можно?
← →
BorisUK © (2003-08-08 14:39) [1]Есть такая проблема в MIDAS... тоест у самого так же .. пока не придумал что делать! Просто добавлю... Еще бывали ситуации что по какойто причине сервер принимал определенное число запросов (например 10) и при 11 подвешивался... примерно так как написано выше... ИМХО может дело в памяти... очень похоже что пытается выделить память, но не может и ставит все в ожидание... Хотя в том то и дело что памяти на тот момент навалом... просто чтото не так отрабатывает....
Пришел послушать в общем :) Может что насоветуете...
← →
Dred2k © (2003-08-10 21:34) [2]По-ходу, тут дело в том, что сервак работает в одной нитке (главной для приложения). SingleThread модель, получается. Вот и ставит он все в очередь, т.к. занят обработкой запросов от других клиентов (в данном случае - довольно долгой). Клиенту никаких возвратов, событие - в очереди событий у приложения сервера.
Delphi4 вообще всегда генерит COM-объект сервака с моделью для одной нитки - главной. Проверено во всех вариантах. В D6 такого уже нет.
← →
Aleksandr © (2003-09-22 13:08) [3]Я вот сейчас по тому же поводу страдаю... У меня RemoteDatamodule multithread, apartment, ADOQuery, в локальной сети все прекрасно, все работает, но вот когда я перенес сервер данных на удаленный компьютер, началась такая песня, что плакать хочется. При выполнении запроса клиентская программа виснет с теми же симптомами, причем виснет она на самых разных местах - и когда выполняется SocketConnection.Connected:=true, и когда ClientDataSet.Open, и когда ClientDataSet.close, SocketConnection.Connected:=false, раз на раз не приходится... Как говорится, что-то неуловимо вызывает смутное желание застрелиться. Что делать, не представляю, проект уже 2 дня назад должен был сдать...
← →
Aleksandr © (2003-09-22 16:20) [4]Знаете, сложилось у меня тут одно впечатление. У меня в RemoteDataModule была одна внутренняя процедурка, делавшая PostMessage(Mainform.Handle..., то есть отправлявшая пользовательские сообщения с текстовыми (PChar) и числовыми lParam главной форме сервера (там они в листбокс врисовывались в качестве лога). Так вот, учитывая то, что ни повисания клиента, ни повисания сервера как программ при описанной выше проблеме не происходит, я попробовал убрать эту отсылку сообщений. И, тьфу-тьфу, пока не подвисает... Правда, что я истчо при этом сделал, так в настройках scktsrvr.exe Thread Cashe поставил 50 и TimeOut 30. Истчо бы научиться опознавать в программе, выполняется ли все же запрос через МИДАС или он уже повис...
← →
Aleksandr © (2003-09-22 19:22) [5]Гм... вообще фигня... У меня клиентское приложение матюгается, что Access Violation в модуле scktsrvr.exe. Я так понимаю, что это сообщение приходит с сервера... Млин, ну неужели никто не сталкивался с такими проблемами у МИДАС при плохом удаленном соединении?!
← →
iZEN © (2003-09-23 03:47) [6]А не проще ли коннектится на клиенте в отдельной нитке?
Создаём в клиентском приложении Thread; передаём параметры соединения; задаём метод(ы) обратного вызова (оповеститель готовности соединения, прерываеть по тайм-ауту, индикатор ожидания и т.д.); из приложения стартуем нить и ждём, пока нитка не закончит работу, выдав нам соединение или несоединение :( - все довольны (клиент видит работающее приложение, которое пытается соединиться, которое может реагировать на мышь).
← →
clickmaker © (2003-09-23 11:54) [7]А почему именно socket connection? Может DCOM попробовать?
← →
Aleksandr © (2003-09-23 12:51) [8]2 iZEN: Так не в том проблема, чтобы обрабатывать зависания, проблема в том, что сама работа через сокет идет неожиданно криво. Когда запросы проходят, то они выполняются со свистом, но почему-то при самом быстроходном канале каждый второй-третий запрос вывешивается до полного тайм-аута. То есть некорректно работает сама система, причем именно на том, для чего предназначена - на удаленном доступе (в локальной сети ни разу зависов не было).
2 clickmaker : Насколько я понял из описания, DCOM только для локальных сетей, а мне нужен удаленный сервер. Пытаюсь счас на WebConnection перейти, но что-то он молча пиликает при попытке сконнектиться, и усе.
← →
clickmaker © (2003-09-23 15:11) [9]> Aleksandr © (23.09.03 12:51) [8]
DCOM тоже можно заточить под веб. Есть, так называемые COM Internet Services (CIS), работающие под Internet Information Server"ом
Опять же, при использовании DCOM не нужны промежуточные тулзы, типа BSS
Впрочем, дело мастера...
← →
Aleksandr © (2003-09-23 15:49) [10]> DCOM тоже можно заточить под веб.
Гы, истчо бы я знал, как...
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c