MySQL 상위에서 실행되는 Tomcat-Spring-JPA 서비스가 있습니다.서버 측 보고서가 너무 많은 메모리를 차지할 위험을 줄이는 가장 좋은 방법
우리 서비스의 일부는 리포트 기능입니다. 우리는 서로 다른 크기의 서로 다른 고객을 보유하고있어 서로 다른 양의 데이터를 보유하고 있습니다. 그들이 보고서를 실행하면
, 그들은, 날짜 및 기타 다양한 매개 변수를 선택하여 서버에 전송하고, 서버는 PDF 년대, XLS 시트 등을 만들어
우리는 염려했다그들이 어떤 날짜 기간을 선택할 수 있다면 수 있음 너무 많은 메모리를 차지하므로 일부 견적을 작성하고 보고서의 최대 기간을 생각해 냈습니다.
이것은 여러 가지 이유로 최적이 아니므로 시간이 많이 남았으므로 대안을 찾고 있습니다.
내가 지금까지 생각 해낸 가장 좋은 점은 기본적으로 "최대 개수"행을 갖는 것입니다. 즉, 모든 매개 변수가있는 쿼리의 개수 (*)를 계산하고 너무 많은 데이터가 있으면 사용자에게 알려줍니다 그들은 기간을 줄여야합니다.
는 그래도 난 문제의 몇 가지를 가지고, 어떤 피드백을 바라고 : 는- 카운트 (*)는 자체는 꽤 많은 메모리를 차지하지 것인가?
- 내가 생각하지 못한 더 좋은 방법이 있나요? 메모리의 상당한 양을하지 않습니다
을 생성? 올바른 방법은 보고서를 생성하는 알고리즘을 최적화하려고 시도하는 것이므로 한계가 부적절하게됩니다. – AlexR
얼마나 최적화 했더라도 결국 충분한 사용자가 동시에 실행되면 메모리가 부족해질 위험이 있습니다. 나는 이것을 클라우드 서비스로 (아직) 실행하지 않고 있으므로 오버 헤드를 줄이고 가능한 위험을 감수하려고 노력합니다. 당신이 내가 어디에서 왔는지 보길 바랍니다. – Mathias
메모리 집약은 구현에 따라 다릅니다. 당신은 80 억 명의 사람들이 귀하의 응용 프로그램을 사용하여 시간당 10 년 보고서를 생성하기 시작한다면 당신은 기억 문제를 경험하게 될 것입니다.그러나 나는 사용자가 적다는 것을 추측합니다. 따라서 보고서 생성 메커니즘에 대한 분석이 메모리 문제를 피하는 데 도움이 될 수 있습니다. – AlexR