Добрый день уважаемые Знатоки!!!
Поделитесь, пожалуйста, вашим опытом. У меня проблема - хочу разобраться в причине чрезмерно большой загрузки использования системой оперативной памяти сервера.
Система MS SQL 2008 + 1c 8.1 (конфигурация очень сильно переделанная Управление торговлей). Циклический обмен данными с другими базами (расположенными не на этом сервере) организован посредством Регламентных заданий. Для этого на сервере постоянно запущены несколько экземпляров 1с. под разными юзерами. Загрузку оперативной памяти на сервере проверяю через Windows Task Manager. При запуске всей системы использование памяти минимально, но по мере поступления файлов обмена используемая помять растёт, пока не зашкаливает до придела. Если я закрываю окна всех программ, то это не приводит к освобождению памяти. Только принудительное завершение, в окне Сервисов, процессов MSSQLServer и 1с:Enterprise приводит к освобождению памяти. Я предполагаю, что в процессе циклического обмена создаются объекты и они не освобождаются после окончания обмена. Но тогда почему память не освобождается, после закрытия окна?
Подскажите, пожалуйста, как исправить положение.
При настройке SQl Вы можете указать максимальное значение выделяемой памяти. Сколько Вы укажите столько он и займет её под свои нужды и освобождать он ее не будет, это нормальное поведение SQL
Спасибо за подсказку. Допустим, что виной неправильное задание памяти в настройках SQL сервера. Тогда почему ресурс не освобождается после отключения всех юзеров в сета и всех процессов в 1с на сервере? Прошу обратить ваше внимание на тот факт, что величина использованной памяти начинает расти по мере поступления файлов для обмена и не снижается обратно, после завершения процесса.
пошукай в нете, да и на ИС было - в кластере есть галка, гасящая обожравшийся рпхост
беда, конечно, никаких гарантий, что не погасит в критический момент, но пока полет нормальный, да и что такого критического может быть в 1с?!
1) Реструктуризация базы данных при обновление(вероятность конечно маленькая, чтобы попало именно в этот момент)
2) Обработка большого объёма данных в определённый процент выполнения...(будет обидно запускать заново)
Хмммм а если уточнить более деталь... что именно ест память? Какой процесс? Процесс SQL сервера? Процесс Рабочего процесса сервера 1С? Или сам exe файл запущенной клиентской 1С?
Спасибо за совет. Эту решение я знаю и обдумывал. Но от применения пока воздерживаюсь.
Хочу узнать ваше мнение. А не может ли быть причина, не в настройках сервера, а программная? Т.е. при обмене в цикле файлами, система создает объект, а затем его не удаляет. Ведь если я не включаю обмен данными память не растет вообще.
Мне не понятно. Допустим запрос просто ужасный и он использовал всю память. После его выполнения память должна освободиться? А тут я закрываю окна всех программ запущенных на сервере, а используемая память не освобождается.
Если через диспетчер задач посмотреть? Какой процесс памяти больше всего занимает?
Правильно сказали SQL ест всю память если его не ограничить. ПОпробуйте раздельно перегрузить SQL и 1С Сервер. После чего свободной памяти будет больше. Пока не понятно какой процесс ест память советы давать трудно.
Смотрю в Windows Task Manager.
Rphost.exe 480 mb
Sqlservr.exe 301 mb
1cv8.exe 143 mb 4 процесса
Остальные процессы по мелочам. В результате память 20 gb полностью заполнена.
При попытке перезагрузить сервер SQL без перезагрузке сервера 1с, не выполняется.
Я не успеваю проверять все ваши советы.
Огромное всем спасибо!!!!!!!!!!!!!!!!!!!!!!
В последнее время перезапускаю отдельно серверы 1c и SQL, правильно было указанно это значительно экономит память.
Но основной мой вопрос - Возможна ли причина в не удалении созданных объектов в цикле при обмене данных???? И должна ли освобождаться память, когда я закрываю окно 1с в котором задействован процесс.
Я знаю, что определять размер занятой sql server-ом памяти из Task Manager неправильно
,также и называть Task Manager "монитором ресурсов". У меня MS SQL 2008 но найти где у него Монитор ресурсов, у меня не получается. Насколько я знаю он называется Performance Manager и должен иметь счетчик Server Target Memory.
У меня имеются пункты:
1) SQL Server Management Studio
Deployment Wizard
Reporting services configuration m
Sql Server Configaration m
SQL server error and Usage reporting
Data profile viewer
Execute package utility
Database engine tuning advisor
SQL Server profiles