|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Hi,All! Экспериментировал тут с CSP. Возникли вопросы: Кто создает %session и на основании чего? При попадании в метод OnPage она уже существует. Подозреваю, что если с клиента кукес не приплыл, то создается новая сессия. Если приплыл, то на основании кукеса происходит поиск в базе данных существующей сессии. Можно ли этим процессом управлять? Например, я не хочу, чтобы автоматом создавались сессии. Иначе, рано или поздно она выдает ошибку, что не может выделить лицензии и привет. У меня в запросе присутствует собственный идентификатор сессии. Как управлять созданием сессий вручную (отключить стандартный механизм)? Каков вообще механизм лицензирования в CSP? Как происходит выбор процессов для обработки запросов в сессиях? В каких случаях используется уже запущенный процесс, а в каких случаях стартуется новый? Как сделать так, чтобы было 100 сессий и их обслуживали 10 процессов? Сколько лицензий это потребует? Что будет, если по одной из сессий приходит запрос, а эти 10 процессов уже заняты обслуживанием запросов по другим сессиям? Можно ли сделать постоянное подключение по HTTP 1.1? Ибо каждый раз подключаться, а потом рвать соединение - ужасно медленно. Более 20 запросов в секунду обработать ну никак не получается. Можно ли как-то обойти апач (напрямую к Cache подключаться)? Ибо есть подозрение, что основная часть тормозов по вине апача, т.к. нет смысла гонять пакеты через него. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2007, 18:39 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Dmitry V. Liseev Более 20 запросов в секунду обработать ну никак не получается. Можно ли как-то обойти апач (напрямую к Cache подключаться)? Ибо есть подозрение, что основная часть тормозов по вине апача, т.к. нет смысла гонять пакеты через него. А это обязательно через CSP делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2007, 11:00 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Объект %session создается автоматически csp демоном. Кукисы можно отключить в редакторе конфигурации->CSP->Приложения->Использовать Cookies для сеанса. Количество процессов обслуживающий csp запросы не обязательно совпадает с количеством подключений. IMXO По поводу использования лицензий в данном контексте (ссылку не нашел дам текст) Bill McCormick Механизм работы лицензий с CSP Недавно в новостной конференции InterSystems обсуждались проблемы с лицензионной политикой при использовании технологии CSP (Cache Server Pages). После длительных дебатов, вопросов и ответов очень интересное письмо написал Бил Маккормик (Bill McCormick, Web/Objects Support Manager, InterSystems Corporation), в котором подытожил все проблемы. Приводим перевод в некотором сокращении, думаем, что рекомендации Била будут полезны, так как в документации пока на этот счет очень мало советов. Начнем с начала. Лицензирование CSP отличается от лицензирования других подключений к Cache. Если мы устанавливаем соединение с ODBC, JDBC, Java, ActiveX, Telnet, любой тип соединения, мы получаем IP адрес клиента, передаем его серверу и связываем его с лицензией. Мы позволяем организовать до 12 таких соединений на одного клиента. Все эти соединения указанных типов используют только ОДНУ лицензию (одно лицензионное число). Вплоть до 5 версии Cache механизм CSP работал совсем по другим правилам. CSP не разделял лицензию с другими типами соединений и не мог использовать одну и ту же лицензию с несколькими сессиями CSP. %CSP.Session.Login() все это изменил. Вы можете теперь связать ВСЕ типы соединений Cache от одного клиента под одну единицу лицензии при условии использования Вами нескольких программных интерфейсов. Это общие сведения, а теперь рассмотрим конкретно CSP. Лицензия CSP связана с браузером на машине клиента в течение действия Сессии. Когда бы не создавалась новая Сессия, сразу отсчитывается одно лицензионное число и закрепляется за новой Сессией. Когда Сессия заканчивается по времени ожидания или закрывается, механизм CSP сообщает Менеджеру Лицензий, что одна лицензия должна быть освобождена, основываясь на правилах перида задержки (grace period). Об этом немного позже. То, что требуется знать о Сессиях. Сессии поддерживаются через куки (cookies) по умолчанию или через "tokens", когда куки выключены. Каждый раз, когда браузер устанавливает соединение без передачи этих двух параметров, будет отсчитана новая лицензия, независимо от того, что пользователь уже был зарегистрирован в другом окне. Далее общие соображения, как избежать этого (потери нескольких лицензий на одном пользователе). Фреймы - если вы загрузили страницу HTML с frameset, в котором имеется 3 targets, являющихся страницами CSP - все эти окна (target windows) заберут по отдельной лицензии. Все они будут вызваны поочередно и куки будут связаны с последним вызовом. Но первые два окна тоже захватят 2 лицензионых числа, которые не будут использоваться, а будут сиротливо ожидать, когда истечет установленное время ожидания для их Сессии. Ответ для такого случая - делайте frameset только в странице CSP... или используйте первую страницу на входе в приложение без фреймов. Рассуждения о браузерах. Netscape/Mozilla формируют единое пространство для куки (for cookies), независимо от того, как открывался браузер. Это означает, что на ПК с таким браузером Вы не сможете открыть более одной Сессии - и это хорошо. Если вы используете команду js open() или CTRL-N, куки будут переданы в порожденное окно (child window). Если Вы откроете новое окно с иконки Internet Explorer, в этом случае куки не будут переданы (не будут использоваться из уже открытого окна) и при запуске новой страницы CSP будет забрана одна Лицензия.. Порт 1972 - Не используйте Studio "View Web Page" (встроенный Web-сервер)!!! Суперсервер не работает с правилами, установленными для лицензий CSP. Каждый запрос к странице CSP будет забирать лицензию. Не используйте этот порт или исправьте проект, чтобы использовать действительный Web сервер, но не порт 1972. Начиная с версии Cache 5.0.1 это является основным требованием. Еще несколько общих пожеланий. Учите пользователей - Не закрывайте окно браузера - вы потеряете Сессию. Научите пользователей вместо зарытия окна нажимать клавишу выхода, которая вызовет функцию закрытия Сессии %Session.End=1. (прим.перев. - в своем приложении мы кроме кнопки выхода из приложения на всякий случай повесили функцию закрытия Сессии и на событие "закрытие окна" - некоторых пользователей учить - себе дороже...) ПОЛЬЗУЙТЕСЬ %session.Login()!!!!! В своем приложении заставляйте пользователя регистрироваться. И свяжите свою регистрацию с этим функционалом. ВСЕ ваши проблемы уйдут прочь. Пользователь закрыл окно? Ну и что? Когда он снова будет регистрироваться, мы свяжем Сессию с этой же Лицензией. Пользователь запустил приложение еще раз в другом окне? Прекрасно, мы объединим эти соединения под одну Лицензию. Пользователи используют сразу Java и CSP и ODBC? Отлично, мы объединим все эти коннекты... Забыл совсем про период задержки (grace period) порассуждать.... В Менеджере лицензий мы запоминаем время старта Сессии. Когда механизм Сессий сообщает, что сессия закрыта, происходят некоторые дополнительные проверки в менеджере Лицензий... Правило такое: Лицензия не может быть освобождена (счетчик пользователей уменьшен на единицу) ранее, чем через 5 минут после закрытия Сессии. И также Лицензия не может быть освобождена ранее, чем через 10 минут после создания Сессии. Простая таблица: в первой колонке, сколько времени (минуты) Сессия проработала, во второй - время, на которое была захвачена Лицензия. 2 10 4 10 5 10 7 12 14 19 Это сделано для предотвращения возможности использовать CSP с малым количеством лицензий, как у его прародителя Weblink. И еще, я предлагаю устанавливать невероятно короткий период закрытия сессии по умолчанию - 30 секунд или менее. А чтобы предотвратить потерю данных при использовании гиперсобытий, использовать на странице регистрации пользователя %session.Login() и переназначение AppTimeout в значение, необходимое для работы конкретной задачи или конкретного пользователя. -- Bill McCormick Web/Objects Support Manager InterSystems Corporation --- А в целом присоденияюсь к предыдущему оратору - такое "ТЗ" обязательно делать через CSP ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2007, 11:15 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Hi! Sergei Obrastsov А это обязательно через CSP делать? Задача простая: с клиента отправить на сервер пакет данных достаточно сложной структуры (допустим, XML). На сервере пакет надо отпарсить, выполнить нужные операции, сформировать для клиента ответ достаточно сложной структуры (пусть тоже XML) и отправить клиенту. Клиентом является не браузер. Обычный толстый клиент, написанный на ЯВУ. Через что делать? В принципе, на Cache можно написать свой TCP сервер. Это именно то, что надо для данной задачи. Пропадает необходимость гонять пакеты поверх протокола HTTP и прочие накладные расходы, связанные с Apache. Проблема в том, что на каждое такое соединение Cache забирает отдельную лицензию. А с каждой рабочей станции может быть установлено в среднем 5 независимых соединений (у юзера несколько приложений, причем многопоточных). Хотелось бы, чтобы лицензию забирала рабочая станция, если она установила хотя-бы одно соединение, и эта лицензия могла использоваться разумным числом соединений с нее (примерно до 10). ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2007, 20:40 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Dmitry V. Liseev] >>Через что делать? В принципе, на Cache можно написать свой TCP сервер. Это именно то, что надо для данной задачи. Пропадает необходимость гонять пакеты поверх протокола HTTP и прочие накладные расходы, связанные с Apache. Можно - с лицензией придётся разбираться самому >>Проблема в том, что на каждое такое соединение Cache забирает отдельную лицензию. А с каждой рабочей станции может быть установлено в среднем 5 независимых соединений (у юзера несколько приложений, причем многопоточных). Хотелось бы, чтобы лицензию забирала рабочая станция, если она установила хотя-бы одно соединение, и эта лицензия могла использоваться разумным числом соединений с нее (примерно до 10). ____________________________ в тексте, что я привел, да и в редакторе кофигурации разрешается до 12-ти соединений для одной лицензии. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2007, 17:33 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Кстати для собственного TCP сервера.... достаточно форкать JOB с прослушкой порта для конкретного клиента - в нем логиниться через команду выше - и обслуживать уже по тому протоколу какой хочеться. По крайней мере мы так привязываем фоновые задачи к клиенту ... вроде работает. Попробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2007, 17:36 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Скажите, а как будут потребляться лицензии при запросах одного сервера каше к другому посредством %Net.HttpRequest? Я так понимаю, сессия каждый раз будет создаваться заново, каждый раз будет создаваться и разрываться соединение (которое держит лицензию еще 5-10 минут) В результате лицензии каше будут съедены в момент? И поможет ли в этом %session.Login ? ведь число соединений будет огромным? Как можно победить пожирание лицензий в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2007, 11:26 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
>Это сделано для предотвращения возможности использовать CSP с малым количеством >лицензий, как у его прародителя Weblink. Данная технология поставляется с Cache. Попробуйте. Там на один коннект можно повесить немерянное количество соединений. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2007, 12:55 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
В моем случае оказалось достаточно закрывать сессию каждый раз после завершения запроса :-) А это в программе иногда не делалось, почему и повисали лицензии. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2007, 10:49 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Есть ли минусы, а может и плюсы, при использовании только сессий, как переменные для передачи параметров со страницы на страницу? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2009, 08:01 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Минус (а может и плюс) в том, что сессия помрет по таймауту... Это нужно учитывать и соответственно реагировать дабы не пугать пользователей сообщениями об ошибках. ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 09:11 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Наши таскают через сессию довольно большие куски данных, пачки вложенных друг в друга объектов, простых переменных не хватает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2009, 05:50 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
А сколько лицензий максимально можно обеспечить при покупке нового дистрибутива? Или хотябы какого порядка эта величина? П.С. Если я правильно понял, то при подключении к сессии с очередного Ай-пи адреса выдиляется одна лицензия, то если с сайтом работают одновременно 100 или 1000 человек то нужно иметь и сервер на 100 и 1000 лицензий?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2009, 16:49 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
CacheLot , при таком количестве пользователей имеет смысл докупить "прибамбаску" к своей версии, называется она типа "ВебЭдОн". После этого через Веб пользователи вообще не считаются и лицензии не жрут. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2009, 16:54 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Web AddOn - это опция, предназначенная для случаев, когда основная работа осуществляется идентифицируемыми пользователями, для которых покупаются пользовательские лицензии, и есть некая дополнительная функциональность, с которой работают не идентифицируемые пользователи через Web. Вот для них и нужен Web AddOn. Если есть, например, публичный сайт в Интернет, то нужен другой тип лицензий RealTime. Он для систем, с которыми работают большое количество не идентифицируемых пользователей. Советую обсуждать этот вопрос с Вашим менеджером в InterSystems. Мы заинтересованы в публичных Web-проектах и готовы предложить разные варианты лицензирования, удобные для Вашего проекта. Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2009, 17:55 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
Здравствуйте, решил свежий ключ поставить и влезло это ОШИБКА #5002: Ошибка: <ILLEGAL VALUE>zIsValidKey+8^%SYSTEM.License.1 Пробовал другие ключи, пробовал обновлять версию. На других серверах ключи устанавливаются. Сейчас версия - 2014.1 (Build 511U). Сталкивался кто-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 17:41 |
|
Сессии, кукесы и лицензии
|
|||
---|---|---|---|
#18+
ilson, В релизе 2014.1 (2014.1.0.608) это должно быть исправлено (у вас FieldTest). Ошибка появляется, когда в настройках локали стоит "Использовать форматы локали даты/времени/чисел для rusw:" Если перезагрузите Caché ключ подхватится. Попробуйте, может d $system.License.Upgrade() сработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 17:47 |
|
|
start [/forum/topic.php?fid=39&msg=35883144&tid=1556883]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 162ms |
0 / 0 |