I started using YourKit 2024.03. I am using it to do performance testing for a Java server application.
The server (with 32GB set) is started with the agent:
Code: Select all
-agentpath:~/YourKit-JavaProfiler-2024.3/bin/linux-x86-64/libyjpagent.so
On another machine (also running Ubuntu 24.04 with, 128GB), I am running the YourKit 2024.3 profiler and I connect to the sever via SSH. The telemetry shows the CPU in real-time, so things are going OK. The only change done to the YourKit application is the Xmx from the profiler.sh (to 100GB) and the Xmx from the .yjp/ui.ini (to 100GB).
I am running a time consuming request on the server once to do a cold run (i.e. let the class loader do its job, e.g.). After, I am activating the tracer with:
Code: Select all
time=cpu
adaptive=false
adaptive_min_method_invocation_count=20000
adaptive_max_average_method_time_ns=1000
adaptive_min_method_time_percent=0.1
I attempt to capture a performance snapshot and the dialog that states that the snapshot was captured properly is shown. The snapshot has ~7.5GB. When I am attempting to open it from YourKit (same machine from which the profiling was done), I get "is not a valid snapshot file" and "I/O exception" with a message related to CodedInputStream.setSizeLimit. I went into the logs and found:
Code: Select all
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large. May be malicious. Use CodedInputStream.setSizeLimit() to increase the size limit.
at com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:139)
at com.google.protobuf.CodedInputStream$StreamDecoder.refillBuffer(CodedInputStream.java:2746)
at com.google.protobuf.CodedInputStream$StreamDecoder.readRawByte(CodedInputStream.java:2824)
at com.google.protobuf.CodedInputStream$StreamDecoder.readRawVarint64SlowPath(CodedInputStream.java:2613)
at com.google.protobuf.CodedInputStream$StreamDecoder.readRawVarint64(CodedInputStream.java:2606)
at com.google.protobuf.CodedInputStream$StreamDecoder.readInt64(CodedInputStream.java:2243)
at com.yourkit.protocol.generated.CpuProfilingRecordProto$Builder.mergeFrom(a:388)
at com.yourkit.protocol.generated.CpuProfilingRecordProto$Builder.mergeFrom(a:237)
at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:394)
Other information:
* I attempted to open the snapshot from different machines with YourKit 24.03, all resulted in the same error.
* I attempted to profile other applications in the same architecture (OS/RAM/Network/etc.) and succeeded. This server I am profiling now is the only that generates such issue.