2015-10-14 83 views
0

我創建的最新環境(實際上是多個)似乎都有同樣的錯誤將上傳文件上傳到MobileFirst中的應用程序中心。如果我重新啓動websphere並重新部署,他們會通過。OutOfMemory將上載文件上傳到運行在Websphere上的AppCenter Liberty

Exception = javax.servlet.ServletException 
Source = com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters 
probeid = 1064 
Stack Dump = javax.servlet.ServletException: java.lang.OutOfMemoryError 
    at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:195) 
    at org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:133) 
    at com.ibm.puremeap.services.RestServlet.service(RestServlet.java:56) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1287) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:778) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:150) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93) 
    at com.ibm.puremeap.services.RestFilter.doFilter(RestFilter.java:60) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1020) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1142) 
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:81) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:928) 
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:262) 
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:955) 
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:341) 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:470) 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:404) 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:284) 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:255) 
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:174) 
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:83) 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:504) 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:574) 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:929) 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1018) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError 
    at java.io.FileOutputStream.writeBytes(Native Method) 
    at java.io.FileOutputStream.write(FileOutputStream.java:325) 
    at com.ibm.puremeap.util.android.AAPT.getMetadata(AAPT.java:274) 
    at com.ibm.puremeap.services.UploadService.fileUploaded(UploadService.java:158) 
    at com.ibm.puremeap.services.UploadService.__fileUploadedJSON__(UploadService.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.wink.server.internal.handlers.InvokeMethodHandler.handleRequest(InvokeMethodHandler.java:63) 
    at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:33) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest(CreateInvocationParametersHandler.java:54) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:34) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceMethod(FindResourceMethodHandler.java:183) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:110) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceLocator(FindResourceMethodHandler.java:230) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:115) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceLocator(FindResourceMethodHandler.java:230) 
    at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:115) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:95) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:53) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest(OptionsMethodHandler.java:46) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.log.ResourceInvocation.handleRequest(ResourceInvocation.java:92) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.internal.log.Requests.handleRequest(Requests.java:76) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
    at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67) 
    at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:52) 
    at org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:207) 
    at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:154) 
    ... 31 more 

Dump of callerThis 
null 

我運行WebSphere自由8.5.5.7

jvm.options設置爲:
-Dcom.ibm.ws.jmx.connector.client.rest.readTimeout = 180000
- Xms1024m
-Xmx1024m

MobileFirst 6.3.0.00.20150715-1612
APK尺寸圍繞每個37MB,
部署USI ng本地java工具:在ANT內調用com.ibm.appcenter.Upload

回答

0

看起來由於某種原因,Websphere內存不足。

嘗試在APK文件中查找元數據時發生內存不足。在這個時候,它會在內存中保存37 MB的APK文件(即74 MB),並試圖解壓縮部分APK文件以提取清單。除非提取的清單很大,否則不應該導致OutOfMemory。通常它很小。

但是,你說你使用com.ibm.appcenter.Upload工具。如果您使用此功能並行上傳多個APK文件,則可能會導致內存問題,例如並行10個這樣的文件是740 MB,那麼您可以輕鬆達到您設置的1GB堆空間限制。

內存使用情況還取決於在該時間點Web服務器中發生的其他情況。例如,每個嘗試下載37 MB apk的設備都需要37 MB的內存。

如果問題僅出現在特定的APK文件中,但與其他文件不同,我建議聯繫IBM支持人員分析這些APK文件。

+0

謝謝Georg的解釋。我做了一些更多的測試,在它自己的線程中部署了apks,這個線程依次部署了6個apks,這個線程徘徊在60 megs左右。 有趣的是,在websphere中的內存增加了70 megs,並在部署成功後停留在那裏。我第二次部署了SAME apk,但之後內存基本保持不變。我不確定是否會出現gc清理問題,但它似乎可能會爬到最大內存,因爲我們部署了不同的apk,ipa,appx,但在同一apk再次部署時保持不變。 –

相關問題