При разработке и тестировании прикладных решений на платформе 1С зачастую возникает ситуация, когда разработчик работает в идеальных условиях (локальная сеть или сервер в одном сегменте), а конечные пользователи подключаются из удаленных регионов с нестабильным соединением. В этом материале мы разберем, как объективно оценить сетевые задержки и как эмулировать их в своей среде разработки для поиска «узких мест» производительности.
Многие разработчики совершают ошибку, полагаясь исключительно на команду ping. Важно понимать, что ping измеряет время прохождения ICMP-пакета от клиента до сервера. В случае с 1С ситуация значительно сложнее:
rphost.Latency, но и пропускная способность канала Bandwidth, а также джиттер (нестабильность задержки).Чтобы понять реальное поведение системы под нагрузкой, мы рекомендуем настроить Технологический журнал. Это штатный инструмент платформы 1С, который позволяет регистрировать длительные вызовы.
Для анализа вызовов, которые «тормозят» у клиентов, настройте запись событий CALL и SCALL. Анализируя лог, вы увидите:
Duration — общее время выполнения вызова.BytesSent и BytesReceived — объем данных, передаваемых между клиентом и сервером.Если вы видите, что Duration значительно превышает время выполнения серверного кода (которое можно замерить в Конфигураторе), значит, проблема кроется именно в сетевой задержке при передаче больших объемов данных.
Когда вы понимаете реальные показатели задержки (Latency) и пропускной способности, необходимо воспроизвести их в своей тестовой среде. Существует несколько подходов к решению этой задачи:
В окне Настройка отладки и подключения в Конфигураторе предусмотрены настройки для эмуляции медленного соединения. Рассмотрим, на что стоит обратить внимание:
Для более точного тестирования лучше использовать специализированное ПО для «шейпинга» трафика. Такие программы позволяют гибко настраивать параметры соединения:
Если параметры сети сильно отличаются от ваших, самым надежным методом будет аренда облачного сервера в том же регионе, где находятся ваши удаленные пользователи. Это позволит работать в «реальных условиях» без необходимости сложной эмуляции сетевых профилей.
После того как вы настроили эмуляцию задержек, проанализируйте свой код. При наличии высоких задержек в сети необходимо:
Серверного метода.Динамический список там, где это возможно.Помните, что борьба с сетевыми задержками — это всегда баланс между объемом передаваемой информации и частотой обращений к серверу. Регулярный замер показателей с помощью Технологического журнала и использование программ-эмуляторов помогут вам сделать приложение комфортным для пользователей даже при плохом качестве связи.