09.02.06
Инструкция по ускорению:
После этого документы будут проводиться быстрее.
09.02.06
Предв.результат
Прописал МОЛ для складов.
Стал перепроводить документы.
Сначала установил "контроль остатков=не контролировать".
Споткнулся на первом же документе (Перемещение ТМЦ 01.01), который считывает информацию из регистра партий - 10-30 секунд на то, чтобы считать единственную строчку. Интересно, что "Начальный ввод", не считывающий остатков - проводится мигом.
И до тех пор, пока не поставил Контроль остатков=по фирме, скорость маленькая, очень медленно выполняется ВыгрузкаИтогов.
А когда поставил "по фирме", стало работать практически нормально.
Вот только закавыка - теперь перепровести/пересоставить документы так, чтобы удовлетворяло условию "контроль остатков=по фирме". Наверное, придется делать специализированный подбор остатков и менять фирму-склад.
И еще: быстро работает, когда создаешь-проводишь документы в оперативном режиме (когда каждый проводимый документ совпадает с точкой актуальности). Если создаешь-проводишь документы прошлых (по отношению к ТА) дней - время обработки каждого документа увеличивается секунд на 10 - рассчитываются итоги регистров по состоянию на документ.
Для проверки сменил обратно "Контроль остатков=по компании". И запустил тест: Брр.. Ужасно долго. Почему-то даже проведение приходного документа долго. Фигня какая-то.
09.02.06
Скорость обработки в зависимости от режима контроля остатков
По фирме | 9 сек |
по упр.аналитике | 43 сек |
по юр.лицу | 75 сек |
по компании | 410 сек |
не контролировать | 404 сек |
09.02.06
Рекомендации Павла Шемякина
Будут размещаться на Советы Шемякина
08.02.06 21:00
Wow! Зафиксировал тормоза конфигурации С-П по сравнению с типовой ТиС
Пробовал разные варианты установки сервера и конфигураций, вставил трассировку действий (запись/проведение) и вдруг заметил:
проведение документов (и ПриходТМЦ и Реализация) значительно медленнее типовой ТиС
Запись документов происходит фактически моментально, а на проведение тратится от 30 секунд в приходе до 5 минут в реализации !
Это вроде не зависит от склада, с которым работаем.
Да, и самое главное - это в однопользовательском режиме !
Проверил это же в файл-серверной версии - аналогично
Будем искать тормоз при проведении документа !
От чего может зависеть замедление:
- либо у нас ситуация с данными принципиально отличается от типовой ТиС (много складов)
- либо чего-то мы навставляли тормозного при проведении
План работ по производительности:
- фиксация фактов
- улучшение оборудования (сервера, сети, р/м)
- улучшение механизмов 1С
Для начала посмотрим, __с какой скоростью 1С работает__.
Для измерения можно скачать обработку http://servplus.pbwiki.com/f/Test.rar которая создает и проводит порции приходных и расходных документов, а затем выдает скорость обработки (или, наоборот, время обработки документа).
Страница обработки "Тест производительности"
Если измерить производительность 1С в самых "лучших" условиях: один пользователь, на хорошей машине, можно даже при размещении ИБ не в сети, а на локальном диске - то мы получим максимальную скорость обработки.
Это будет в дальнейшем ориентиром и оценкой для более сложных и нагруженных случаев, а также для оценки, насколько наши добавленные в конфигурацию особенности замедлили работу системы, оценки замедления при росте БД.
Имея измеритель, мы можем оценить также, насколько хорошо и быстро работает сервер и сеть.
Я измерил скорость работы типовой 1С ТиС, получил:
- у себя на ноутбуке, в файл-серверном варианте - 8-10 секунд на документ (на удивление медленно!)
- SQL на сервере офиса Капитан в однопользовательском варианте, работа с ноутбука - 12-15 секунд на документ
- SQL на сервере офиса Капитан в однопользовательском варианте, работа с сервера:
- тест 1 (начало работы с демо-базой) - 4-5 секунд на документ
- тест 2 (после нескольких часов набивки в демо-базу) - 9-10 секунд/документ
- тест 3 (после перестарта 1С, сервер не перезапускался) - снова 4-5 секунд на документ
Результаты по конфигурации "Сервис-Плюс":
- ноутбук, локальная ИБ - 9-10 секунд/документ
Выводы:
- Вряд ли нам удастся разогнать 1С для обработки средней накладной быстрее чем за 10 секунд. И даже 30 секунд на обработку - еще нормально.
- Мощность процессора, на котором исполняется 1С, сильно влияет на скорость обработки.
- Во время работы 1С происходит некоторое "насыщение" со снижением скорости обработки, после перезапуска 1С производительность восстанавливается до прежних значений
Попутные наблюдения:
- занятость процессора при обработке SQL-запросов: даже одна рабочая станция занимает наш офисный сервер на 100%.
- Файл подкачки фактически не трогается.
- если для БД изначально не выделить много места, наблюдаются необъяснимо-неконтролируемые "зависания" обработки запросов. Видимо, выделяется доп.память и на реорганизацию идет время.
- когда решил перестартовать 1С после долгой работы, повторный запуск-долго (неск.минут) идет "Установка соединения с сервером базы данных"; видимо сервер при этом обновляет какие-то параметры.
Скорость обработки документов, наверное, должна зависеть от размера БД. Кроме того, в тесте нагрузки нужно указать именно такой средний размер документа, который есть на самом деле.
Для оценки, какие документы есть в БД можно использовать обработку к_АнализаторБД http://servplus.pbwiki.com/f/AnalizDB.rar
Для измерения производительности системы в многопользовательском режиме:
- добавлена возможность синхронизации старта обработки к_ТестНагрузки (чтобы все стартовали одновременно) - обновленную версию можно скачать
- добавлена возможность автозапуска обработки к_ТестНагрузки прямо при запуске системы: в глобальный модуль в процедуру ПриНачалеРаботыСистемы добавить строки
Если ИмяПользователя()="Администратор" Тогда
ОткрытьФорму("Отчет", "Автозапуск", КаталогИБ()+"ExtFormsк_ТестНагрузки.ert");
КонецЕсли;
Инструкция по организации многопользовательского теста:
- найдите комнату, где есть несколько компьютеров, на которых вы одновременно запустите много-много одинаковых 1С и будете мерять совокупную производительность; обеспечьте наличе 1С на всех р/м; разверните их экраны в одну сторону - к себе
- создайте новую БД на SQL, заведите на сервере новую конфигурацию 1С, подсоединитесь к БД, проверьте работу, в т.ч. так чтобы из ExtForms этой конфигурации вызывалась обработка к_ТестНагрузки
- заведите пользователя Администратор со всяческими правами и проверьте, как автозапускается к_ТестНагрузки, поле "Рабочий каталог" для этого пользователя не заполняйте. Для нового пользователя установите Основной склад - оптовый (в демо-ТиС это Главный склад), фирму и полномочия, позволяющие проводить документы, превышающие остаток кредита (в демо-ТиС - Администратор).
- создайте ярлык для автозапуска 1С, где в поле Объект укажите команду для запуска 1С с указанием ИБ и пользователя, типа: "C:\Program Files\1Cv77\BIN\1Cv7s.exe" enterprise /NАдминистратор /D"F:\DemoDB.sql\". Проверьте автозапуск с ярлыка.
- Проверка-подготовка к многопользовательскому запуску: запустите к_ТестНагрузки с одного р/м, установите нужные параметры теста (продолжительность, параметры "рабочей смеси") и сохраните настройки обработки (и установите Сохранять автоматически для настроек). Запустите 2-й экземпляр, нажмите "Общий старт" и пронаблюдайте одновременную работу. Подготовьтесь к массовому запуску: установите продолжительность и сохраните настройки.
- Приступайте к тестированию: на всех рабочих местах запустите нужное количество экземпляров 1С (используйте подготовленный ранее ярлык). При запуске лучше дождаться, когда предыдущее приложение реально стартует (последовательно появляются сообщения в "Запуск приложения", "Соединение с БД" - до тех пор пока не появится обычное "1С:Предприятие".
- На одном компьютере с 256 Мбайт ОЗУ можно запустить 5-6 экземпляров 1С (у меня получалось стролько, дальше - доп. тормоза при запуске). Может, у вас получится и больше.
- Чтобы смоделировать работу (гипер-активную!) 30 пользователей, вам понадобится 5-6 компьютеров.
- Для наблюдения процесса лучше разместить несколько 1С-окон слева-направо (или сверху-вниз), чтобы одновременно наблюдать строку состояния
- После завершения теста - запишите результаты (программа сама не ведет лог-файл)
Задачи теста (что нужно пронаблюдать):
- скорость обработки документов (для одного процесса и для системы в целом). Если наблюдается линейный рост времени обработки в зависимости от числа процессов, значит, центральный обрабатывающий узел работает с насыщением и его не удастся "разогнать" увеличением числа одновременно работающих. Если же, до некорого числа одновременно работающих процессов, совокупная скорость быстрее, чем сумма одиночных скоростей - значит, у центр.обрабатывающего узла есть еще резервы, он может "потянуть больше"
- загруженность процессора и памяти сервера, на котором работает SQL
- какие сообщения чаще появляются в статус-строке рабочих станций ("Ожидание блокировки журнала", "Выполнение запроса"-это чтение остатков или что еще)
- есть ли падение скорости обработки со временем (возможно за несколько часов на 40-50%)
Варианты теста:
- зависимость скорости обработки от скорости ЦП SQL-сервера
- зависимость от числа процессоров
Что можно не мерять:
- насколько медленнее работает система, когда на сервере еще что-то работает (на сервере ничего больше не должно работать)
- зависимость от доступной ОЗУ - уменьшать все равно не будем, а увеличивать вроде незачем - можно пронаблюдать использование ОЗУ
Comments (0)
You don't have permission to comment on this page.