前端調用后台,后台調用阿里雲OSS上傳圖片時,圖片大小如果超過900Kb,前端就會報Http 500內部服務器的異常信息。但是上傳小於900kb大小的圖片就沒有問題。
現象
-
前端:http 500異常。
-
后台服務日志:Out Of Memory : Java heap space
解決辦法
-
通過上傳圖片大小能判斷出,服務器是通的,也就是說是后台服務器的問題,或者OSS服務有限制大小或者帶寬的問題。
-
通過查看后台日志,后台報堆內存溢出,異常信息如下。
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space
-
通過異常信息,暫時排除OSS服務的問題。
-
分析圖片大小,正常情況下,一個900KB大小的圖片信息,后台讀取大概需要10M的內存。然后查看了當前進程啟動內存,是128M,正常情況下128M是可以的。但是在多線程並發的情況下,其實這個內存很小。后來啟動內存改為最大內存改為256M后,再測試通過。但是圖片大小超過3M還是報內存溢出?
-
問題點:為什么超過圖片大小超過3M又報內存溢出呢?請大家討論區評論吧