Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Медленная работа через ECP / 9 сообщений из 9, страница 1 из 1
04.08.2017, 15:06
    #39500348
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Имеется некая БД, которая крутится под Cache 2009.
При доступе к этой БД через ECP все происходит в разы, если не в десятки раз, медленнее, чем при обычном локальном доступе.
Уже вроде все проверили. Сеть работает нормально, файлы копируются без проблем.
Приложение, написанное на С++, взаимодействует с БД одинаковым образом.
Что еще может так замедлять доступ через ECP?

Виктор
...
Рейтинг: 0 / 0
04.08.2017, 15:22
    #39500352
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Hisbreht Victor,

Ну как бы логично, что работа через ECP медленнее, причем намного, по сравнению с доступом к локальной базе. Вопрос в том, что именно вы делаете с ECP? Некоторые операции, например, $incremet, lock (соответственно, вставка или апдейт строк таблиц) вызывают синхронизацию данных при каждой операции, что кардинально замедляет скорость. Если просто чтение, то тут более-менее должно быть нормально, данные будут кэшироваться и в итоге читаться из локального кэша.
Еще зависит от версии, вроде бы в новых версиях работу с ECP обещали сделать получше.
...
Рейтинг: 0 / 0
04.08.2017, 15:23
    #39500355
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Hisbreht Victor,

запись без инкрементов и блокировок будет тоже достаточно быстрой. Если все-таки инкремент необходим, попробуйте заменить его $sequence
...
Рейтинг: 0 / 0
04.08.2017, 15:35
    #39500359
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Замедление, конечно, было ожидаемо, но не такое.

Блок А.Н.Hisbreht Victor,

запись без инкрементов и блокировок будет тоже достаточно быстрой. Если все-таки инкремент необходим, попробуйте заменить его $sequence

Справка по 2009 $sequence не находит.
Это получается надо на новую версию переходить?
...
Рейтинг: 0 / 0
04.08.2017, 16:49
    #39500404
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Наиболее частые ошибки конфигурирования ECP:
Мощный (по кол-ву ядер) сервер данных (СБД), слабые серверы приложений СП. Должно быть наоборот: приложения работают на СП.

Недостаточно большой кэш данных на СП.

Медленная сеть между СП и СБД. Должна быть >= 1000BaseT.

Парадокс: менее 4 СП. Представитель ISC откровенно признался мне, что в таких случаях лучше применить вертикальное масштабирование. Существует тенденция отказа от ECP, когда технически возможно купить сервер, который сможет стать СБД+СП "в одном флаконе".
Однако вряд ли малое количество СП снижает скорость работы на отдельно взятом СП; это лишь архитектурный изъян.

Наиболее частые ошибки программирования в среде ECP:

Использование full-сканов; если без них никак, то код, их выполняющий, должен запускаться удалённо на СБД или вообще на отдельном сервере (Reporting Async Mirroring Member).

Использование bit-map индексов; неактуально, начиная с 2017.1.

Использование "нормальных" глобалов в тех случаях, когда можно использовать временные или приватные.
...
Рейтинг: 0 / 0
04.08.2017, 20:40
    #39500529
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Hisbreht Victor,

в свое время (кстати, на 2009) если нужно было залить много данных для ECP, то разрабатывали правила генерации ID, чтобы они не повторились на разных серверах, создавали данные локально, а затем их просто сливали через merge. Решает проблему кардинально :-) К тому же, логика $sequence не такая уж сложная, если хотите, можно ее самим реализовать, и даже подзаточить именно под ваши условия.
...
Рейтинг: 0 / 0
04.08.2017, 22:25
    #39500551
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Hisbreht Victor,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 #define sequence(%Ref) $select($e($name(%Ref))="^":$$sequence($name(%Ref)),1:$i(%Ref))
 
 w !,$$$sequence(^log)
 w !,$$$sequence(^log(1))
 s y=1
 w !,$$$sequence(^log(y))
 w !,$$$sequence(test)
 
 
sequence(refName) public
{
	q:$e(refName)'="^" $i(@refName)
	if $g(^||sequence(refName,"last"))=$g(^||sequence(refName,"max"))
	{
		s ^||sequence(refName,"step")=$g(^||sequence(refName,"step"),.5)*2
		s ^||sequence(refName,"max")=$i(@refName,^||sequence(refName,"step"))
		s ^||sequence(refName,"last")=^||sequence(refName,"max")-^||sequence(refName,"step")
	}
	q $i(^||sequence(refName,"last"))	
}


Вот как-то так. Это демка, в рабочей эксплуатации не использовал. Если понравится, вызов программы нужно будет переделать, но суть, я думаю, ясна.
...
Рейтинг: 0 / 0
07.08.2017, 18:56
    #39501484
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Виктор, я бы порекомендовал Вам в первую очередь последить во время передачи данных за таблицей блокировок на одном и другом Cache-сервере. Если их аномально много и они подолгу висят - это уже будет повод к размышлению, почему так происходит и что можно изменить.
Ровно 10 лет назад, в сентябре 2007 года (у нас тогда появился первый клиент, для которого пришлось разрабатывать решение с использованием ECP), я нашел устойчиво воспроизводимый баг в реализации ECP, приводящий к неустранимой блокировке на одном из серверов. Баг был подтвержден в штаб-квартире и исправлен. Но и в архитектуру нашего решения тоже пришлось внести изменения с учетом этих блокировок.
...
Рейтинг: 0 / 0
18.09.2017, 22:24
    #39522969
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через ECP
Всем спасибо за советы. Кое что почерпнул для себя.
$Sequence действительно дает ускорение, хотя и не всегда приемлемо (в некоторых случаях "дыры" в нумерации, которые она вроде как может создавать, неприемлемы).
С блокировками никаких проблем. Все по делу.

И что интересно, одна из причин тормозов оказалась неожиданной.

Дело было в том, что другое приложение подключалось через ECP к другой базе но на том же компьютере. При этом на клиенте создавалась новая запись для ECP сервера. В результате получалось два канала доступа к одному и тому же компьютеру.
После перевода удаленных БД на один ECP сервер и удаления лишней записи в "ECP настройках" скорость заметно выросла.

Интересно, это у меня фазы луны так совпали, или это имеет фундаментальное обоснование?
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Медленная работа через ECP / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]