|
Почему происходит утечка памяти на рабочих процессах | ☑ | ||
---|---|---|---|---|
0
Alex_MA
03.06.14
✎
08:20
|
Здравствуйте!
Вопрос к знатокам. В базе порядка 200 пользователей - работают через тонкого клиента. База 170Gb 1. Скажите пожалуйста достаточно ли производительности серверов ? Конфигурация BLADE сервера: Server Blade HP ProLiant BL460c G7 CPU 1 Six-Core Intel Xeon, 2533 MHz CPU 2 Six-Core Intel Xeon, 2533 MHz Memory 32768 MB На данном сервере поднята виртуальная машина: Виртуальный сервер (VMware ESXi 5.0.0, 623860) CPU 2-virtual sockets 4-cores per socket Memory 32768 MB HDD 150 Gb ОС Windows Server 2008 R2 Standard (64-bit) Ethernet VMXNET 3 10 Gb Отдельный сервер MS SQL SQL Сервер CPU 1 Intel Xeon E5440 2.83 GHz 4-Core CPU 2 Intel Xeon E5440 2.83 GHz 4-Core Memory 64 Gb HDD 136 Gb ОС Windows Server 2008 Enterprise Service Pack 1 (64-bit) SQL Microsoft SQL Server Standard Edition (64-bit) (9.00.5000.00) Ethernet HP NC373i Multifunction Gigabit Server Adapter HP NC373i Multifunction Gigabit Server Adapter Настройки кластера 1С Предприятия: http://www.pictureshack.ru/view_53414_cluster.png Свойства информационной базы: http://www.pictureshack.ru/view_34246_propdb.png На сервере закончилась вся память: Анализ ситуации показал, что один из рабочих процессов «Включен»=Нет/«Активен»=Да. http://www.pictureshack.ru/view_30745_wp_1.png На этом рабочем процессе (PID=2616) присутствует следующее соединение: http://www.pictureshack.ru/view_58026_conn.png Свойства соединения: 2. Порой возникает следующая ситуация: |
|||
1
Alex_MA
03.06.14
✎
08:20
|
(0)Свойства соединения:
http://www.pictureshack.ru/view_56240_propconn.png Как должен был отработать сервер 1С Предприятия – исходя из настроек по превышению памяти 3000000КB он должен был создать дополнительные рабочие процессы и переводить соединения на новые рабочие процессы. После того как все соединения с этого рабочего процесса были бы удалены – он должен был его закрыть и высвободить занимаемую оперативную память. Но этого не произошло. В результате мы в ручную по PID процесса аварийно завершили работу рабочего процесса. В результате стали создаваться рабочие процессы (т.к. кроме рабочего процесса PID=2616 – были еще рабочие процессы с превышением памяти). Вот созданные новые процессы: http://www.pictureshack.ru/view_48827_wp_2.png 1. Почему так происходит ? 2. Подскажите пожалуйста как нам отслеживать такие ситуации ? 3. Помогите найти причину такой работы платформы (м.б. на рабочем процессе PID=2616 была «тяжёлая» операция – выполняемая в одной транзакции ???). |
|||
2
xXeNoNx
03.06.14
✎
08:22
|
1. Серваков - Вполне достаточно для такого кол-ва юзеров
|
|||
3
xXeNoNx
03.06.14
✎
08:23
|
какая платформа 1с?
|
|||
4
Alex_MA
03.06.14
✎
08:26
|
(3)1С:Предприятие 8.2 (8.2.19.83)
|
|||
5
xXeNoNx
03.06.14
✎
08:26
|
т.к. кластер серваков на 8.3 работает криво, у меня 1 сервак по конфе такой же, тянет 200юзеров тонких и толстых клиентов память забивается дня за 2, сделал настройки, терь должны скидываться
|
|||
6
Alex_MA
03.06.14
✎
08:29
|
(5)у нас тоже вроде как сделаны настройки, однако, зависают раб. процессы с сеансами - возникает превышение. На новый раб. процесс не переходят.
Интересно почему такое происходит ? Интересно если что то на раб. процессе на соединении выполняется в транзакции, а транзакция длинная - то это как раз тот случай ? Ведь сервер 1С Предприятия не перебросит с одного процесса на другой если на этом процессе выполняется в одной длинной транзакции ? |
|||
7
xXeNoNx
03.06.14
✎
08:34
|
На x32 платформе у меня стояло 2гб, понятно что 4 вроде как для проца в 32х разрядной системе -норм, но все же, правда очень большие отчеты не смогут собирать. Были так же зависшие процессы. Для 2х серваков и для 200 юзеров, минимально 2 хоста, а максимально 3, на каждый сервер, зачем создал 100штук
|
|||
8
tdm
03.06.14
✎
08:34
|
(6) глубоко копнули - материал курса специалиста по технологическим вопросам))...насколько помню среди одной из основных причин утечки памяти называются перекрестные ссылки) т.е. неоптимальный код
тоже наблюдаю подобное на 8.2.19.хх(не помню), до этого жили на 8.2.17.хх было подобное реже...переодический рестарт помогает, списал на платформу |
|||
9
Alex_MA
03.06.14
✎
08:42
|
(8)в принципе понять бы один момент
если не происходит переключения с одного раб. процесса на другой - Это выполняется в транзакции ? Если так, то будем анализировать след. образом: Выясним какой процесс не переключается, узнаем что делает тот пользователь который на этом соединении - и анализируем код |
|||
10
tdm
03.06.14
✎
08:47
|
(9) ЦУП ставьте)...кроме того как я понял база у вас серьезная и вопросы оптимизации стоят остро)) зашлите кого-нибудь на курсы, они вроде недельные
|
|||
11
tdm
03.06.14
✎
08:48
|
||||
12
Alex_MA
03.06.14
✎
08:55
|
(11)Я устанавливал
Центр управления производительностью, редакция 2.0 (2.0.11.1) (http://v8.1c.ru/expert/pmc/pmc_overview.htm) Copyright (С) ЗАО "1C", 2008-2010. Все права защищены (http://www.1c.ru) Я от него не в восторге. Какие то ошибки разбора выходят. По взаимоблокировкам вообще пишет что в данной версии не доступно. Если ДокументЗамер.Показатель = Справочники.Показатель.АнализЗапросов Тогда АнализЗапросов.ПроанализироватьЗапросы(Анализ.СоздатьКонтекстАнализа(ДокументЗамер)); ИначеЕсли ДокументЗамер.Показатель = Справочники.Показатель.АнализОжиданийНаБлокировках Тогда КонтекстАнализа = Анализ.СоздатьКонтекстАнализа(ДокументЗамер); Если КонтекстАнализа.Замер.ТипБлокировки = Перечисления.ТипБлокировки.Блокировка1СПредприятия Тогда АнализБлокировок1С.ПроанализироватьБлокировки(КонтекстАнализа); ИначеЕсли КонтекстАнализа.Замер.ТипБлокировки = Перечисления.ТипБлокировки.БлокировкаСУБД Тогда АнализБлокировокСУБД.ПроанализироватьБлокировки(КонтекстАнализа); КонецЕсли; ИначеЕсли ДокументЗамер.Показатель = Справочники.Показатель.АнализВзаимоблокировок Тогда КонтекстАнализа = Анализ.СоздатьКонтекстАнализа(ДокументЗамер); АнализВзаимоблокировок.ПроанализироватьВзаимоблокировки(КонтекстАнализа); ИначеЕсли ДокументЗамер.Показатель = Справочники.Показатель.АнализВзаимоблокировок1С Тогда КонтекстАнализа = Анализ.СоздатьКонтекстАнализа(ДокументЗамер); Замер.ЗаданиеНеВыполнено(ДокументЗамер, "В данной версии не доступно."); Результат = Ложь; //АнализВзаимоблокировок1С.ПроанализироватьВзаимоблокировки(КонтекстАнализа); КонецЕсли; http://www.pictureshack.ru/view_99403_cup.png И в конце концов он смотрит тот же технологический журнал. |
|||
13
Alex_MA
03.06.14
✎
08:55
|
http://www.pictureshack.ru/view_99403_cup.png" target="_blank" rel="nofollow" class="extralink">http://www.pictureshack.ru/view_99403_cup.png
|
|||
14
Alex_MA
03.06.14
✎
08:56
|
||||
15
xXeNoNx
03.06.14
✎
08:56
|
Не факт что поможет выявить эту хрень, поможет узкие места в коде, но не зависшие процессы на хостах.
|
|||
16
xXeNoNx
03.06.14
✎
08:59
|
а зачем тебе взаимоблокировки скуля, там же есть блокировки 1с и 1с и скуля(14)
|
|||
17
xXeNoNx
03.06.14
✎
09:00
|
(15) А, пардон, старая версия чтоль?
|
|||
18
Alex_MA
03.06.14
✎
09:02
|
(17)для последней нужен 8.3
В этой версии только это: http://www.pictureshack.ru/view_34723_cup.png Взаимоблокировки 1С (TDEADLOCK) Взаимоблокировки СУБД |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |