Как заставить Java Flight Recorder в Spring Framework писать в файл?
Добрый день.
Запускаю Flight Recorder в Spring Framework:
AnnotationConfigWebApplicationContext context= new AnnotationConfigWebApplicationContext(); context.register(mainPackage.MyTestAppConfig.class); context.setApplicationStartup(new FlightRecorderApplicationStartup()); |
AnnotationConfigWebApplicationContext context= new AnnotationConfigWebApplicationContext(); context.register(mainPackage.MyTestAppConfig.class); context.setApplicationStartup(new FlightRecorderApplicationStartup());
В параметрах JVM
-XX:StartFlightRecording:filename=recording.jfr,duration=10s,disk=true
Но по итогу файл recording.jfr пустой.
Перебровал разные флаги добавлять, всё бесполезно.
Дополнительно:
пустой или не пишет ?
когда запускается по туториалуам
docker run -it $DOCKER_IMAGE
говорит
Started recording 1. The result will be written to: /application/leak.jfr |
Started recording 1. The result will be written to: /application/leak.jfr
вот флаги
CMD ["java", "-XX:StartFlightRecording=duration=30s,settings=profile,filename=leak.jfr", "-jar", "/application/app.jar" ] |
CMD ["java", "-XX:StartFlightRecording=duration=30s,settings=profile,filename=leak.jfr", "-jar", "/application/app.jar" ]
У меня тоже пишет, что результат будет записан в файл, но ничего не записывает туда.
при использовании команды -jar ругается
[1.031s][info][jfr,startup] Started recording 1. The result will be written to:
[1.031s][info][jfr,startup]
[1.031s][info][jfr,startup] C:UsersАртёмeclipsejee-workspaceMyTestAppleak.jfr
Error: Could not find or load main class jar
Caused by: java.lang.ClassNotFoundException: jar
Ваш код не работает
как упакоывать джаву чтто не получалось исключение в рантейме Сlass not def found
public class MyTestApp implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext)
{
AnnotationConfigWebApplicationContext context= new
AnnotationConfigWebApplicationContext();
context.register(mainPackage.MyTestAppConfig.class);
//context.setApplicationStartup(new FlightRecorderApplicationStartup());
DispatcherServlet servlet = new DispatcherServlet(context);
ServletRegistration.Dynamic registration = servletContext
.addServlet("app", servlet);
registration.setLoadOnStartup(1);
registration.addMapping("/");
}
}
без команды -jar все запускается
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы заставить Java Flight Recorder (JFR) в Spring Framework писать данные в файл, вам нужно настроить JFR, используя параметры командной строки при запуске вашего приложения. Ниже приведены шаги, которые необходимо выполнить для этого:
1. Определите параметры командной строки для запуска вашего приложения Spring с включенным JFR и указанием пути к файлу, в который будут записываться данные.
2. Добавьте следующие параметры командной строки при запуске вашего приложения:
```
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=disk=true,dumponexit=true,dumponexitpath=/path/to/your/file.jfr
```
3. Замените `/path/to/your/file.jfr` на путь к файлу, в который вы хотите записывать данные JFR.
4. После запуска вашего приложения, JFR будет записывать данные в указанный файл. Убедитесь, что у вас есть необходимые разрешения для записи в указанный файл.
5. Для дополнительной настройки JFR (например, указание продолжительности записи или частоты сбора событий), вы можете использовать другие параметры командной строки. Более подробную информацию о настройке JFR можно найти в документации Oracle.
Надеюсь, что эти шаги помогут вам настроить Java Flight Recorder в Spring Framework для записи данных в файл. Если у вас остались дополнительные вопросы, не стесняйтесь задавать их.