@in_no_vation

Как загрузить приложение полностью в ОЗУ, чтобы не пользоваться жестким диском в работе?

Есть сервер на WS16 с 256гб оперативы, 2 х E5-2683v3 для терминального сервера на raid-0 из 4-х интеловских ssd.
Крутится на хосте подключенном к vSphere,
используется как терминальный сервер 1с 8.3 и как место хранения базы.
50-80 пользователей.
Хочется добиться более быстрой скорости работы путем отказа от использования стандартных накопителей и создать невыгружаемый пул из ОЗУ, чтобы 1с и все ее файлы типо базы находились сразу в оперативке и не загружались вообще а имели мгновенный отклик. А на харды лишь записывались изменения.
Прошу помощи в реализации ибо сам только слышал краем уха и норм гайд не нашел(
  • Вопрос задан
  • 2972 просмотра
Решения вопроса 2
@kmg4e
Не поможет.

Для проверки можете просто установить драйвер RAMDrive/RAMDisk. Этот драйвер позволяет создать диск, к примеру M:, который физически будет полностью размещен в оперативной памяти.

Разместите на нем всю БД (внимание!!! при перезагрузке все потеряете!!! только для тестов!!! )
Запустите и убедитесь, что сильно быстрее не стало.

В описанной вами схеме нет необходимости, так как 1С во время работы не обращается ко всем данным. А обращается только к малой их части, которые нужны для повседневной работы.

Структура БД 1С разработана с тем учетом, чтобы к примеру, остатки товаров/взаиморасчетов и пр. "кэшировались" в самой БД с помощью специальных записей (если не ошибаюсь, это происходит раз в месяц).

Гораздо более полезной будет настройка СУБД, с целью заставить её использовать всю доступную оперативную память и регулярно обновлять статистику для планов запросов.

UPD:
Для 1С не нужно столько оперативки.
Нужно более чтобы у процессора была больше частота. Даже число ядер если и меньше.
Ответ написан
@cross_01
Системный администратор
kmg4e прав это не целесообразно размещать базу в ОЗУ, есть большой риск потерять данные. Туда если и размещают то чаще tempDB.
Если база крутится на MS SQL то SQL загоняет эту базу как раз в ОЗУ, это одно из преимуществ базы SQL перед файловой.
Если нужно больше производительности, то размещайте пользовательскую базу на отделенном быстром диске, например SSD или массиве HDD, аналогично отдельно разместите tempDB (тут происходит очень интенсивный обмен), отдельно log tempDB и остальные логи.
Хорошо если вы разобьете tempdb на количество ядер ЦПУ (например SQL 2016 сам предлагает разнести на tempDB на 8 файлов если не ошибаюсь, это количество легко меняется вручную, еще лучше если вы эти файлы разложите на разные диски (согласен похоже на паранойю). Но разбив tempDB на количество ядер вы тем самым заставите работать все ядра ЦПУ а не 1-2 как это обычно бывает с 1С.
Обязательно проверьте что в BIOS включен Turbo Boost именно тогда ЦПУ вашего сервера будет работать на частоте 3000 а не 2000 , Ведь именно к частоте процессора 1С наиболее требовательна.
Не используйте виртуализацию для 1С.
Устанавливайте и 1С и SQL на 1 физический сервер, в этом случае вы еще сможете задействовать и shared memory что дает примерно +20% к производительности.
Также проверьте чтобы в настройках "Панель управления- электропитание" был включен режим высокая производительность, это даст тоже + к общей производительности (проверено лично на тестах).
Если интересно что то еще спрашивайте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Продавались специальные девайсы с аккумулятором для таких целей, куда устанавливаешь модули оперативных ЗУ, подключаешь в PCI-Express, и оно работает очень быстро, намного быстрее SSD
c2253bb59ae7472095d26c169b9bac0a.jpg
видел также модели где память распаянная на самой плате, и её не надо вставлять в слоты
вам такой "брутальный" вариант не подойдёт? что-бы не заморачиваться с контроллерами и модулями?
конечно надо будет настраивать автоматический какойто бекап, или дублирование какоето, по локальной сети и в облака, потому что уж очень сомнительное решение, зато скоростное
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы