Tôi đang thực hiện một dự án trong đó tôi cần tất cả các lệnh gọi API để thực hiện dưới 1 giây nhưng tôi gặp phải vấn đề với cuộc gọi đầu tiên đến mỗi tuyến chậm hơn các tuyến sau.
Hiện tại, cuộc gọi đến / đăng nhập đầu tiên mất 3,6 giây và các cuộc gọi tiếp theo mất 170ms và tương tự cho tất cả các tuyến khác.
Tôi phát hiện ra -XX:+TraceClassLoading
rằng trong cuộc gọi đầu tiên, các lớp được tải trong bộ nhớ và điều đó gây ra vấn đề về hiệu năng.
Tuy nhiên, tôi không tìm thấy một cách dễ dàng để tải tất cả các lớp khi bắt đầu và đối với mỗi dịch vụ mới, tôi cần thêm một cuộc gọi khởi động trong ApplicationRunner.
Có ai có giải pháp để tự động tải các lớp của ứng dụng SpringBoot hoặc làm nóng tất cả các tuyến của nó không?
invokedynamic
và chúng tôi biết độ phân giải chậm trong cuộc gọi đầu tiên (chúng tôi có hàng chục ngàn cuộc gọi như vậy, mà không có cuộc gọi đầu tiên này tích lũy đến hàng chục giây).