[jbossws-issues] [JBoss JIRA] Commented: (JBWS-2615) JBoss does't unload web services classes

Jeff Gordon (JIRA) jira-events at lists.jboss.org
Tue May 19 12:27:05 EDT 2009


    [ https://jira.jboss.org/jira/browse/JBWS-2615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12468251#action_12468251 ] 

Jeff Gordon commented on JBWS-2615:
-----------------------------------

I hate to throw in a "me too" comment, but I'm at the beginning stages of troubleshooting something similar so I thought I would comment.

I've got an application on JBoss 5.0.1 with 2 sets of deployed web services (a handful of web methods each) that gets hit in our performance testing from another app server and 2 desktop applications (1 using JAX-WS (Sun Metro) on Java 1.5, and 1 using Java 1.6 native implementation).  Each web service has a DTO object (Lists of strings mostly with additional Strings and ints in class) and a few Strings as the web service parameters.  These all connect to EJB3 stateless session beans along with servlets and timed classes.  What we are seeing is that after about 8-10 hours of use the application starts degrading to the point you wouldn't want to use it and at around 20 hours into the test the response time from any call (web service, servlet, or ui) is so slow it would be unusable in a deployed scenario.  Anywhere from 1-3 hours later we start getting heap out of memory errors.

Using jhat we see that byte arrays and strings make up the bulk of what's in memory (hundreds of thousands of each) and most of them are owned by the generated "ws" classes.  I'm not trying to point any fingers, I just found this issue while searching for some answers and haven't attempted much to resolve the issue except for adding some additional gc parameters. The test was running with:

-Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC

I've modified it for troubleshooting to be:

-Xms256m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintTenuringDistribution -XX:+TraceClassLoading

At this point I'm leaning toward some of the web service internals not getting cleaned up fast enough as new ones are being made (sorry I can't provide more heap information on this, I'm working on a vanilla method of replication), and I was looking through the issue list to see if there was a newer version of web services I could stick in the app server to try and mitigate the issue. 

> JBoss does't unload web services classes
> ----------------------------------------
>
>                 Key: JBWS-2615
>                 URL: https://jira.jboss.org/jira/browse/JBWS-2615
>             Project: JBoss Web Services
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>         Environment: Windows 2003 Server,  JBoss 5.0.0.GA,  Java 1.6.0_12.
>            Reporter: Edson Goncalez
>            Priority: Critical
>         Attachments: generated_source_classes.zip, screenshot-1.jpg, screenshot-2.jpg, screenshot-3.jpg, screenshot-4.jpg
>
>
> We have an application that comunicate with a webservice (Federal Government of  Brazil) constantly, step by 5 or 10 seconds.
> We have created web service consumer classes by using the following command point to the WSDL file:
> wsconsume -k -p br.com.compliancefiscal.nfe.ejb.sefaz.ws.nfestatusservico -v NfeStatusServico.wsdl
> This tool, was generated this classes:
> NfeStatusServico.java
> NfeStatusServico_Service.java
> NfeStatusServicoNF.java
> NfeStatusServicoNFResponse.java
> NfeStatusServicoSoap.java
> ObjectFactory.java
> package-info.java
> The problem is. When running... every call this webservice generate a new loadclass. Viewing in the JConsole tool, we can note that whe app starts it have aproximatelly 15000 classes loaded, and afeter 10 hours running we can se that the jvm has increased up to 70000 classes loaded, and only 252 classes unloaded.
> I have the screenshot that show this.
> What can occours to causing this BIG load classes for same class ?
> PS: The app does not run any other service. It just start a method that connect to the specified webservice and return a String info. A TimerService trigger start the process steb by 5 seconds.
> Thanks.
> Edson Gonçalez.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       




More information about the jbossws-issues mailing list