이 기사에서는 Arthas를 Apache DolphinScheduler에 통합하여 API 호출을 실시간으로 모니터링하는 방법을 자세히 설명합니다. 강력한 Java 진단 도구인 Arthas는 개발자가 런타임 상태를 검사하고 성능 병목 현상을 식별하며 메서드 호출을 추적하는 데 도움을 줍니다. DolphinScheduler에 Arthas를 내장하면 작업 예약 중에 주요 통화 정보를 캡처할 수 있어 적시에 문제를 감지하고 해결할 수 있어 시스템 안정성이 향상됩니다. 여기서는 DolphinScheduler 환경 내에서 Arthas를 시작하고, 특정 API 호출을 모니터링하고, 수집된 성능 데이터를 분석하여 스케줄링 안정성과 유지 관리성을 향상시키는 단계를 간략하게 설명합니다.
https://arthas.aliyun.com/download/latest_version?mirror=aliyun arthas-packaging-3.7.2-bin.zip cp arthas-packaging-3.7.2-bin.zip /opt/arthas cd /opt/arthas unzip arthas-packaging-3.7.2-bin.zip java -jar arthas-boot.jar Select the corresponding process ID.
[ERROR] Start arthas failed, exception stack trace: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106) at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78) at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250) at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:102) at com.taobao.arthas.core.Arthas.<init>(Arthas.java:27) at com.taobao.arthas.core.Arthas.main(Arthas.java:161)
해결책:
${DOLPHINSCHEUDLER_HOME}/api-server/bin에서 jvm_args_env.sh에 다음 줄을 추가합니다.
-XX:+StartAttachListener
Picked up JAVA_TOOL_OPTIONS: java.io.IOException: well-known file /tmp/.java_pid731688 is not secure: file should be owned by the current user (which is 0) but is owned by 989 at sun.tools.attach.LinuxVirtualMachine.checkPermissions(Native Method) at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:117) at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78) at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250) at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:102) at com.taobao.arthas.core.Arthas.<init>(Arthas.java:27) at com.taobao.arthas.core.Arthas.main(Arthas.java:161) [ERROR] Start arthas failed, exception stack trace: [ERROR] attach fail, targetPid: 731688
해결책:
이 오류를 방지하려면 Arthas 서비스를 실행하는 사용자가 DolphinScheduler를 실행하는 사용자와 일치하는지 확인하세요.
Watch는 매개변수, 반환값 등 메소드의 특정 실행 세부정보를 모니터링하는 데 사용됩니다.
watch org.apache.dolphinscheduler.api.controller.UsersController queryUserList returnObj
[arthas@731688]$ watch org.apache.dolphinscheduler.api.controller.UsersController queryUserList returnObj Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 1) cost in 126 ms, listenerId: 2 method=org.apache.dolphinscheduler.api.controller.UsersController.queryUserList location=AtExit ts=2024-08-27 02:04:01; [cost=4.918943ms] result=@Result[ ...
Trace는 호출된 메서드와 각 메서드의 실행 시간을 포함하여 메서드 호출의 깊이를 모니터링합니다.
[arthas@973263]$ trace org.apache.dolphinscheduler.api.controller.UsersController queryUserList Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 1) cost in 319 ms, listenerId: 1 `---ts=2024-08-27 10:33:08;thread_name=qtp1836984213-26;id=26;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@439f5b3d `---[13.962731ms] org.apache.dolphinscheduler.api.controller.UsersController:queryUserList() +---[0.18% 0.025123ms ] org.apache.dolphinscheduler.api.controller.UsersController:checkPageParams() #130 +---[0.09% 0.012549ms ] org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils:handleEscapes() #131 `---[96.47% 13.469876ms ] org.apache.dolphinscheduler.api.service.UsersService:queryUserList() #132
힙 덤프 파일을 생성하려면 다음을 사용하세요.
[arthas@973263]$ heapdump arthas-output/dump.hprof Dumping heap to arthas-output/dump.hprof ... Heap dump file created
메모리 누수 진단을 위한 MAT와 같은 도구를 사용하여 덤프 파일을 분석합니다.
메모리를 사용하여 JVM 메모리 사용량 검사:
[arthas@973263]$ memory Memory used total max usage heap 485M 900M 900M 53.91% ps_eden_space 277M 327M 358M 77.61% ...
대시보드를 사용하여 CPU 사용량을 확인하고 thread -n thread_id를 사용하여 추가 검사를 위해 특정 스레드를 식별합니다.
위 내용은 작업 일정 신뢰성 향상: DolphinScheduler에서 API 모니터링을 위해 Arthas 통합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!