Система 1С займає домінуюче становище на ринку автоматизації малого і середнього бізнесу. Якщо компанія вибрала облікову систему 1С, то зазвичай в ній працюють практично всі співробітники, починаючи від рядових фахівців і закінчуючи керівництвом. Відповідно, від швидкості роботи 1С залежить швидкість бізнес-процесів компанії. Якщо 1С працює з незадовільною швидкістю, то це безпосередньо позначається на роботі всієї компанії і на отриманні прибутку.
Фактично існує три методи прискорення 1С:
- Збільшення апаратних потужностей.
- Оптимізація налаштувань операційної системи і СУБД.
- Оптимізація коду і алгоритмів в 1С.
Рекомендовані рішення
Аудит продуктивності 1С
оптимізація 1С
Перший метод вимагає покупки устаткування і ліцензій, третій - великих трудовитрат програмістів і, як наслідок, обидва шляхи виливаються в значні фінансові витрати. В першу чергу потрібно звернути увагу на програмний код, так як ніяким збільшенням потужностей сервера неможливо компенсувати невірний код. Будь-який програміст знає, що за допомогою всього декількох рядків коду можливо створити процес, який повністю завантажить ресурси будь-якого сервера.
У разі, якщо компанія впевнена в оптимальності коду програми, а вона як і раніше працює повільно, зазвичай керівництво приймає рішення збільшити серверні потужності. У цей момент виникає логічне запитання: чого не вистачає, скільки і що необхідно в підсумку додати.
Компанія 1С на питання про те, скільки потрібно ресурсів, дає досить розпливчастий відповідь, про нього ми писали раніше в наших постах. І тому доводиться самостійно проводити експерименти і розбиратися, від чого ж залежить продуктивність 1С. Нижче описані експерименти з продуктивністю програми в компанії EFSOL.
При роботі з 1С 8.2, особливо з конфігураціями, які використовують керовані форми, був помічений дивний факт: 1С працює швидше на робочої станції ніж на потужному сервері. Причому все характеристики робочої станції гірше, ніж у сервера.
Таблиця 1 - Зміни, на яких проводилося первинне тестування
Робоча станція показує продуктивність на 155% більше, ніж сервер 1С з перевищують характеристиками. Ми почали розбиратися, в чому справа і звужувати коло пошуків.
Малюнок 1 - Заміри продуктивності на робочій стації тестом Гильова
Перша підозра було, що тест Гильова неадекватний. Заміри відкриття форм, проведення документів, формування звітів і т.д інструментами КВП показали, що тест Гильова видає оцінку пропорційну реальної швидкості роботи в 1С.
Кількість і частота ОЗУ
Аналіз доступної в інтернеті інформації показав, що багато пишуть про залежність продуктивності 1С від частоти пам'яті. Саме від частоти, а не від обсягу. Вирішили перевірити цю гіпотезу, так як у нас на сервері частота ОЗУ 1 066 Mhz проти 1 333 Mhz на робочої станції, а обсяг ОЗУ на сервері і так значно вище. Вирішили поставити відразу не 1066 Mhz, а 800 Mhz для того, щоб ефект залежності продуктивності від частоти пам'яті був наочніше. Результат - продуктивність впала на 12% і склала 39,37 одиниць. На сервер поставили пам'ять з частотою 1333 Mhz замість 1066 Mhz і отримали незначний приріст продуктивності - близько 11%. Продуктивність склала 19,53 одиниці. Відповідно, справа не в пам'яті, хоча її частота дає невеликий приріст.
Малюнок 2 - Заміри продуктивності на робочої станції після зниження частоти ОЗУ
Малюнок 3 - Заміри продуктивності на сервері після підвищення частоти ОЗУ
Наступна гіпотеза була пов'язана з дисковою підсистемою. Відразу виникло два припущення:
- SSD краще, ніж SAS диски, нехай навіть вони в 10 рейді.
- iSCSI працює повільно або некоректно.
Тому в робочу станцію поставили звичайний SATA-диск замість SSD, те ж саме зробили і з сервером - базу розмістили на локальному SATA-диску. В результаті, заміри продуктивності ніяк не змінилися. Швидше за все, це відбувається, оскільки є достатня кількість ОЗУ і диски практично ніяк не задіяні при виконанні тесту.
Процесори на сервері, звичайно, могутніше і їх два, але частота трохи нижче, ніж на робочої станції. Вирішили перевірити вплив частоти процесора на швидкодію: для сервера процесорів з більшою частотою під рукою не виявилося, тому знизили частоту процесора на робочої станції. Знизили відразу до 1,6, щоб кореляція виявлялася яскравіше. Тест показав, що продуктивність впала значно, але навіть з процесором 1,6 робоча станція видавала майже 28 одиниць, що практично в 1,5 рази більше ніж на сервері.
Малюнок 4 - Заміри продуктивності на робочій стації з процесором 1,6 Ghz
В даний момент існує два підозри, чому робоча станція працює швидше навіть з помітно гіршими характеристиками:
- Процесор. Тип процесора на робочої станції краще підходить 1С.
- Чіпсет. За інших рівних умов наша робоча станція має більш новий чіпсет, можливо, справа в ньому.
Ми плануємо закупити необхідні комплектуючі і продовжити тести, щоб остаточно з'ясувати, від чого ж більшою мірою залежить продуктивність 1С. Поки йде процес узгодження і закупівлі, ми вирішили виконати оптимізацію, тим більше, що це нічого не коштує. Були виділені наступні етапи:
Етап 1. Встановлення системи
Для початку слід виконати такі налаштування в BIOS і операційній системі:
- В BIOS сервера відключаємо всі налаштування по економії електроживлення процесора.
- Вибираємо в операційній системі план «Максимальна продуктивність».
- Процесор також налаштовуємо на максимальну продуктивність. Це можна зробити за допомогою утиліти PowerSchemeEd.
Етап 2. Встановлення SQL сервера і сервера 1С: Підприємства
Вносимо наступні зміни в налаштування сервера СУБД і 1С: Підприємства.
- Налаштування протоколу Shared Memory:
- Shared Memory включиться тільки на платформі починаючи з 1С 8.2.17, на більш ранніх релізах включиться Named Pipe - кілька поступається в швидкості роботи. Дана технологія працює тільки якщо служби 1С і MSSQL встановлені на одному фізичному або віртуальному сервері.
- Рекомендується перевести службу 1С в режим налагодження, хоч як це парадоксально це дає приріст продуктивності. За замовчуванням налагодження на сервері вимкнена.
- Налаштування SQL сервера:
- Нам потрібен тільки сервер, інші служби, які до нього ставляться і, можливо, хтось ними користується, тільки гальмують роботу. Зупиняємо і відключаємо такі служби як: FullText Search (у 1С власний механізм повнотекстового пошуку), Integration Services і т.д.
- Встановлюємо максимально відведений серверу призначається кількість пам'яті. Це необхідно для того, щоб sql-сервер розраховував на цей обсяг і чистив пам'ять завчасно.
- Встановлюємо максимальну кількість потоків (Maximum worker threads) і виставляємо підвищений пріоритет сервера (Boost priority).
Етап 3. Налаштування робочої бази даних
Після того, як сервер СУБД і 1С: Підприємства оптимізовані, переходимо до налаштувань баз. Якщо база ще не розгорнута з .dt файлу, і ви знаєте приблизний її розмір, то первинного файлу розмір ініціалізації краще відразу вказати «> =» розміру бази, але це справа смаку, він все одно виросте при розгортці. А ось Автозбільшення розміру треба обов'язково вказати: приблизно по 200 МБ на базу і по 50 МБ на лог, тому що значення за замовчуванням - зростання по 1 МБ і по 10% дуже сильно гальмують роботу сервера, коли йому за будь-якої 3й транзакції треба файл збільшувати. Також зберігання файлу бази і файлу лога краще вказати на різних фізичних дисках або RAID групах, якщо використовується RAID масив, і обмежити розростання балки. Рекомендується виносити файл Tempdb на високошвидкісний масив, так як СУБД до нього досить часто звертається.
Етап 4. Налаштування регламентних завдань
Регламентні завдання створюються досить просто за допомогою Maintenance Plan в розділі Management, використовуючи графічні інструменти, тому докладно описувати, як це робиться не будемо. Зупинимося на тому, які операції необхідно виконувати для підвищення продуктивності.
- Дефрагментацію індексів і оновлення статистики потрібно виробляти щодня, тому що якщо фрагментованість індексів> 25%, це різко знижує продуктивність сервера.
- Дефрагментація і оновлення статистики - робиться швидко і не вимагає відключення користувачів. Також рекомендується робити щодня.
- Повна реіндексація - робиться з блокуванням БД, рекомендується робити хоча б раз на тиждень. Природно, після повної переиндексации відразу ж робиться дефрагментація індексів і оновлення статистики.
У підсумку, за допомогою тонких налаштувань системи, SQL сервера і робочої бази, нам вдалося підвищити продуктивність на 46%. Заміри були проведені за допомогою інструменту 1С КВП і за допомогою тесту Гильова. Останній показав 25,6 одиниць проти 17,53 які були спочатку.
Ваша 1С працює повільно? Замовте ІТ-обслуговування комп'ютерів і серверів фахівцями з багаторічним стажем компанії EFSOL або перенесіть свою 1С на потужний і відмовостійкий віддалений сервер.
Системна інтеграція. консалтинг