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