Оптимальные методы сокращения количества проблем с памятью
При разработке и мониторинге решений ThingWorx используйте следующие оптимальные методы, чтобы избежать проблем с производительностью, связанных с памятью.
Следите за ежедневным использованием памяти функциями решения ThingWorx. Это помогает понять, как решение использует память в стационарном режиме и в условиях нагрузки.
Проведите испытания на масштабируемость с использованием данных, аналогичных производственным, и утилиты Apache JMeter или аналогичной, чтобы смоделировать множество пользователей и устройств, одновременно взаимодействующих с решением ThingWorx.
Для испытаний на масштабируемость необходимо выделить достаточно системных ресурсов. Для большинства производственных систем требуется 54 ГБ ОЗУ, из которых 40 ГБ выделены для кучи Java.
Запросы потоков могут загружать большое количество записей из базы данных перед их дальнейшей фильтрацией в памяти JVM. Рекомендуется добавить соответствующие интервалы времени, чтобы минимизировать количество строк, загружаемых потоками. Это особенно полезно, когда данные начинают накапливаться при ежедневном производственном использовании.
Если это возможно, используйте для процессов с высокой нагрузкой на память внешние системы, например сервер базы данных, сервер микросервисов или федеративный сервер ThingWorx.
Оптимизация длительно выполняемых сервисов. Любой сервис, выполняющийся более 10 минут, с большой вероятностью блокирует во время выполнения память, соединения с базой данных и другие серверные ресурсы. Плановые сервисы также должны выполняться и завершаться не дольше 10 минут, чтобы гарантировать возвращение ресурсов памяти в систему.
Рассмотрите возможность внедрения кластера высокой доступности для использования в производстве. Это позволит обеспечить общую доступность решения, даже если в одном из узлов ThingWorx возникнут проблемы с памятью.
Было ли это полезно?