Форум » Для флейма » ADS Remote тормоза по TCP/IP » Ответить

ADS Remote тормоза по TCP/IP

Haz: Поднят VPN и через него получили виртуальную сеть, на одном из компов которой установлен сервер ADS и базы На другом компе этой сети установлена клиентская программа. Параметры подключения прописаны в ADS.INI В итоге клиент конектится к серверу , но навигация по бровсам жуть как тормозит. Пробовал в ini указать принудительно подключаться через UDP/IP - в результате те же яйца , только в профиль , тормозит по прежнему. В бренмауре порты и протоколы разрешены , TCPView при любом протоколе указанном в ini упорно показывает что пакеты идут только через TCP/IP. Подробнее тут, указывая UDP пакеты идут по TCP, но если в брендмауре запретить UDP - то клиент перестает конектиться. Никак не пойму что за шляпа с этим ADS в протоколах По идее UDP пошустрее должен быть. Дальше еще интереснее, если клиента цепануть к базам через local server то тормозов нет, реально рагница раз в 10 по быстроте реакции. Может проблема в том что ADS сервер поднят на обычной Win7 , и у нее есть какие нибудь ограничалки на TCP ? Имеет ли смысл там поставить серверную винду ? Как первопричину тормозов вижу еще и хреновый интернет канал на компе с ADS. SpeedTest кажет 15 мегабит, на компе с ADS и 10 мегабит на компе клиента, но тупое копирование на расшаренную папку между компом клиента и компом ADS показывает в фаре скорость 70 - 300кб/с что в принципе мало для 15 мегабит. Коллеги , может есть у кого мысли в каком порядке бороться с тормозом ? Начинать в серверной ОС или не стоит, заняться каналом интернет и пр. пока склоняюсь к каналу, по гложат сомнения и по поводу Win7 т.к. клиентов будет штук 20 PS. VPN поднят через OpenVPN на VDS в 100 МВ/С, в другой компании аналогичная связка отлично работает , но там и win server и канал шире.

Ответов - 36, стр: 1 2 All

Dima: Надо пробовать варианты Игорь которые ты выше и изложил.

Haz: Dima пишет: Надо пробовать варианты Игорь которые ты выше и изложил. Дим, согласен. Все есть в планах, определяю очередность т.к. и то и то это время . Плюс еще один вопрос был, можно ли заставить ADS работать по UDP. Вдруг у кого получилось, в справке написано поддерживается, TCPView говорит хрен. Такое ощущение , что тормозит именно TCP с проверкой пакетов и передачей служебной информации.

PSP: Может пригодится: https://interface31.ru/tech_it/2017/04/pochemu-tormozit-openvpn-razmer-buferov-priema-i-otpravki.html


PSP: Еще можно посмотреть в сторону MTU и фрагментации пакетов. Пакеты перед отправкой в канал шифруются и их размер начинает превосходить MTU. Пакеты фрагментируются при передаче. Принимающая сторона не может их расшифровать, т.к. они неполные. И пока они не соберутся в кучу на другой стороне, возникают задержки, ретрансляции и т.д. Народ увеличивает MTU до нестандртных значений (к примеру 2000) и это помогает.

Dima: Haz Попробуй такую установку AdsRightsCheck( .F. )

PSP: Про UDP: я как-то не совсем представляю, как можно с БД работать по этому протоколу. В нём не гарантируется доставка пакетов. Т.е., клиент что-то запросил, а оно может либо не дойти до сервера, либо ответ сервера исчезнет полностью или частично.

Dima: PSP https://devzone.advantagedatabase.com/dz/webhelp/Advantage9.0/server1/ads_ini_file_support.htm

PSP: Там кроме этого USE_UDP_IP This setting controls the communication protocol between the client and Advantage Database Server. The setting specified here will be used only if the connect request from the client did not specify a communication type. The client-specified connection parameter overrides this setting if they are given. Setting this value to 1 will force the client to use the UDP/IP protocol when communicating with the server. ничего нет. Вобщем-то, UDP можно использовать только в локальных сетях. С высокой надежностью. Тем более, что маршрутизаторы обычно UDP-пакеты отбрасывают, если они из других сетей.

Haz: Все перепробовал. MTU , размер буфера приема передачи у OpenVpn , отключение шифрование и компресии и тд. Добиться быстроты в бровсе не удалось, шевелится еле еле . пинги от клиета до сервера VPN 15 - 20 милисек , от двух точек в сумме примерно 30 , то есть вроде как гарантированные 10 мегабит есть. Не самый лучший канал, но и не полный треш. Пока не знаю как побороть , может это у ADS кривая реализация с пакетами , на 100 мегабитном канале этого не замечал )

PSP: Просто возьми, к примеру, и временно подними серверную часть на другом компе (другой провайдер, к примеру), но с теми же настройками, а клиента оставь того же. Потом наоборот: клиент на другом компе, а сервер прежний. Думаю, что-то прояснится.

Dima: Haz Advantage Data Architect так же ведет себя тормознуто ?

Haz: Dima пишет: Advantage Data Architect так же ведет себя тормознуто ? да , есть немного , но не так как программа

Haz: PSP пишет: Просто возьми, к примеру, и временно подними серверную часть на другом компе делал почти так . Повторюсь о том как реализовано. На VDS под линукс установлен OpenVPN сервер . там канал 100 МВ На двух клиентских машинах ( в разных частях города ) поставлен OpenVPN клиент, на одном из клиентов установлен ADS сервер на другом ADS клиент. Таким образом оба клиента VPN сети прекрасно видят друг друга и ADS клиент успешно цепляется к ADS серверу Пинг от любого клиента к OpenVpn серверу примерно 15- 20 мс , соответственно между OpenVpn клиентами получаем примерно 30-35 . что приемлемо . Потери пакетов есть но редко. А вот тормоза в TSBrowse - жуть Что пробовал: 1) ставил VPN клиентов и дома и на работе и еще где - тормозит 2) буфер приема передвчи OpenVpn увеличил до с 8к до 512к ( согласно рекомендациям из форумов ) - тормозит 3) MTU увеличил чуть больше размера пакета - без разницы 4) ставил оба VPN клиента в одной сети ( при этом они общались через OpenVpn сервер ) - тормозит 5) в ADS.INI перепробовал все - тормоза как были так и есть 6) компресиию и шифрование VPN отключал - не влияет Что работает: 1) Отлично работает по RDP между VPN клиентами . Но это W7 без лицензии терминалов и соответственно только одно подключение. Не знаю сколько клиентов может потянуть обычный комп ( не серверное железо) 2) Отлично работает ADS LOCAL сервер ( тк всеже в одной сети оба клиента ) пока остался на нем , до 5 рабочих мест терпит, потом надо думать вот эти два варианта пока и рассматриваю. может что еще найду

Pasha: Haz пишет: А вот тормоза в TSBrowse - жуть Попробуйте забить значения для :bKeyNo, :bKeyCount, :bLogicLen пустышками, вроде: oB:bKeyNo := {|| 1} что-то изменится ?

Haz: Pasha пишет: Попробуйте забить значения для :bKeyNo, :bKeyCount, :bLogicLen пустышками, вроде: oB:bKeyNo := {|| 1} Попробую завтра на работе. Активные индексы использую редко. Не уверен что сработает. По любому спасибо за идею, поэксперементирую. Tsbrowse при прорисовке каждую запись по несколько раз дёргает, замечал ранее. Все на потом откладывал поиск ответа на вопрос почему. Может как раз эти блоки дурят.

SergKis: Haz пишет Tsbrowse при прорисовке каждую запись по несколько раз дёргает Это так, думаю исторически получилось (не в сети быстро по дбф крутит). У себя сделал массив (= :nRowCount()) для RecNo отображаемых записей, что бы в дальнейшем при повторных пробегах не рисовать, ..., но не доделал

Haz: SergKis пишет: У себя сделал массив (= :nRowCount()) для RecNo Аналогично. Только пытался через hash, хотя на таком количестве строк это лишние. Потом бросил по причине творческого кризиса - не сообразил как ловить изменения которые кто то по сети в этих записях сделал. Получается надо не массив о саму прорисовку ковырять на предмет лишних дерганий

SergKis: Haz пишет не сообразил как ловить изменения которые кто то по сети в этих записях сделал. Делаю кнопку <Refresh> или по timer (раз в nn сек.) refresh - достаточно по мну. Получается надо не массив о саму прорисовку ковырять на предмет лишних дерганий Мне показалось, заполнять массив :nRowCount() x :nColCount() и отображать по нему, перспективнее. Отображение по массиву пусть бегает, обращений к серверу нет, до след. refresh(.T.) или скролинга. Но ... "цигель-цигель ай люю" (c)

Haz: SergKis пишет: .. "цигель-цигель ай люю" (c) Есть над чем подумать. К примеру в ads есть тип поля время модификации записи. Можно держать в том же массиве и проверять по нему

SergKis: Haz пишет К примеру в ads есть тип поля время модификации записи В letodb имею в о всех таблицах оное. Практикую отбор таблиц в localhost temp (можно mem:) в начале работы, потом (практически перед каждым окном) делаю по списку нужных <table>_Select() по времени модификации от предыдущей. все быстро. TsBrowse работает на lokalhost, сам понимаешь как. Все это, конечно, борьба с TsBrowse скоростью. Это, в целом, несколько усложняет код, но не так напрягает, как ситуевина у тебя выше.



полная версия страницы