![데이터 필터링 시 Spring 애플리케이션 성능이 저하됨](https://rvso.com/image/756217/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%95%84%ED%84%B0%EB%A7%81%20%EC%8B%9C%20Spring%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%20%EC%84%B1%EB%8A%A5%EC%9D%B4%20%EC%A0%80%ED%95%98%EB%90%A8.png)
- 저는 앱 엔진 B2에서 Spring 애플리케이션을 생성했습니다. 로그에서 애플리케이션이 데이터 필터링을 완료하는 데(애플리케이션을 깨운 후) 1초가 걸리는 것을 볼 수 있습니다. 내 로컬 컴퓨터에서는 10ms가 걸립니다.
- 데이터 크기는 정말 작고 로직은 그다지 복잡하지 않으며 프로젝트를 시작하면 됩니다.
그렇다면 제 질문은 제 앱 엔진 인스턴스에 일부 리소스나 문제가 부족할 가능성이 있다는 것인가요? 지금은 기본값을 사용하기 때문에 일부 구성이나 JAVA OPTIONS가 부족할 수도 있습니다. 어쩌면 누군가 비슷한 성능 문제에 직면했을 수도 있습니다.
업데이트. 이번에도 B1 B2 B3 B4 인스턴스를 사용해 보았습니다. 같은 결과. 애플리케이션의 리소스 양이 매우 적은 것 같습니다.
Compute Engine VM을 만들 때 문제가 해결되었습니다. 가상 머신에서는 동일한 애플리케이션으로 도커 이미지를 실행하고 있습니다. 이제는 잘 작동합니다. 반응이 좋습니다.
App Engine을 사용하고 싶지만 여전히 이 문제의 원인을 알 수 없습니다. 추가 옵션 없이 Google 튜토리얼의 app.yaml 기본 설정을 모두 사용합니다.
업데이트 2. 다양한 옵션으로 App Engine Flex 환경을 사용해 보았습니다. 여전히 같은 결과입니다. 아마도 30초 응답 대신 동일한 API를 더 많이 호출하면 차이를 볼 수 있을 것입니다. 따라서 내 결론은 App Engine(내 이해로는)이 JAVA 복잡한 CPU 최대 작업(FILTER, SORT ENTITY) 작업에 적합하지 않다는 것입니다. ) .. Compute Engine에서 내 솔루션이 제대로 작동합니다. 그런 다음 GKE를 시험해 보았는데 30초(시작 오버헤드 없이) 응답이 200ms로 감소하여 완벽하게 작동했습니다. GCE 또는 GKE에서는 가장 낮은 리소스 순위 VM을 사용합니다.
답변1
인스턴스 클래스를 계산 작업에 더욱 효율적인 클래스로 변경함으로써(예:B4, 귀하의 경우 더 높은 CPU 제한을 사용하면 실제로 해당 측면에서 애플리케이션이 더 빨라지지만비용이 더 많이 든다.
인스턴스 클래스를 업그레이드하기 전에 애플리케이션 속도를 향상시키기 위해 프로그래밍 방식으로 아무것도 수행할 수 없도록 보장하는 것이 좋습니다. 이 경우 가격이 두 배로 높아질 수 있기 때문입니다.