Нагрузочное тестирование Salary подтвердило, что система справляется с большими объёмами данных, поддерживает эффективную многопоточность и обеспечивает предсказуемое время расчёта. Делимся подробностями и результатами проверки производительности системы, созданной для расчёта заработной платы и базовых HR-процессов крупных компаний.
Технические характеристики тестовой среды
Тестирование проводилось на типовой серверной конфигурации без искусственного завышения производительности.
Важно: мы намеренно проводили испытания в «стрессовых» для софта условиях, на сервере без SSD-накопителей. Несмотря на то, что отсутствие SSD замедляет операции чтения и записи в базу данных, система Salary продемонстрировала высокие показатели скорости. Это гарантирует запас прочности, в реальной производственной среде на современном оборудовании скорость расчётов будет выше.
Конфигурация сервера
| Состав | Описание/Характеристики | Количество |
|---|---|---|
| Аппаратная конфигурация | ||
| Серверная платформа 2U | Серверная плата Intel® S2600WTT (C610, 2x2011v3, 24xDDR4 RDIMM, 12x3.5 HotSwap, (SW RAID 0, 1, 10, opt. 5), 2x10GLan, 1x1100W) | 1 |
| Процессор | Intel Xeon E5-2670 v3 OEM, Число ядер: 12. Частота ядра: 2.30 ГГц, 2014 год выпуска | 1 |
| Память | KVR21R15D4/16 DDR4 PC4-17000 (DDR4 2133 МГц) CL15 16 Гб | 8 |
| Контроллер | Adaptec ASR-8805 SGL 2277500-R | 1 |
| Батарея | Adaptec AFM-700 SUPERCAP Kit 2275400-R | 1 |
| Кабель | SAS Adaptec 2279700-R | |
| Накопитель | Жёсткий диск HDD 300 Gb SAS 12Gb/s HGST Ultrastar C15K600 | 4 |
| Накопитель | 2 | |
| Накопитель | Жёсткий диск HDD 300 Gb SAS 12Gb/s Toshiba | 3 |
| Накопитель | 1 | |
| Накопитель | Жёсткий диск HDD 900 Gb SAS 12Gb/s Seagate Exos | 2 |
| Программное обеспечение | ||
| ОС | CentOS 7 | |
| СУБД | PostgreSQL 11 | |
Исходные данные
Нагрузочное тестирование проходило на примере предприятия с такими исходными данными и условиями:
| Показатель | Значение | Процент от общего количества сотрудников |
|---|---|---|
| Всего физических лиц | 139 998 | |
| Всего сотрудников | 136 611 | |
| Работающих сотрудников | 136 611 | |
| Всего подразделений в структуре | 18 147 | |
| Листовых подразделений | 9 508 | |
| Штатных единиц | 136 612 | |
| Всего видов начислений и удержаний | 35 | |
| Оклад/тариф: Тарифная ставка | 58 548 | 43 |
| Оклад/тариф: Оклад | 78 064 | 57 |
| Надбавки/доплаты: Надбавка за ненормированный рабочий день | 136 611 | 100 |
| Надбавки/доплаты: Доплата за наставничество | 136 611 | 100 |
| Разовые начисления: [712] Материальная помощь, оказываемая работодателями своим работникам, а также бывшим своим работникам, уволившимся в связи с выходом на пенсию по инвалидности или по возрасту | 136 611 | 100 |
| Разовые начисления: [414] Индивидуальная премия | 136 611 | 100 |
| Удержания: профсоюзные взносы | 136 611 | 100 |
| Удержания: [816] Удержание по предоставленным работодателем займам и ссудам | 6 829 | 5 |
| Удержания: [810] Исполнительные документы (взыскание алиментов на несовершеннолетних детей) | 6 829 | 5 |
| Отвлечения: Простой по вине работодателя | 1 367 | 1 |
Результаты расчётов
| Результаты расчёта | Значение |
|---|---|
| Результаты расчёта заработной платы (ЗП). Всего в результатах расчёта строк: | 686 227 |
| Результаты расчёта ЗП. Всего в результатах расчёта начислений: | 686 227 |
| Результаты расчёта ЗП. Всего в результатах расчёта удержаний: | 283 327 |
| Результаты расчёта ЗП: [001] Оплата по окладу | 78 064 |
| Результаты расчёта ЗП: [801] НДФЛ 13% | 136 611 |
| Результаты расчёта ЗП: [003] Оплата по часовой тарифной ставке | 58 548 |
| Результаты расчёта ЗП: [270] Надбавка за ненормированный рабочий день | 137 668 |
| Результаты расчёта ЗП: [260] Доплата за наставничество | 137 668 |
| Результаты расчёта ЗП: [712] Материальная помощь, оказываемая работодателями своим работникам, а также бывшим работникам, уволившимся в связи с выходом на пенсию по инвалидности или по возрасту | 136 611 |
| Результаты расчёта ЗП: [817] Профсоюзные взносы | 136 611 |
| Результаты расчёта ЗП: [414] Индивидуальная премия | 136 611 |
| Результаты расчёта ЗП: [810] Исполнительные документы (взыскание алиментов на несовершеннолетних детей) | 6 829 |
| Результаты расчёта ЗП: [816] Удержание по предоставленным работодателем займам и ссудам | 3 276 |
| Результаты расчёта ЗП: [710] Оплата простоя по вине работодателя | 1 057 |
| Результаты расчёта страховых взносов (СВ): Всего строк: | 546 444 |
| Результаты расчёта СВ: Всего строк (детализация в разрезе начислений): | 3 415 275 |
Показатели производительности расчётов на тестовой системе
Система поддерживает различные сценарии запуска расчётов в зависимости от организационного регламента предприятия. Расчёты могут выполняться:
- по одному сотруднику;
- выборочно по списку сотрудников;
- по подразделению или нескольким подразделениям;
- по предприятию в целом.
Для централизованных расчётов на крупных предприятиях применяется механизм распараллеливания расчётов.
В настройках системы, исходя из проектных особенностей, устанавливается количество поддерживаемых потоков расчёта: общее количество одновременно запущенных потоков и количество сотрудников в каждом потоке.
При запуске расчёта сотрудники автоматически разделяются по группам (сотрудников в группе равно количеству сотрудников в каждом потоке). Из сформированных групп запускается необходимое (максимальное) количество потоков (по потоку на ядро процессора). По мере расчёта каждого потока система последовательно подгружает новые группы сотрудников, обеспечивая равномерную загрузку ресурсов.
Для нагрузочного тестирования использовались пяти и десятипоточные расчёты.
- Расчёт табелей и нарядов (оплаты за отработанное время и сдельной оплаты труда)
136 611 сотрудников в 10 потоков — 20 минут по 500 сотрудников.
- Итоговый расчёт заработной платы и налогов (НДФЛ) (включая распределение по аналитикам затрат и генерацию проводок)
136 611 сотрудник за 1 час 21 минуту в 5 потоков по 50 сотрудников
или
136 611 сотрудник за 33 минуты в 10 потоков по 50 сотрудников.
- Расчёт страховых взносов (включая распределение по аналитикам затрат и генерацию проводок)
136 611 сотрудников один фонд (кроме ПФР) за 10 минут в 5 потоков по 1000 сотрудников
136 611 сотрудников один фонд (ПФР) за 20 минут в 5 потоков по 1000 сотрудников
136 611 сотрудников все фонды за 30 минут в 5 потоков по 1000 сотрудников.
Особенности расчётов в Salary
Исключение одновременного расчёта одного сотрудника
При запуске расчётов несколькими пользователями исключается возможность расчёта одного и того же сотрудника одновременно. Это позволяет избежать конфликтов данных и некорректных результатов.
Расчёт только сотрудников с изменениями первичных данных
Для исключения повторного расчёта уже рассчитанных сотрудников, опционально можно выполнить расчёт только по не рассчитанным ранее. Такую возможность обеспечивает механизм, позволяющий отслеживать изменения важных сведений, влияющие на расчёт, например, таких как добавление, удаление и изменение начисления в текущем расчетном периоде. Если добавить начисление рассчитанному сотруднику, признак «Рассчитан» снимется.
При необходимости сохраняется возможность полного перерасчёта всех сотрудников – например, при изменении алгоритмов начислений.
Как влияет месяц года на время расчёта зарплаты при накопительном перерасчёте НДФЛ с начала года
Расчет НДФЛ – основной показатель, влияющий на увеличение времени расчёта заработной платы в течение года в связи с особенностями алгоритма (расчет накопительным итогом). Также стоит отметить, что на увеличение продолжительности влияет большой объем факторов, включая и объём перерасчётов предыдущих периодов (сторнированные начисления, табели).
На практике это приводит к постепенному увеличению времени расчётов к концу года. Ниже на графике приведена усредненная оценка (статистически, на основании опыта эксплуатации системы) изменения времени расчёта зависимости от глубины пересчёта.
