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

02.10.11

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

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

Файлы

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

Наименование Скачано Купить файл
KillUsers.vbs
.vbs 1,11Kb
118 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

15500 руб.

02.09.2020    210056    1151    413    

1042

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

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

8400 руб.

20.08.2024    39112    216    113    

204

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

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

16000 руб.

10.11.2023    18216    78    39    

92

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

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

9500 руб.

17.05.2024    36855    134    55    

176

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    25807    65    30    

96

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    2553    4    7    

12

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

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

3600 руб.

27.12.2024    3462    7    0    

12

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

6000 руб.

07.02.2018    108206    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SergDi 03.10.11 14:24 Сейчас в теме
в данный момент у меня похожая проблема, сервер отъедает всю доступную память, лечу это дело запуском нового процесса и остановкой рабочего, в течении 10 секунд все приходит в норму.
а этот скрипт грохает непосредственно юзверей?
4. comol 5414 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 5414 03.10.11 15:38 Сейчас в теме
И хоть бы кто "+" поставил кто встречал такое дело. Сейчас ведь "придут доброжелатели" наставят минусов, и уже не скачаете когда встретитесь :)
6. artbear 1571 03.10.11 15:43 Сейчас в теме
12 Гб - объем виртуальной или реальной памяти?
Скрипт проверялся на 64-битных серверах или 32-битные также проверялись?
ЗЫ у меня есть контора, которая съекономила 10 штук на 64-битном ключе и сидят на 32х :)
9. comol 5414 03.10.11 16:36 Сейчас в теме
(6) artbear, 12 ГБ конечно про виртуальную память. Скрипт работал только на 64 битных системах... я как-то с трудом себе уже представляю 32 битный сервер... Там наверное будет реботать при очень тонкой настройке... ведь 2ГБ это не так много.. они могут быть заняты и при нормальной работе пользователей... а мы будем выкидывать "ни в чём не повинных", только потому что они больше всех старались...
7. SGordon1 03.10.11 15:45 Сейчас в теме
А утечки мозгов только из за пользователей бывают?
8. comol 5414 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 5414 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 5414 18.10.11 16:24 Сейчас в теме
(13) hrip, Это разные проблемы... проблема постепенной утечки памяти решается перезапуском. А проблема "мгновенной" - только таким образом - нужно успеть "убить" клиента, запустившего не правильный запрос...
14. zhleonid8 18.10.11 09:37 Сейчас в теме
16. nzass 90 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. Трактор 1271 25.10.11 21:12 Сейчас в теме
comol пишет:И хоть бы кто "+" поставил кто встречал такое дело. Сейчас ведь "придут доброжелатели" наставят минусов, и уже не скачаете когда встретитесь :)

Плюсы выпрашивать нехорошо. Повышаются шансы быть заминусованным.
19. Трактор 1271 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 5414 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 5414 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 5414 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 5414 25.06.12 22:10 Сейчас в теме
(31) AlexO, Нет, это не утечки памяти. Утечки памяти это как правило медленная деградация и с ними можно бороться. Отчет который может занять 3ГБ памяти сервера - это ошибка программиста 1С, и за такие отчеты его надо бить (больно бить).
По поводу GetMem и FreeMem искренне надеюсь что вы имели ввиду функции (вроде даже не C... паскаль какой-то), а не одноименные программы, тогда ваша фраза хотя бы не лишена смысла. Но нам то они как бы ничем не помогут... если только исходный код платформы раздобыть :)))
34. comol 5414 04.07.12 10:07 Сейчас в теме
Для 8.3 уже не актуальна публикация. Как все перейдут сниму. Появились нормальные средства управления памятью.
35. arian89 29.01.13 08:57 Сейчас в теме
мдамс, такая же проблем есть. стоит попробовать
Для отправки сообщения требуется регистрация/авторизация