diff --git a/docker-compose.yaml b/docker-compose.yaml index bb1e1b7..46b15b2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -52,11 +52,12 @@ services: resources: limits: cpus: '1.5' - memory: 1G + memory: 3G reservations: cpus: '0.5' - memory: 512M + memory: 2G environment: + JAVA_TOOL_OPTIONS: "-Xmx2g -Xms1g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:+UseContainerSupport -XX:InitialRAMPercentage=50 -XX:MaxRAMPercentage=75" FILE_STORAGE_PATH: /data/uploads MAX_FILE_SIZE: 10737418240 FILE_CHUNK_SIZE: 1000000 diff --git a/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java b/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java index 57de3e8..6138303 100644 --- a/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java +++ b/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java @@ -3,6 +3,9 @@ package ru.soune.nocopy.controller; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; +import java.util.Map; + @RestController @RequestMapping("check/api") public class HealtCheckController { @@ -11,4 +14,22 @@ public class HealtCheckController { public HttpStatus healtCheck() { return HttpStatus.OK; } + + @GetMapping("/api/debug/memory") + public Map getMemoryInfo() { + Runtime runtime = Runtime.getRuntime(); + long mb = 1024 * 1024; + + Map info = new HashMap<>(); + info.put("maxMemory (MB)", String.valueOf(runtime.maxMemory() / mb)); + info.put("totalMemory (MB)", String.valueOf(runtime.totalMemory() / mb)); + info.put("freeMemory (MB)", String.valueOf(runtime.freeMemory() / mb)); + info.put("usedMemory (MB)", String.valueOf((runtime.totalMemory() - runtime.freeMemory()) / mb)); + info.put("availableProcessors", String.valueOf(runtime.availableProcessors())); + + info.put("JAVA_TOOL_OPTIONS", System.getenv("JAVA_TOOL_OPTIONS")); + info.put("JAVA_OPTS", System.getenv("JAVA_OPTS")); + + return info; + } }