gifts2017

Тормоза на файловой базе - как избежать (из недавнего опыта)

Опубликовал Алексей Леонов (axelerleo) в раздел Администрирование - Оптимизация БД (HighLoad)

1С запускается по две минуты? Журнал документов открывается по 40 секунд? Документ проводится почти минуту?
Знакомая ситуация, если вы используете файловую версию с сетевым доступом. Самый распространенный совет - ставить сервер, и забыть про тормоза.
Но как быть, если в 1С у вас всего работает 2-3 человека, и тратить деньги на покупку серверных лицензий - явно невыгодно?
В данной статье рассмотрены несколько практических шагов, которые были предприняты у клиента для ускорения работы файловой базы.
Платформа 1С 8.3, управляемые формы, тонкий клиент, база - Управление Торговлей 11.

Симптомы пациента и анамнез:

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

Основные признаки  работы блокировок: 

  • быстрая работа пользователя с базой по сети в монопольном режиме и крайне медленная - при одновременной работе нескольких пользователей
  • быстрая работа пользователя с локальной базой на сервере и медленная - по сети
  • процессор на сервере почти не занят
  • загрузка гигабитной сетевой карты меньше 5%
  • обращения к файловой системе чуть менее 10 мбайт/сек

Итак, мне досталась задача - сделать так, чтобы в 1С могли одновременно работать целых три пользователя! Смешно, не так ли?

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

Счастье было бы неполным, если бы не замечательные операционные системы - на компьютере и на одном ноутбуке Windows 7, на другом - Windows 8.

При попытке одновременно провести документы на ноутбуках один тупил около минуты, а второй вылетел из 1С с текстом ошибки "не удалось заблокировать таблицу...".

Запуск 1С на ноутбуке - это отдельное шоу, длившееся порядка 3 минут!

На многих ресурсах сталкивался с советом перейти на работу в терминальном доступе. К сожалению, Windows 7 не позволяет штатными средствами превратиться в сервер терминалов - максимум одно активное подключение. При этом остальные сеансы не прекращаются, можно переподключиться под другим пользователем - "выкинув" при этом предыдущего пользователя, но не завершив его сеанс. Поэтому следует перенести 1С на серверную ОС, где таких ограничений нет. Клиент на свой страх и риск решил проблему вместо этого с помощью сторонней утилиты Windows7_SP1_RDPhack.

 

Но на этом приключения не закончились. Даже в терминальном подключении остались значительные тормоза. Вновь меня выручили всемогущие поисковики. Ниже даны советы по ускорению файловой 1С, которым я последовал:

1. Отключить использование протокола сети IPv6, настроить адресацию на "старом" IPv4.

2. Добавить процессы 1С в исключения брандмауэра Windows, а также в исключения антивируса, либо отключить их вовсе (более рискованно, но простой тест показал увеличение скорости перепроведения документов при отключенном антивирусе Avast в разы!)

3. Запустить индексацию полнотекстового поиска в 1С либо выключить его вовсе

4. Запустить Тестирование и исправление базы, проверку утилитой ChDbfl

5. Запустить в конфигурации пункт Проверка конфигурации (если конфигурация не типовая, это может быть полезным). По результатам проверки конфигурации она волшебным образом уменьшилась в размерах почти на треть. Что уж и как до меня обновляли приходящие программисты - особо не вникал, но факт налицо.

6. Отключить ненужные функциональные опции.

7. Настроить права пользователям. (Этот и предыдущий советы показались глупостью, до тех пор, пока я не понаблюдал за отрисовкой управляемых форм при открытии списка документов. Чем меньше лишнего в управляемом интерфейсе - тем , как правило, быстрее он работает)  

8. Запустить пересчет итогов и восстановление последовательности (значительный прирост может быть только в случае, если долгое время итоги не восстанавливались)

9. Указать "Скорость соединения - низкая" в настройках списка баз (это особого результата не дало, разве что отключились картинки у подсистем :))

После выполнения всех этих шагов файловая база 1С заработала на порядок шустрее. Запускаться стала максимум секунд за 10, а скорость перепроведения документов увеличилась в среднем в 12 раз.

 

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

P.S: А запустить файловую 1С, используя сетевой доступ к общей папке - все же нереально, т.к. даше самый шустрый твердотельный диск, оперативная память и процессор уткнутся в сетевые блокировки, и работа более одного пользователя будет фактически невозможна. Речь идет конкретно о конфигурации УТ 11.1. Самописные небольшие конфигурации вполне могут работать весьма быстро даже в файловом варианте.

 

Дополнения из комментариев к публикации:

Дефрагментация диска с файловой базой

Свертка базы (может оказаться полезной, если база большого объема, например, за несколько лет). У клиента база была достаточно молодая, поэтому свертка была нецелесообразна.

Модернизация аппаратной части - более быстрый винчестер, новый свитч, процессор, и т.д.

Установить на веб-сервер, доступ с помощью тонкого клиента. Тут мнения разделились. Кто-то говорит, в разы быстрее, кто-то - что ускорения не отмечено.

Буду признателен за комментарии и ваши голоса! :)

 

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. борян петров (TODD22) 12.07.15 15:22
У меня работало 7 бухгалтеров в файловой БП 2.0 с включенным RLS. Первые пол года было нормально... потом производительность стала падать.
УТ 11 изначально видимо задумывалась для более крупных организаций чем 3 бухгалтера и с расчётом на то что будет сервер.
2. Ivan Khorkov (vano-ekt) 12.07.15 15:51
Windows7_SP1_RDPhack
а 1С то хоть под эмулем?
3. Andrei Shibanov (shibanovan) 12.07.15 16:48
Нужно было организовывать работу через web-сервер. И было бы лицензионно
orfos; Исключение; gigapevt; JohnConnor; BigB; Inkeeper; Evil Beaver; ekaruk; +8 Ответить
4. Андрей Овсянкин (Evil Beaver) 12.07.15 19:13
Ну собственно, тут уже ответили, я просто разверну подробнее:
Ставите IIS и поднимаете веб-доступ к базе. Причем это не обязательно веб-клиент, тонкий клиент тоже умеет работать по HTTP.
В результате, у вас к файлу базы будет иметь доступ только один единственный процесс - IIS. И он будет делать это не через сетевые протоколы, а локально. Профит.
dj_serega; 2tone; orfos; syuzyov; Yashazz; Avet01; Исключение; Dimkasan; Созинов; awa; i.c.h; axelerleo; +12 Ответить 1
5. Алексей Леонов (axelerleo) 12.07.15 19:42
(2) vano-ekt, Удивительно, но 1С у клиента оказалась лицензионная, с программными лицензиями, причем были активированы однопользовательские лицензии.
А вот операционка стояла Windows 7 Максимальная, разумеется "лицензионная":)
6. Андрей Блохин (Razlagutt) 13.07.15 09:17
(4) Evil Beaver, а что вэбовский вариант реально увеличит скорость? Я просто читал, что вэб требует ВСЕГДА свободный 80-й порт. И типа вообще вэб-режим очень капризный и нестабильный. Так ли это? Как на самом деле?
7. Роман Осадченко (cleaner_it) 13.07.15 14:59
(6) Razlagutt, я пробовал поработать. Прирост скорости имеется, но были особенности при работе с табличными документами - из них нельзя было удалить строки (просто отсутствовала такая возможность). Долго разбираться не стал, через пару дней вернул тонкий клиент.
Razlagutt; +1 Ответить
8. Антон Стеклов (asved.ru) 14.07.15 06:03
(6) Razlagutt, покажите мне, где вы это прочитали, и я порву автора как грелка, надутая на 120 атмосфер - тузика. Полный бред.

Веб-сервер можно разместить на любом свободном порту, главное - не забыть указать этот порт на клиенте.

Работа в браузере действительно менее стабильна и более медленна. Но никто не мешает использовать тонкий клиент, подключающийся к веб-серверу.
ogre2007; west__; Razlagutt; +3 Ответить
9. Антон Стеклов (asved.ru) 14.07.15 06:13
как быть, если в 1С у вас всего работает 2-3 человека, и тратить деньги на покупку серверных лицензий - явно невыгодно


Если у конторы нет 14400 руб. на сервер МИНИ, о каких 2-3 пользователях может идти речь? Ну нечего нескольким пользователям делать в столь мелком "бизнесе".

А сервер - это не только ценный мех скорость работы, но и гораздо большая надежность данных.
10. Ivan Khorkov (vano-ekt) 14.07.15 08:04
кстати, об информационном партнере, ПО которого предлагается взламывать в статье - чет по ссылке нет статьи об ИС на его сайте больше
11. Алексей Леонов (axelerleo) 14.07.15 08:57
(10) vano-ekt, Никого из наших уважаемых "западных партнеров", как говорит Путин, взламывать нигде не предлагается:) Это не моя вотчина - взламывать операционные системы:) на то есть специально обученные эникейщики.
Бывают клиенты, которые пытаются экономить на всем на чем можно и нельзя - мол, у нас молодой бизнес, все деньги в рост. Через полгода-год, никуда не денутся, поставят и лицензионные ОС, и мини-сервер.
12. Сергей (Che) Коцюра (CheBurator) 14.07.15 09:55
Весьма способствует дефрагментация диска с базой и собственно файла базы.
kite2; axelerleo; +2 Ответить
13. Ivan Khorkov (vano-ekt) 14.07.15 10:20
(11)
У клиента вопрос был решен с помощью сторонней утилиты Windows7_SP1_RDPhack.

14. Алекс Н (Чарик) 14.07.15 10:41
База начнет разрастаться и тормоза появятся вновь. с этим столкнулся, поставив бушку 3.0 по сети. Здесь решение только одно - переносить на SQL, или ставить мини-сервер, или выносить базу в облако. Особенно если по сети будет работать несколько пользователей.
15. bulpi bulpi (bulpi) 14.07.15 11:47
"А запустить файловую 1С, используя сетевой доступ к общей папке - все же нереально, т.к. даше самый шустрый твердотельный диск, оперативная память и процессор уткнутся в сетевые блокировки, и работа более одного пользователя будет фактически невозможна."

Ну не надо так категорично. Идиотскую УТ 11 , наверно, нельзя. А нормальную свою конфигурацию - можно, я так делал.
klinval; Berrimor; axelerleo; +3 Ответить
16. Сэр Артур (kite2) 14.07.15 16:47
* К сожалению, Windows 7 не позволяет штатными средствами превратиться в сервер терминалов - максимум одно активное подключение

Сейчас уже точно не помню, но кажется Windows 7 позволяет делать до 4-х активных подключений безо всяких серверов терминалов. Там есть что-то типа галки "Удаленное управление". У меня была Windows 7 Ultimate. Может это от версии зависит? Кажется все-таки 4 подключения можно.
17. Сергей Созинов (Созинов) 14.07.15 19:11
Спасибо за статью, все грамотно описано. Разве только добавить что некоторые операции вроде (пункты 3,4,8) нужно делать регулярно с разной периодичностью. Плюс недавно появился 1С:Предприятие 8.3 сервер МИНИ на 5 подключений, стоит в районе 15000, что уже могут потянуть мини организации.
axelerleo; +1 Ответить
18. Сергей Созинов (Созинов) 14.07.15 19:14
(11) axelerleo, до прихода особого отдела во многих компаниях есть взломанные продукты, после хорошего штрафа желание ставить пиратку пропадает. Верно вы говорите.
19. Виталий Васильев (orfos) 14.07.15 21:11
На веб-сервере никакого реального ускорения заметно не было. Тонкий клиент для всех тежелых баз (УТ11, БП30) дает реальное ускорение. Правда это ускорение в стили 1С. Но все же документ провести можно.
20. Сергей Буланкин (bulas) 15.07.15 09:36
Про Свертку базы ни слова - уже не помогает?
21. Алексей Леонов (axelerleo) 15.07.15 09:38
(20) bulas, В том и юмор, что база крохотная. Поэтому про свертку ни слова. Более того, тормозить при сетевом доступе файловая УТ 11 начнет даже пустая :)
22. Soltan - (SOLTAN) 15.07.15 10:19
(2)(13)
Ставьте эту утилитку Windows7_SP1_RDPhack и будет счастье)
Подменяет стандартную termsrv.dll в которой возможно одно подключение и снимает ограничение по количеству подключений!
Дальше через "Подключение к удаленному рабочему столу".....все пользователи подключаются к вашему "серверу".
Создаете на "сервере" пользователей и они независимо друг от друга работаю.
За счет этого база лежит на сервере и все пользователи работают на сервере, отсутствуют потери сетевого доступа к базе!
Проверенно работает, надежно!
поставил и забыл.
23. Артем Титеев (a_titeev) 15.07.15 10:40
Аппаратные проблемы смотреть нужно все же в первую очередь. На практике видел как замена свитча решила проблему медленной работы в УТ 11 второго пользователя. Лично у себя, еще пример, менял винчестер на более быстрый - 3.0 стала открываться на ноуте за секунду.
Кстати, совет с отключением IPv6 скорее вредный. Я уж не говорю про брэндмауэр. Это можно позволить себе только ради экспериментов. Так например нормально, и не поимев проблем, выключит IPv6 не каждый вот, например, можно посмотреть.
А вот остальное, это конечно да.
24. Владислав Козак (vkozak) 15.07.15 10:42
Спасибо за статью.
Все делал в отдельности, но вот так собранное в единое и систематизированное.
25. Константин Саватеев (kksav) 15.07.15 15:28
БП3.0 + УТ11.0 - всё файловое на простом сервере core i3, по 100 мб сети работают 5 человек + я подключаюсь из удаленного офиса работает прекрасно. Правда на SSD, но острой необходимости в сервере 1с не ощущается.
Тормозов в версии платформы 8.3.6 стало гораздо меньше.
bellaform; +1 Ответить
26. Бугор (Бугор) 15.07.15 20:56
А серверу МИНИ, какую СУБД использовать, чтоб бесплатно и не нарушая лицензионной политики компании в части ПО? MS SQL Express для базы БП 3.0 подойдет?
27. valery ziyazutdinov (west__) 16.07.15 00:30
(26)
До поры до времени подойдёт. У MSSQL Express 2014 ограничение на размер БД 10Гб. И по-моему ещё на использование оперативы и процессора (только 1), но это уже не критично. С другой стороны я нигде не видел, чтобы 1С официально разрешала использование версии Express (хотя Майкрософт разрешает использовать его для работы). Видимо 1С не рекомендует в связи с ограничениями.
28. Антон Стеклов (asved.ru) 17.07.15 05:56
(27) west__, а явное "не рекомендует" Вы где-то видели?

1С вообще не дает каких-либо общих рекомендаций по выбору СУБД.
29. Антон Стеклов (asved.ru) 17.07.15 06:00
(26) Бугор, вполне. Пара нюансов: операции обслуживания БД и резервного копирования придется делать средствами внешнего планировщика. И сжатия архивов нет.
30. Сергей Созинов (Созинов) 21.07.15 19:38
(26) Бугор, postgresql от 1С. На MS SQL Express должно встать, но по моему это нарушает лицензионное соглашение Microsoft, хотя я не помню - для коммерческого использования он разрешается?
31. Сергей Жемойтель (djam_arttek) 26.08.15 15:23