Как профилировать выполнение сервера RDF4J?
Как я указал в другом посте, у меня возникли проблемы с некоторыми конструкторами SPIN, занимающими слишком много времени для выполнения довольно ограниченных данных. Я думал, что выберу другой подход и посмотрю, смогу ли я профилировать выполнение конструкторов, чтобы понять, на что конкретно они тратят слишком много времени.
Как я могу профилировать выполнение конструкторов под RDF4J Server? Я инстанцирую через обновление SPARQL (INSERT DATA
) запросы. Вот системная информация о RDF4J:
Я попытался профилировать сервер Tomcat, на котором работает сервер RDF4J, используя jvisualvm.exe
, но я не получил много понимания. В идеале я хотел бы перейти к уровню класса / метода в RDF4J, чтобы я мог опубликовать более подробный запрос о помощи по проблеме медленного выполнения или, возможно, исправить свои запросы, чтобы они были более эффективными.
Итак, вот версия Java Visual VM:
RDF4J работает под Apache Tomcat 8.5.5:
Я вижу обзорную информацию о Tomcat:
Я также вижу вкладку монитора и темы:
ОДНАКО, что я действительно хочу увидеть, так это профилировщик, чтобы я мог видеть, где мои медленные запросы тратят так много времени. Это зависит от калибровки, поскольку у меня нет профилировщика, откалиброванного для Java 1.8.
Эта попытка подключить окно будет продолжаться бесконечно. Отмена приводит к сообщению "Выполнение калибровки", которое фактически ничего не делает и является тупиковым зависанием, требующим уничтожения Java VisualVM.
После убийства Java Visual VM и перезапуска и просмотра параметров -> Профилирование -> Данные калибровки я вижу, что только в Java 7 имеются данные калибровки.
Я попытался переключить Tomcat для работы на Java 7, и это сработало:
Профилировщик придумал Tomcat:
Однако, когда я попытался получить доступ к рабочей среде RDF4J, пока Tomcat работал на Java 7, я не смог запустить рабочую среду:
Итак, я все еще застрял. Похоже, что RDF4J требует Tomcat, работающий под Java 1.8, а не 1.7. Я не могу профилировать под Java 1.8.
Я видел другие посты по этой проблеме с Java VisualVM, но, похоже, одно из применимых решений заключается в том, чтобы привести все в среду разработки (например, Eclipse) и динамически вызывать профилировщик с точкой останова отладчика, как только целевой код выполняется под Java 1.8, Я не настроен так делать с Tomcat и RDF4J и мне нужны указатели. Мое намерение состояло не в том, чтобы стать вкладчиком Tomcat или RDF4J (потому что мои задачи не позволяют этого... мне бы не заплатили за это время), а скорее, чтобы получить конкретную информацию о том, что занимает так много времени для моего конструктора SPIN (s) с точки зрения серверных классов RDF4J, а затем обратитесь за помощью к сообществу разработчиков RDF4J на gitub.
Можно ли обойти калибровку Java VisualVM? Могу ли я загрузить файл или каталог калибровки где-нибудь для использования Java VisualVM вместо попытки измерить данные калибровки, которые потерпели неудачу? Меня интересует только относительная загрузка классов процессором, а не абсолютные показатели, и мне не нужно сравнивать результаты измерений на других машинах.
Благодарю.