Перенести кэш 1с на другой диск

Обновлено: 04.07.2024

Вопрос производительности 1С в файловом режиме стоит довольно остро, особенно перед небольшими фирмами, которые не могут позволить себе существенных вложений в оборудование. Тем не менее "аппетиты" приложения от релиза к релизу только растут и задача повышения быстродействия при умеренных затратах бюджета становится все актуальнее. В этом случае неплохим решением будет приобретение и размещение баз на SSD.

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

В наличие имелся простой терминальный сервер на Core i3 2120, 8 Гб RAM, с дисковым массивом RAID 1 из двух Western Digital RE4, который обслуживал от трех до шести пользователей, каждый из которых работал с двумя - тремя базами одновременно.

Анализ производительности сразу выявил узкое место - дисковая подсистема (скриншот сделан уже после установки SSD, поэтому к RAID массиву относятся логические диски C: и E:).

1cv83-SSD-001.jpg

Несложные расчеты показали, что запуск даже одной информационной базы практически полностью использует производительность массива, около 150 IOPS при текущем соотношении чтение/запись - фактический предел для зеркала из двух не самых быстрых дисков. На что косвенно указывает и размер очереди.

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

Тест производительности массива также показал невысокий результат, по сегодняшним меркам более подходящий портативным дискам.

1cv83-SSD-002.jpg

Стало ясно - требуется модернизация дисковой подсистемы. Даже по предварительным прикидкам, создание производительного массива на основе массовых HDD упиралось как в доступный бюджет, так и в физические возможности железа, которое просто не имело необходимого количества SATA-портов и дисковых корзин в корпусе. Поэтому было принято решение о приобретении SSD.

Так как высоких дисковых нагрузок не предусматривалось, то выбор производился в первую очередь из соображений цены. Скоростные характеристики также отходили на второй план, так как узким местом становился интерфейс SATA-II. В итоге был приобретен 128Gb Corsair Neutron [CSSD-N128GB3-BK] LAMD, который будучи установленным в сервер показал следующие скоростные характеристики:

1cv83-SSD-003.jpg

Как видим, операции последовательного доступа ожидаемо уперлись в пропускную способность интерфейса, но в нашем случае это имеет второстепенное значение. Основное внимание следует обратить на операции случайного доступа, которые на порядок превосходят аналогичные показатели традиционных HDD.

Следующий вопрос, который нужно решить: это создать ли "зеркало" из SSD и пожертвовать TRIM ради отказоустойчивости или оставить одиночный диск, выбрав скорость вместо отказоустойчивости. Следует отметить, что современные SSD кроме команды TRIM используют собственные технологии борьбы с деградацией, такие как сбор мусора, что позволяет довольно эффективно работать даже на системах без TRIM. Используемый в данной серии SSD контроллер LAMD (Link_A_Media Devices) как раз таки отличается весьма эффективными технологиями сбора мусора, на уровне накопителей корпоративного уровня, что в общем неудивительно, так как его разработчики давно работают в enterprise-сегменте.

Так как объем ежедневно вводимых документов невелик, то мы ограничились единственным SSD при обязательных ежедневных бекапах. Косвенно эффект от применения твердотельного диска можно оценить по монитору производительности:

1cv83-SSD-004.jpg

Количество операций ввода-вывода существенно выросло, как и скорость обмена с диском, при этом длина очереди не превышает единицы. Это очень неплохие показатели, осталось проверить насколько наши действия ускорили работу непосредственно с 1С:Предприятие.

Для этого мы провели небольшое экспресс-тестирование в ходе которого измеряли время загрузки информационной базы и время группового перепроведения комплекта документов за определенный период времени. В ходе тестирования применялась конфигурация 1С:Бухгалтерия 3.0.27.7 на платформе 8.3.3.721.

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

1cv83-SSD-005.jpg

Как видим, перенос информационных баз на SSD сразу уменьшил время их загрузки более чем вдвое, а перепроведение ускорилось приблизительно на 30%. При этом полностью сняласть проблема с падением производительности при совместной работе.

Перенос на SSD временных папок позволяет сократить время загрузки более чем втрое и приблизительно в два раза ускорить проведение документов. Здесь есть над чем подумать даже убежденным приверженцам экономии ресурсов диска. Наше мнение по данному вопросу следующее, если вы купили SSD - то следует использовать его по полной программе.

Сделаем небольшое отступление. Используемый нами диск Corsair Neutron [CSSD-N128GB3-BK] имеет ресурс 2-3K циклов стирания/записи. Несложные расчеты показывают, что если ежедневно полностью перезаписывать всю емкость диска, то для исчерпания ресурса потребуется 5-8 лет. Кроме того статистика показвает, что основная причина выхода из строя SSD в течении гарантийного срока не связана с исчерпанием ресурса, а представляет собой производственный брак или ошибки в прошивке.

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


Как перенести лейбл в другое место?
Привет ! Написал программу, что при движении мышки лейбл убегает от неё. Теперь хочу добавить.


БД не подключается, если перенести ее в другое место
Здравствуйте. Я подключаю бд ms sql к приложению и все работает, данные в таблицах изменяются, но.

Перенести файлы программы в другое место
Суть в том, что есть программа (любая), есть её файлы в ProgramFiles. Можно ли сделать так, чтобы в.

перенести картинку в другое место и размножить её
есть страница, которая считывает из БД данные. делаю админку, что бы эти данные можно было.

На другой диск не переносил,но делал ramdisk,благо объём оперативки позволял.
Статья по которой делал:
1. Перенос кеша пользователя.

Для переноса кеша требуется выполнить 3 команды:

1. Удаление папки с кешем (по умолчанию: %USERPROFILE%\AppData\Roaming\1C\1Cv82)

rd /s /q "<Путь к папке на жестком диске>"
2. Создание папки на RAM диске:

mkdir "<Путь к папке на RAM диске>"
3. Создание символьной ссылки на папку RAM диска:

mklink /j "<Путь к папке на жестком диске>" "<Путь к папке на RAM диске>"
Данную процедуру нужно проделать для каждого пользователя. Проще всего написать батник вида:

mkdir B:\Users\1c\user1
rd /s /q "C:\Users\user1\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user1\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user1"
mkdir B:\Users\1c\user2
rd /s /q "C:\Users\user2\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user2\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user2"
mkdir B:\Users\1c\user3
rd /s /q "C:\Users\user3\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user3\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user3"

Следует понимать что содержимое RAM диска находится в оперативной памяти и исчезает при выключении\перезагрузке сервера. Не обнаружив папку на диске B 1с выдаст ошибку: "Ошибка при выполнении файловой операции '<Путь к папке с кешем>'" и работать не будет. Поэтому при загрузке сервера каждый аз нужно выполнять создание папок на RAM диске:

mkdir "<Путь к папке на RAM диске>"

mkdir B:\Users\1c\user1
mkdir B:\Users\1c\user2
mkdir B:\Users\1c\user3

Скрипт можно выполнять через планировщик заданий или через групповую политику:

gpedit.msc -> Конфигурация компьютера -> Конфигурация Windows -> Автозагрузка.

Так как в кеше хранится имя пользователя по умолчанию и при перезагрузке сервера или очисти RAM диска поле с именем пользователя сбрасывается на пустое. Если в конторе есть капризные бухгалтера, которые будут ныть, что им приходится делать лишние 2 клика мышкой, то можно принудительно установить имя пользователя путем дописывание строчки:

в дополнительные параметры запуска. Или строчки:

AdditionalParameters=/N"<имя пользователя 1С>" в файл

2. Перенос временных файлов пользователя.

Сразу нужно заметить, что при обновлении конфигурации 1с в каталог временных файлов записывается большой объем информации. Также многие программы при установке/обновлении пишут туда данные, которые им потребуются после перезагрузки ПК. Поэтому пользователю, который будет обновлять 1с или устанавливать/обновлять другие программы, переносить каталоги временных файлов нельзя.

Способ 1 Аналогично переносу кеша, только папка будет другой (по умолчанию: %USERPROFILE%\AppData\Local\Temp).

Слабым местом производительности файлового варианта 1С 8.2 всегда был жесткий диск. Существует технология RAM диск, которая позволяет при наличии достаточного объема оперативной памяти снизить нагрузку на файловую систему.

После установки софтинки появляется диск B размером 10% от объема оперативной памяти, туда и будем переносить кеш и временные файлы.

1. Перенос кеша пользователя.

Для переноса кеша требуется выполнить 3 команды:

1. Удаление папки с кешем (по умолчанию: %USERPROFILE%\AppData\Roaming\1C\1Cv82)

2. Создание папки на RAM диске:

3. Создание символьной ссылки на папку RAM диска:

mklink /j "<Путь к папке на жестком диске>" "<Путь к папке на RAM диске>"

Данную процедуру нужно проделать для каждого пользователя. Проще всего написать батник вида:

mkdir B:\Users\1c\user1
rd /s /q "C:\Users\user1\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user1\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user1"
mkdir B:\Users\1c\user2
rd /s /q "C:\Users\user2\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user2\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user2"
mkdir B:\Users\1c\user3
rd /s /q "C:\Users\user3\AppData\Roaming\1C\1Cv82"
mklink /j "C:\Users\user3\AppData\Roaming\1C\1Cv82" "B:\Users\1c\user3"

Следует понимать что содержимое RAM диска находится в оперативной памяти и исчезает при выключении\перезагрузке сервера. Не обнаружив папку на диске B 1с выдаст ошибку: "Ошибка при выполнении файловой операции '<Путь к папке с кешем>'" и работать не будет. Поэтому при загрузке сервера каждый аз нужно выполнять создание папок на RAM диске:

mkdir "<Путь к папке на RAM диске>"

mkdir B:\Users\1c\user1
mkdir B:\Users\1c\user2
mkdir B:\Users\1c\user3

Скрипт можно выполнять через планировщик заданий или через групповую политику:

gpedit.msc -> Конфигурация компьютера -> Конфигурация Windows -> Автозагрузка.

Так как в кеше хранится имя пользователя по умолчанию и при перезагрузке сервера или очисти RAM диска поле с именем пользователя сбрасывается на пустое. Если в конторе есть капризные бухгалтера, которые будут ныть, что им приходится делать лишние 2 клика мышкой, то можно принудительно установить имя пользователя путем дописывание строчки:

/N"<имя пользователя 1С>"

в дополнительные параметры запуска. Или строчки:

AdditionalParameters=/N"<имя пользователя 1С>" в файл

2. Перенос временных файлов пользователя.

Сразу нужно заметить, что при обновлении конфигурации 1с в каталог временных файлов записывается большой объем информации. Также многие программы при установке/обновлении пишут туда данные, которые им потребуются после перезагрузки ПК. Поэтому пользователю, который будет обновлять 1с или устанавливать/обновлять другие программы, переносить каталоги временных файлов нельзя.

Способ 1 Аналогично переносу кеша, только папка будет другой (по умолчанию: %USERPROFILE%\AppData\Local\Temp).

Способ 2. Изменение переменных среды.

Мой компьютер -> Свойства -> Дополнительно -> Переменные среды.

меняем значение %USERPROFILE%\AppData\Local\Temp на B:\Temp

Ту же самую операцию можно сделать импортом файла реестра:

Windows Registry Editor Version 5.00

Данная процедура значительного прироста производительности не дает. поэтому некоторые предлагают запихнуть на RAM диск целиком базу данных, что на мой взгляд довольно опрометчиво. Так как при отключении питания сервера все изменения внесенные в базу с момента её копирования на RAM диск пропадают.

В статье разберём по шагам, как создаётся RAM-диск в ОС Windows. Тестовая система — Windows Server 2008 R2. ПО для создания RAM-диска — Dataram RAMDisk. Перенос кэша 1С используем в качестве примера.

RAM-диск - это технология, которая создаёт диск в оперативной памяти RAM-диск - это технология, которая создаёт диск в оперативной памяти
На момент написания статьи официальный релиз программы на сайте разработчика — версия 4.4.0.RC36 . Объём RAM-диска до 1 Гб — ограничение бесплатной версии. Но, в ранней версии 4.4.0.RC19 — допускается создавать диск объёмом до 4 Гб.

Установка и настройка RAM-диска

  • Загружаем с официального сайта файл- инсталлятор и запускаем Dataram_RAMDisk_4_4_0_RC36.msi.
  • Принимаем лицензионное соглашение и нажимаем на «Install». После установки программа запустится автоматически запуск установки Dataram RAMDisk.
  • Настройки программы на вкладке «Setting» , больше параметров в «View — Advanced» .

Настройки — смотрим вкладку «Settings» сверху вниз:

1. Варианты «When I click start,» ( «когда я нажму «Создать»):

  • Create a new FAT disk (создать новый диск с файловой системой FAT).
  • Create a new unformatted disk (создать новый диск без форматирования).
  • Load a saved image (загрузить сохранённый образ диска) — рекомендуется.

2. Поле «From» : путь к файлу-образу RAMDisk.img.

3. Поле «Using» : количество мегабайт памяти для RAM-диска.

4. Указываем метку диска через выбор «Label it» , не указывать — «Leave it unlabeled».

5. Создать временный каталог Temp — «create», не создавать — «do not create» .

6. Рекомендуем также выбрать режим сохранения данных при выключении ПК — «save them on shutdown» . При следующем включении содержимое RAM-диска будет восстановлено с образа RAMDisk.img.

Выбрав настройки, нажмите «Start RAMDisk» и подтвердите установку устройства.

Данную процедуру нужно проделать для каждого пользователя. Проще всего написать батник вида:

mkdir B:\Users\1c\user1
mkdir B:\Users\1c\user2
mkdir B:\Users\1c\user3

Скрипт можно выполнять через планировщик заданий или через групповую политику:

gpedit.msc -> Конфигурация компьютера -> Конфигурация Windows -> Автозагрузка.

Так как в кеше хранится имя пользователя по умолчанию и при перезагрузке сервера или очисти RAM диска поле с именем пользователя сбрасывается на пустое.

Можно принудительно установить имя пользователя путем дописывание строчки:

в дополнительные параметры запуска. Или строчки:

Размещать каталог C:\Users\<Имя пользователя>AppData\Roaming\1C\1cv8 на рам-диске надо продуманно, так как там хранятся различные настройки.

2. Перенос временных файлов пользователя.

Сразу нужно заметить, что при обновлении конфигурации 1с в каталог временных файлов записывается большой объем информации. Также многие программы при установке/обновлении пишут туда данные, которые им потребуются после перезагрузки ПК. Поэтому пользователю, который будет обновлять 1с или устанавливать/обновлять другие программы, переносить каталоги временных файлов нельзя.

Аналогично переносу кеша, только папка будет другой (по умолчанию: %USERPROFILE%\AppData\Local\Temp).

Каталоги
С:\Temp
C:\Windows\Temp
общесистемных временных файлов также могут быть использованы 1С и их можно переносить на РАМ-диск, но делать надо это острожно, с учетом других приложений на сервере.

3. Перенос журнала регистрации

В клиент-серверном варианте информационной базы журнал регистрации располагается в подкаталоге рабочего каталога кластера. Имя подкаталога определяется идентификатором информационной базы. Перенос журнала регистрации на рам-диск надо совершать с учетом требований к критичности данных журнала регистрации.
Если ценность журнала регистрации не позволяет возможность случайных потерь данных, то необходимо совершить дополнительное копирование данных на другой диск (в том числе это может экспорт во внешнюю базу данных или просто копирование файлов ЖР).

Путь размещения лучше всего посмотреть через ключ D запуска сервера 1С.
Пример размещения C:\Program Files\1cv8\srvinfo\reg_1541\ad4b6360-d5be-4ddf-b55c-4af1496443f2\1Cv8Log

4. Перенос сеансовых данных.

5. если вы используете сверхбыстрые диски nvme (особенно pci 4.0)

Лучше сразу инсталлировать туда сервер 1С (и кластер), субд (MS SQL Server и т.п.), файлы баз данных, логи баз данных, файлы tempdb для MS SQL или pg_xlog/pg_wal для PostgreSQL, также перенести профили пользователей, temp операционной системы.

Читайте также: