02.11.2007, 17:59 | #21 |
Участник
|
Цитата:
Риспект. глянул в код - непонятно, зачем делать 100 сессий. Если 100 пользователей сидит - получится 10 тыс. записей в таблице. Да и аос будет нагружать, что исказит картину. Может сделать 1-2 считывания через некоторый промежуток времени. Например поставит 2 цикла а не 100 и в теле цикла поставить sleep(1000) |
|
04.11.2007, 00:38 | #22 |
Member
|
Я уже не помню, почему так сделал .
Наверное, разгадка вот в этом. Цитата:
Сообщение от glibs
...
что-то аналигичное журналу PerfMon'а. Я по такому принципу делал. ... Я пока не пользовался этим, так что в каком его направлении лучше развивать пока не думал.
__________________
С уважением, glibs® |
|
15.11.2007, 12:01 | #23 |
Участник
|
Было бы неплохо добавить отображение блокировок Оркала.
Что бы видеть какой пользователь блокирует работу остальных. |
|
15.11.2007, 12:12 | #24 |
Участник
|
Цитата:
Главное меню \ Администрирование \ Запросы \ База данных \ Блокировки пользователей базы данных |
|
05.04.2016, 15:08 | #25 |
Участник
|
А как этот вопрос решается в новых версиях Аксапты ?
В 2009-й указанный способ не работает. (Вопрос о том как определить какая сессия на аосе сколько процессорного времени отъела) Последний раз редактировалось Logger; 05.04.2016 в 15:48. |
|
05.04.2016, 17:16 | #26 |
Участник
|
В AX 2012 была добавлена возможность прописывать информацию о пользователе и его сессии в Аксапте в контекст SQL-соединения, за счет чего стало возможно со стороны СУБД понимать, какое соединение к кому относится, см. Troubleshooting database performance [AX 2012]. Заполнение контекста чуть-чуть снижает производительность, но это с лихвой компенсируется удобством мониторинга. После перезапуска АОСа с новой настройкой указанную информацию о сессии, доступную через sys.dm_exec_sessions.context_info, можно разбирать, к примеру, так:
PHP код:
Код: sid blck threads ax_user ax_s wait_time wait_type command status db_name query_plan query ---- ----- -------- -------- ----- ---------- ---------- -------- -------- -------- ------------------------------------ ---------- 223 0 1 userId 123 0 SELECT running AX60_DB <ShowPlanXML xmlns="http://schema... SELECT ... |
|
|
За это сообщение автора поблагодарили: mazzy (2), Dron AKA andy (1), Vadik (5), trud (3), Logger (5). |
05.04.2016, 17:42 | #27 |
Участник
|
Собственно, это что касается связи пользователей и сессий СУБД
А по поводу загрузки пользователями процов на АОСе - никак. Потому что после 4.0, где перевели обработку бизнес-логики на рельсы RPC, на АОСе больше нет выделенного потока, закрепленного за каждой пользовательской сессией, вместо этого есть пул рабочих потоков (их в разы меньше, чем пользовательских сессий), где очередной запрос от пользовательской сессии обрабатывается первым попавшимся свободным рабочим потоком, который берется из пула, потом он кладется обратно в пул, а через мгновение уже обрабатывает запрос от другой пользовательской сессии. Чтобы АОС умел считать, какой пользователь насколько грузит его процессоры, он должен был бы вести некие счетчики производительности в разрезе пользовательских сессий. Последний раз редактировалось gl00mie; 05.04.2016 в 17:56. |
|
|
За это сообщение автора поблагодарили: Logger (7). |
05.04.2016, 22:27 | #28 |
Участник
|
Цитата:
Сообщение от gl00mie
на АОСе больше нет выделенного потока, закрепленного за каждой пользовательской сессией, вместо этого есть пул рабочих потоков (их в разы меньше, чем пользовательских сессий), где очередной запрос от пользовательской сессии обрабатывается первым попавшимся свободным рабочим потоком, который берется из пула, потом он кладется обратно в пул, а через мгновение уже обрабатывает запрос от другой пользовательской сессии.
А где про это можно почитать ? Дык, вот и непонятно зачем этого не сделали. Тем более что, предыдущие версии аксапты такое позволяли делать (см. класс AOSSessionInfo) |
|
08.04.2016, 07:09 | #29 |
Участник
|
Если нельзя, но очень хочется, то можно.
Поковырялся и все же сделал вариант мониторинга который частично решает поставленную задачу. Исходим из того, что информация о загрузке аоса по сессиям интересует только тогда когда они создают существенную нагрузку, а это как правило: 1. Пакетные обработки. 2. Долгие серверные обработки, запущенные обычным пользователем. 3. Долгие серверные обработки инициированные com и .Net бизнес коннекторами. Во всех этих случаях, на всем протяжении времени пока выполняется обработка должно соблюдаться соответствие номера пользовательской сессии и номера обслуживающего потока в рамках виндового процесса АОСа. А значит мы можем посчитать его вклад в нагрузку создаваемую аосом в целом. А это нам и надо. Конечно такой подход неприменим, когда нагрузка создается большим количеством маленьких запросов на аос (например, когда работает тяжелый клиентский алгоритм). Но чем богаты тем и рады. Проект очень сырой, рассматриваю его как прототип. Возможны разные баги. Отображает нагрузку только на текущем аосе. Т.е. для просмотра процентов загрузки аоса сессиями, надо именно на интересующем аосе запускать форму. Написан для 2009-й версии. Хотя возможно и для 2012-й сработает. я не проверял. Последний раз редактировалось Logger; 08.04.2016 в 07:17. |
|
|
За это сообщение автора поблагодарили: Pustik (11). |
08.04.2016, 08:38 | #30 |
Участник
|
Спасибо.
У меня при компиляции не хватает некоторых Ваших классов : 1) Session, Методы: Session::GRD_getAOSPortCached(), Session::GRD_getServerID() Подойдет ли замена на Session::getAOSPort и return new xSession().serverId() соответственно? 2) SysTreeNode, Метод: SysTreeNode::GRD_refreshAll4Com(); Подойдет ли замена на SysTreeNode::refreshAll ? 3) Box, Метод: Box::yesNo_Net - но это вроде бы не критично и нет таблиц : GRD_BatchParameters, Метод : GRD_BatchParameters::find().MainBatchOperator GRD_catch, Метод : GRD_catch::insertByCommon(.....
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 08.04.2016 в 08:49. |
|
08.04.2016, 08:49 | #31 |
Участник
|
Там лишние методы попались. Можно их закомментировать. Нужно лишь помеченное номером проекта R100701 и все. Замены тоже должны подойти кроме SysTreeNode::GRD_refreshAll4Com().
Box::yesNo_Net - заменить на Box::yesNo При работе выглядит примерно так для пакетных обработчиков Перевыложил проект. Последний раз редактировалось Logger; 08.04.2016 в 10:40. |
|
|
За это сообщение автора поблагодарили: gl00mie (5). |
14.04.2016, 13:27 | #32 |
Участник
|
Создать таблицу, в которую писать имя коллера (форма, отчёт), пользователя, дату и время. Подвязать к событиям классов-родителей, например:
\Classes\SysSetupFormRun\run; \Classes\SysSetupFormRun\closeOk; \Classes\SysSetupFormRun\close; \Classes\RunBase\run. |
|
08.07.2020, 17:10 | #33 |
Участник
|
Столкнулись с такой проблемой - периодически какой-то пользователь(а может и пакетное задание) приводит к высокой загрузке АОСа 2009, сжирает всю память на аосе(16ГБ) и начинает создавать кучу временных таблиц на диске.
АОС при этом не падает, но начинает жутко тормозить. на SQL загрузки тоже особо никакой нет. Стоит задача определить что это за пользователь(ну или что за пакет). Я так понимаю приложенный проект как раз нацелен на это. Поскольку тема старая - может у кого нибудь есть свежие идеи(ну или обновления проекта) как найти виновника Выглядит это приметрно так (версия 2009) |
|
09.07.2020, 13:57 | #34 |
Участник
|
Цитата:
Есть другие способы, попозже опишу. Но гарантированного результата не дают. |
|
09.07.2020, 14:35 | #35 |
Moderator
|
Цитата:
Сообщение от trud
Столкнулись с такой проблемой - периодически какой-то пользователь(а может и пакетное задание) приводит к высокой загрузке АОСа 2009, сжирает всю память на аосе(16ГБ) и начинает создавать кучу временных таблиц на диске.
АОС при этом не падает, но начинает жутко тормозить. на SQL загрузки тоже особо никакой нет. Стоит задача определить что это за пользователь(ну или что за пакет). Я так понимаю приложенный проект как раз нацелен на это. Поскольку тема старая - может у кого нибудь есть свежие идеи(ну или обновления проекта) как найти виновника Выглядит это приметрно так (версия 2009) Вложение 12890 |
|
09.07.2020, 14:39 | #36 |
Участник
|
|
|
09.07.2020, 15:11 | #37 |
Moderator
|
Ну вообще в моем случае, AOS в памяти рос, но не до таких размеров. Есть подозрение что там кто-то эдак на десяточек-другой популярных таблиц врубил EntireTableCache, и вся память отъедается на постоянно создаваемые курсоры.
Хотя - это и что-то другое может быть. Но у меня картина довольно однозначная была на AOS - при довольно таки плевых с прикладной точки зрения операциях, загрузка CPU выростала до 40-60 процентов при 5-7 параллельно работающих пользователях. |
|
|
За это сообщение автора поблагодарили: trud (20). |
09.07.2020, 19:09 | #38 |
Участник
|
Цитата:
Сообщение от fed
Ну вообще в моем случае, AOS в памяти рос, но не до таких размеров. Есть подозрение что там кто-то эдак на десяточек-другой популярных таблиц врубил EntireTableCache, и вся память отъедается на постоянно создаваемые курсоры.
Хотя - это и что-то другое может быть. Но у меня картина довольно однозначная была на AOS - при довольно таки плевых с прикладной точки зрения операциях, загрузка CPU выростала до 40-60 процентов при 5-7 параллельно работающих пользователях. формальные показатели включения cacheLookup EntireTable |
|
10.07.2020, 02:44 | #39 |
Участник
|
Цитата:
Спасибо, я как-то упустил этот момент. Но хочется отменить что современные сервера стали быстрее, тут система как-то дожила до 1млн записей. Джоб для проверки(https://github.com/TrudAX/TRUDScript...re-table-cache ,проверьте свои системы Последний раз редактировалось trud; 10.07.2020 в 02:46. |
|
|
За это сообщение автора поблагодарили: Ace of Database (2), Raven Melancholic (2), S.Kuskov (2). |
10.07.2020, 08:01 | #40 |
Участник
|
|
|
Теги |
perfmon, performance, аос, документация, загрузка процессора, мониторинг, полезное, производительность, процессор, счетчики производительности |
|
|