Борьба с вредителями - как избавиться от "непредвиденных утечек памяти" сервера 1С

02.10.11

Разработка - Инструментарий разработчика

Обычный рабочий день и вроде бы ничего не предвещало беды, вот только 1С вдруг начинает жутко "тормозить". Оперативно среагировав видите что сервер "съел" всю свободную память и принялся за файл подкачки. За это время либо всё "валится", либо вы сами перезагружаете сервер и остаток дня слушаете жалобы недовольных пользователей. Знакомая ситуация?

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
KillUsers.vbs
.vbs 1,11Kb
118
118 Скачать (1 SM) Купить за 1 850 руб.

Собственно небольшой скрипт, который нужно поставить в расписание на сервере/серверах 1С - поменять там нужно имя сервера - на ваше, и количество памяти которое ему допустимо съесть безболезненно - можете ещё выставить время которое у пользователя будет шанс "прекратить" съедать память 1С (метафору вы ведь поняли - речь идёт о пользователях/программистах которые или сами запрос написали "кривой" или сделали настройку таких же свойств). Собственно скрипт рассчитан на 1 сервер и 1 рабочий процесс, и менять на универсальный не буду и вам не советую.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169313    937    403    

905

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12619    99    42    

101

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    26541    90    48    

134

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    16833    41    15    

75

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11400    40    27    

66

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190556    1150    0    

918

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    783    2    0    

4

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    103934    244    100    

306
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SergDi 03.10.11 14:24 Сейчас в теме
в данный момент у меня похожая проблема, сервер отъедает всю доступную память, лечу это дело запуском нового процесса и остановкой рабочего, в течении 10 секунд все приходит в норму.
а этот скрипт грохает непосредственно юзверей?
4. comol 5110 03.10.11 15:29 Сейчас в теме
(1) SergDi, да, убивает тех пользователей, которые "рушат" сервер. Если запрос на самом деле серьёзный - балансировка не произойдёт, т.к. пользователь выболняет запрос к БД... такие пользователи не балансируются. В итоге на рабочем процессе вы этих пользователей всё равно убьёте.. только вот можете не успеть... у нас просто SQL "быстрый"... и мы реально не успевали это дело остановить... а скрипт успевает :)
2. cool.vlad4 2 03.10.11 14:34 Сейчас в теме
Опиши будь добр, что за скрипт, - не "net start/stop"?
3. cool.vlad4 2 03.10.11 14:37 Сейчас в теме
+ 2 конечно, же нет, читать разучился...а на чем скрипт написан? на vbs .ps сегодня не мой день...
5. comol 5110 03.10.11 15:38 Сейчас в теме
И хоть бы кто "+" поставил кто встречал такое дело. Сейчас ведь "придут доброжелатели" наставят минусов, и уже не скачаете когда встретитесь :)
6. artbear 1565 03.10.11 15:43 Сейчас в теме
12 Гб - объем виртуальной или реальной памяти?
Скрипт проверялся на 64-битных серверах или 32-битные также проверялись?
ЗЫ у меня есть контора, которая съекономила 10 штук на 64-битном ключе и сидят на 32х :)
9. comol 5110 03.10.11 16:36 Сейчас в теме
(6) artbear, 12 ГБ конечно про виртуальную память. Скрипт работал только на 64 битных системах... я как-то с трудом себе уже представляю 32 битный сервер... Там наверное будет реботать при очень тонкой настройке... ведь 2ГБ это не так много.. они могут быть заняты и при нормальной работе пользователей... а мы будем выкидывать "ни в чём не повинных", только потому что они больше всех старались...
7. SGordon1 03.10.11 15:45 Сейчас в теме
А утечки мозгов только из за пользователей бывают?
8. comol 5110 03.10.11 15:50 Сейчас в теме
(7) SGordon1, Конечно не только... в основном из за программистов... в принципе утечки это нормальный процесс для 1С.. скрипт нужен для борьбы с "резкими" утечками... для борьбы с обычными подойдёт перезапуск процессов по расписанию...
10. andru_dv 07.10.11 12:55 Сейчас в теме
Это точно полезная вещь т.к.
переодически возникают такие "пожыратели" памяти.
Спасибо за разработку!
11. Mitri4 11.10.11 11:42 Сейчас в теме
А как можно вычислить какие запросы вешают сервер?
12. comol 5110 11.10.11 12:02 Сейчас в теме
(11) Mitri4, нуу... это уже не так просто в идеале нужно конечно включать профайлер и проверять. Но вообще Activity Monitor показывает самые ресурсоёмкие запросы. просто если запрос большой, то может быть не полным. А ещё можете не успеть "поймать" запрос - если на SQL сервере памяти много и диски быстрые, сервер 1с может раньше "рухнуть".. если данный скриптик не работает.
13. hrip 214 14.10.11 16:55 Сейчас в теме
По моему проблема утечки памяти на 8.2 неплохо решается и штатными средствами. В свойствах кластера необходимо указать время через какое необходимо перезапускать процессы и ограничение на объем памяти "съеденной" процессом при которой происходит его перезапуск. На 8.1 можно только указать время через которое будут перезапускаться процессы (хотя пока работали на 8.1 таких проблем и не возникало).
При перезапуске процесса соединения не обрываются - они передаются другому процессу.
15. comol 5110 18.10.11 16:24 Сейчас в теме
(13) hrip, Это разные проблемы... проблема постепенной утечки памяти решается перезапуском. А проблема "мгновенной" - только таким образом - нужно успеть "убить" клиента, запустившего не правильный запрос...
14. zhleonid8 18.10.11 09:37 Сейчас в теме
16. nzass 91 25.10.11 19:13 Сейчас в теме
а у меня проще. 2 batника в шедулере
например в 18.00
stop.bat - "C:\Program Files\1cv82\8.2.11.236\bin\ragent.exe" -stop
в 18.01
start.bat - "C:\Program Files\1cv82\8.2.11.236\bin\ragent.exe" -start
18. cool.vlad4 2 25.10.11 21:13 Сейчас в теме
(16) нет, там другое, там скрипт насколько я помню, мониторит память, если он превышает лимит, то рубит процесс.
17. Трактор 1254 25.10.11 21:12 Сейчас в теме
comol пишет:И хоть бы кто "+" поставил кто встречал такое дело. Сейчас ведь "придут доброжелатели" наставят минусов, и уже не скачаете когда встретитесь :)

Плюсы выпрашивать нехорошо. Повышаются шансы быть заминусованным.
19. Трактор 1254 25.10.11 22:38 Сейчас в теме
Незачем огород городить с виндовым планировщиком. Всё делается в рамках 1С. Правда только под виндой. 1Сники почему-то не сочли нужным сделать управление кластером из-под линукса.
Вот перевод код этого скрипта на язык 1С. Не проверял так как лениво.
В 1Се делаешь регламентное задание которые каждую минуту исполняет следующий код:
Процедура УбитьЗлодея()
	
	Соединение = Новый COMОбъект("V82.COMConnector");
	Агент = Соединение.ConnectAgent("tcp://ИмяСервера"); // Имя сервера
	Кластер = Агент.GetClusters()[0]; // 1 кластер в сервере
	Агент.Authenticate(Кластер, "АдминистраторКластера", "ПарольАдминистратора");
	
	РабочийПроцесс = Агент.GetWorkingProcesses(Cluster)[0]; // 1 Рабочий процесс в кластере
	
	Памъять = РабочийПроцесс.MemorySize;
	
	Если Памъять > 12582912 Тогда // Если сожрал больше 12 ГБ - ищем гада
		МассивСессий = Агент.GetSessions(Cluster).Выгрузить();
		Для Каждого Сессия Из МассивСессий Цикл
			ДлительностьВызоваСервераSQL = Сессия.durationCurrentDBMS // Длительность в миллисекундах
			Если ДлительностьВызоваСервераSQL > 300000 Тогда
				Агент.TerminateSession(Кластер, Сессия); // Если больше 5-ти минут выполняет запрос к СУБД - убиваем
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать

Соответственно любой может переписАть код под несколько кластеров и несколько рабочих процессов.
За публикацию плюс так как она обращает взор 1Сников на малопопулярную тему.
Ещё бы авторов платформы попинать за то что управление кластером не работает под линуксом и за то что фоновые задания не убиваются.
MalyshOk; wowik; rrustam11983; croga; KrivosheevEV; gogi2003; krv2k; janjul; comol; +9 Ответить
20. comol 5110 31.10.11 17:34 Сейчас в теме
(19) Трактор, тоже можно, просто подумалось что виндовым планировщиком будет надежнее... если сервер "умирать" начнет...
21. seandr 17.11.11 09:27 Сейчас в теме
Спасибо за скрипт. Выполняет свои функции, а ранее приходилось вручную проделывать это.
22. sipoju 30.11.11 17:43 Сейчас в теме
У меня частенько вылетал сервер 1С, сжирал всю память, залазил в своп и падал, помогала только перегрузка сервака, добавил оперативки -- всё как рукой сняло!
23. stark.temp 19.01.12 11:52 Сейчас в теме
Большое спасибо за полезную информацию.
Хотелось бы увидеть и другие статьи по данной теме.
24. stark.temp 19.01.12 12:30 Сейчас в теме
полезная инфа, ставлю+
25. genadyichnew 21.01.12 14:27 Сейчас в теме
26. Lgm 13.04.12 15:33 Сейчас в теме
есть еще один вариант...
Process Lasso
27. artichoke 25.06.12 14:49 Сейчас в теме
а если обратная задача - нехватка памяти для выполнения больших запросов в отчетах пользователей - то где настраивается доступный к использованию объем памяти для rphost?
29. comol 5110 25.06.12 17:28 Сейчас в теме
(27) artichoke, Настраивается только установкой x64 сервера 1С (и Win/lin x64) и дополнительных планок памяти на сервере :). rphost ничем не ограничен в своих желаниях :).
30. AlexO 136 25.06.12 17:53 Сейчас в теме
(29)
ну почему же? есть.
Для 32-х разрядных систем Windows - применение технологии AWE с расширением PAE.
И наоборот - не выставление PAE ограничивает любой пользовательский процесс 2 Гб памяти.
32. comol 5110 25.06.12 22:03 Сейчас в теме
(30) AlexO, 3ГБ PAE - не сильно спасёт. а AWE должна поддерживаться приложением по-моему.
28. AlexO 136 25.06.12 14:55 Сейчас в теме
как избавиться от "непредвиденных утечек памяти"

от непредвиденных - никак.
Можно только от предвиденных и предупрежденных.
31. AlexO 136 25.06.12 17:59 Сейчас в теме
(0)
я не понял, что у вас за утечки памяти - а как знаю я, самые что ни на есть утечки в 1с-сервере происходят из-за того, что какой-то пользователь запустил серьезный расчет, память отъел, а сервер по завершении расчета - память не освободил (спасибо программистам 1с).
В результате - и "старая" ненужная уже память не освободилась, и новая под новые процессы занимается.
А ваш скрипт - это управление давно есть: GetMem и FreeMem, следите, выделяете и освобождате память.
А то, что у вас следит за размером - так просто не дадите пользователю сделать важный отчет. Только и всего :)
Трактор; +1 Ответить
33. comol 5110 25.06.12 22:10 Сейчас в теме
(31) AlexO, Нет, это не утечки памяти. Утечки памяти это как правило медленная деградация и с ними можно бороться. Отчет который может занять 3ГБ памяти сервера - это ошибка программиста 1С, и за такие отчеты его надо бить (больно бить).
По поводу GetMem и FreeMem искренне надеюсь что вы имели ввиду функции (вроде даже не C... паскаль какой-то), а не одноименные программы, тогда ваша фраза хотя бы не лишена смысла. Но нам то они как бы ничем не помогут... если только исходный код платформы раздобыть :)))
34. comol 5110 04.07.12 10:07 Сейчас в теме
Для 8.3 уже не актуальна публикация. Как все перейдут сниму. Появились нормальные средства управления памятью.
35. arian89 29.01.13 08:57 Сейчас в теме
мдамс, такая же проблем есть. стоит попробовать
Оставьте свое сообщение