Re: [rules-users] permgen error for simple rule stress test

2014-01-29 Thread Mark Proctor
5.x is in maintenance now, it’s unlikely we will fix this - unless it’s 
requested by a paying customer.  Although we will still consider community 
provided fixes. If it’s related to the permgen fixes we did for 5.6, it may 
already be fixed by that.

If you can show the issue is still present in 6x, we will try and hunt it down 
and fix it there.


Mark


On 29 Jan 2014, at 22:08, anjana.ackroyd  wrote:

> Mark,
> 
> I did some more analysis  and I tracked it down to Guvnor my app connects to 
> running out of memory before the test starts failing.Once I restart guvnor
> and redo my tests I get good response time and it eventually starts to slow
> down then throw 500 errors.
> 
> I see a whole bunch of logs for Creating RulesRepository with default
> username.  like before it throws out of memory
> 
> 
> 
> 
> 
> 
> WARN  29-01 14:08:18,920 (RulesRepositoryManager.java:getRulesRepository:70)  
>   
> Creating RulesRepository with default username.
> === session-guest-779944
> === session-guest-779944
> java.lang.OutOfMemoryError: GC overhead limit exceeded
>at
> org.jboss.weld.util.reflection.Reflections$TypeHolder.wrap(Reflections.java:542)
>at
> org.jboss.weld.util.reflection.Reflections$TypeHolder.access$000(Reflections.java:470)
>at
> org.jboss.weld.util.reflection.Reflections.isAssignableFrom(Reflections.java:320)
>at
> org.jboss.weld.util.reflection.Reflections.isAssignableFrom(Reflections.java:290)
>at
> org.jboss.weld.resolution.ResolvableBuilder.create(ResolvableBuilder.java:123)
>at
> org.jboss.weld.manager.BeanManagerImpl.getBeans(BeanManagerImpl.java:486)
>at
> org.jboss.weld.injection.ParameterInjectionPoint.getValueToInject(ParameterInjectionPoint.java:118)
>at
> org.jboss.weld.injection.MethodInjectionPoint.getParameterValues(MethodInjectionPoint.java:217)
>at
> org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstance(MethodInjectionPoint.java:137)
>at
> org.jboss.weld.bean.ProducerMethod$ProducerMethodProducer.produce(ProducerMethod.java:136)
>at
> org.jboss.weld.bean.AbstractProducerBean$AbstractProducer.produce(AbstractProducerBean.java:319)
>at
> org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:307)
>at
> org.jboss.weld.context.AbstractContext.get(AbstractContext.java:107)
>at
> org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:90)
>at
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
>at
> org.drools.repository.RulesRepository$Proxy$_$$_WeldClientProxy.loadModule(RulesRepository$Proxy$_$$_WeldClientProxy.java)
>at
> org.drools.guvnor.server.files.FileManagerService.getLastModified(FileManagerService.java:378)
>at
> org.drools.guvnor.server.files.FileManagerService$Proxy$_$$_WeldClientProxy.getLastModified(FileManagerService$Proxy$_$$_WeldClientProxy.java)
>at
> org.drools.guvnor.server.files.PackageDeploymentServlet.getLastModified(PackageDeploymentServlet.java:74)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:636)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
>at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
>at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
>at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
>at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
> 
> 
> 
> 
> 
> 
> We are running guvnor 5.5.0-Final on Springsource TOmcat 7.0.23
> 
> 
> 
> 
> JAVA_HOME="/usr/pservices/jdk1.7.0_45"
> AGENT_PATHS=""
> JAVA_AGENTS=""
> JAVA_LIBRARY_PATH=""
> JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
> -XX:MaxPermSize=512m -Xss1024K "
> JAVA_OPTS="$JVM_OPTS $AGENT_PATHS $JAVA_AGENTS $JAVA_LIBRARY_PATH"
> 
> 
> 
> 
> 
> 
> --
> View this message in context: 
> http://drools.46999.n3.nabble.com/permgen-error-for-simple-rule-stress-test-tp4027895p4027925.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> ___
> rules-users mailing li

Re: [rules-users] permgen error for simple rule stress test

2014-01-29 Thread anjana.ackroyd
Mark,

I did some more analysis  and I tracked it down to Guvnor my app connects to 
running out of memory before the test starts failing.Once I restart guvnor
and redo my tests I get good response time and it eventually starts to slow
down then throw 500 errors.

I see a whole bunch of logs for Creating RulesRepository with default
username.  like before it throws out of memory






WARN  29-01 14:08:18,920 (RulesRepositoryManager.java:getRulesRepository:70)
Creating RulesRepository with default username.
=== session-guest-779944
=== session-guest-779944
java.lang.OutOfMemoryError: GC overhead limit exceeded
at
org.jboss.weld.util.reflection.Reflections$TypeHolder.wrap(Reflections.java:542)
at
org.jboss.weld.util.reflection.Reflections$TypeHolder.access$000(Reflections.java:470)
at
org.jboss.weld.util.reflection.Reflections.isAssignableFrom(Reflections.java:320)
at
org.jboss.weld.util.reflection.Reflections.isAssignableFrom(Reflections.java:290)
at
org.jboss.weld.resolution.ResolvableBuilder.create(ResolvableBuilder.java:123)
at
org.jboss.weld.manager.BeanManagerImpl.getBeans(BeanManagerImpl.java:486)
at
org.jboss.weld.injection.ParameterInjectionPoint.getValueToInject(ParameterInjectionPoint.java:118)
at
org.jboss.weld.injection.MethodInjectionPoint.getParameterValues(MethodInjectionPoint.java:217)
at
org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstance(MethodInjectionPoint.java:137)
at
org.jboss.weld.bean.ProducerMethod$ProducerMethodProducer.produce(ProducerMethod.java:136)
at
org.jboss.weld.bean.AbstractProducerBean$AbstractProducer.produce(AbstractProducerBean.java:319)
at
org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:307)
at
org.jboss.weld.context.AbstractContext.get(AbstractContext.java:107)
at
org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:90)
at
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
at
org.drools.repository.RulesRepository$Proxy$_$$_WeldClientProxy.loadModule(RulesRepository$Proxy$_$$_WeldClientProxy.java)
at
org.drools.guvnor.server.files.FileManagerService.getLastModified(FileManagerService.java:378)
at
org.drools.guvnor.server.files.FileManagerService$Proxy$_$$_WeldClientProxy.getLastModified(FileManagerService$Proxy$_$$_WeldClientProxy.java)
at
org.drools.guvnor.server.files.PackageDeploymentServlet.getLastModified(PackageDeploymentServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:636)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)






We are running guvnor 5.5.0-Final on Springsource TOmcat 7.0.23




JAVA_HOME="/usr/pservices/jdk1.7.0_45"
AGENT_PATHS=""
JAVA_AGENTS=""
JAVA_LIBRARY_PATH=""
JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
-XX:MaxPermSize=512m -Xss1024K "
JAVA_OPTS="$JVM_OPTS $AGENT_PATHS $JAVA_AGENTS $JAVA_LIBRARY_PATH"






--
View this message in context: 
http://drools.46999.n3.nabble.com/permgen-error-for-simple-rule-stress-test-tp4027895p4027925.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] permgen error for simple rule stress test

2014-01-28 Thread Mark Proctor
permien issus were fixed in the 5.6 release, and 6.0 release, by Davide Sottara.

Mark
On 28 Jan 2014, at 21:05, anjana.ackroyd  wrote:

> We are running a simple stress test (whose code I will paste below) for a
> numbercompare rule file)
> We get the following error before the test finishes. Which seems odd for one
> rule
> javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space
> 
> This test is run against 3 loablanced tomcat servers 
> 
> 
> Here is my JVM_OPTS for each of those tomcat 
> JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
> -XX:MaxPermSize=512m -Xss1024K -XX:+UseCodeCacheFlushing
> -XX:-UseSplitVerifier"
> 
> Here is 
> 
> I have a simple rule file deployed on guvnor on my abc with JVM_OPTS on the
> guvnor being
> JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
> -XX:MaxPermSize=512m -Xss1024K 
> 
> 
> 
> 
> Here is my stress test that we are running
> 
> package DroolsTest;
> import java.io.BufferedReader;
> import java.io.InputStream;
> import java.io.InputStreamReader;
> import java.net.HttpURLConnection;
> import java.net.URL;
> 
> import confident.guppy.tools.Caller;
> 
> public class DroolsSpeedTest {
> 
>public static void main(String[] args) {
>HttpURLConnection httpURLConnection = null;
>InputStream inputStream = null;
>BufferedReader bufferedReader = null;
> 
>long t1 = System.currentTimeMillis();
>for (int i = 0; i < 1; i++) {
>try {
>long start =
> System.currentTimeMillis();
>// Three
> boxes
>String url =
> "https://abc-uat2.xyz.com/ces/v2.0/rules/10/compare/10";;
> 
> 
> 
> 
> httpURLConnection = (HttpURLConnection) ( new URL(url).openConnection());
> 
>if
> (httpURLConnection != null) {
> 
> inputStream = httpURLConnection.getInputStream();
> 
> bufferedReader = new BufferedReader(new InputStreamReader(
> 
> inputStream));
> 
> String results = "";
> 
> String info = "";
> 
> while ((info = bufferedReader.readLine()) != null) {
> 
> results += info;
> 
> }
> 
> //caller.log(results);
>} else {
> 
> System.out.println("Unable to create the HTTP connection with the required
> server...");
>}
> 
>if (i % 20
> == 0 && i != 0 ) {
> 
> System.out.println(" passing " + i + " ms " + (
> System.currentTimeMillis() - start ));
>}
> 
>} catch (Exception boom) {
> 
> boom.printStackTrace();
> 
> System.out.println("It died on the " + i + " attempt because " +
> boom.getMessage());
>}
>}
>long t2 = System.currentTimeMillis() - t1 ;
>System.out.println("I took ms : "+  t2 );
>}
> }
> 
> 
> 
> 
> Here is my rules defined on guvnor 
> 
> 
> 
> package org.numbercompare;
> declare NumberCompare
>message : String
>numberone: Integer
>numbertwo: Integer
> end
> 
> rule "numberone is equals to numbertwo"
> 
>when
>n: NumberCompare(numberone == numbertwo);
> 
>then
>n.setMessage("numberone is equals to numbertwo");
> 
> end
> 
> rule "numberone is greater than numbertwo"
>when
>n: NumberCompare(numberone > numbertwo);
> 
>then
>n.setMessage("numberone is greater than numbertwo");
> end
> 
> rule "numberone is less than numbertwo"
>when
>n: NumberCompare(numberone < numbertwo);
> 
>then
>n.setMessage("numberone is less than numbertwo");
> 
> end
> 
> 
> Here is my code that updates the rule file
> 
> 
> 
>public KnowledgeBase readKnowledgeBase() throws Exception {
> ResourceFactory.getResourceChangeNotifierService().start();
>ResourceFactory.getResourceChangeScannerService().start();
>ResourceChangeScannerConfiguration sconf =
> ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
>sconf.setProperty("drools.resource.scanner.interval", "2");
>ResourceFactory.getResourceChangeScannerService().configure(sconf);
>KnowledgeAgentConfiguration kaconf =
> KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
>kaconf.setProperty("drools.agent.scanDirectories", "true");
>kaconf.setProperty("drools.agent.scanResources", "true");

[rules-users] permgen error for simple rule stress test

2014-01-28 Thread anjana.ackroyd
We are running a simple stress test (whose code I will paste below) for a
numbercompare rule file)
We get the following error before the test finishes. Which seems odd for one
rule
javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space

This test is run against 3 loablanced tomcat servers 


Here is my JVM_OPTS for each of those tomcat 
JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
-XX:MaxPermSize=512m -Xss1024K -XX:+UseCodeCacheFlushing
-XX:-UseSplitVerifier"

Here is 

I have a simple rule file deployed on guvnor on my abc with JVM_OPTS on the
guvnor being
JVM_OPTS="-Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:PermSize=512m
-XX:MaxPermSize=512m -Xss1024K 




Here is my stress test that we are running

package DroolsTest;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
import confident.guppy.tools.Caller;
 
public class DroolsSpeedTest {

public static void main(String[] args) {
HttpURLConnection httpURLConnection = null;
InputStream inputStream = null;
BufferedReader bufferedReader = null;
 
long t1 = System.currentTimeMillis();
for (int i = 0; i < 1; i++) {
try {
long start =
System.currentTimeMillis();
// Three
boxes
String url =
"https://abc-uat2.xyz.com/ces/v2.0/rules/10/compare/10";;


  

   
httpURLConnection = (HttpURLConnection) ( new URL(url).openConnection());
 
if
(httpURLConnection != null) {
   
inputStream = httpURLConnection.getInputStream();
   
bufferedReader = new BufferedReader(new InputStreamReader(

   
inputStream));
   
String results = "";
   
String info = "";
   
while ((info = bufferedReader.readLine()) != null) {

   
results += info;
   
}
   
//caller.log(results);
} else {
   
System.out.println("Unable to create the HTTP connection with the required
server...");
}
 
if (i % 20
== 0 && i != 0 ) {
   
System.out.println(" passing " + i + " ms " + (
System.currentTimeMillis() - start ));
}
 
} catch (Exception boom) {
   
boom.printStackTrace();
   
System.out.println("It died on the " + i + " attempt because " +
boom.getMessage());
}
}
long t2 = System.currentTimeMillis() - t1 ;
System.out.println("I took ms : "+  t2 );
}
}




Here is my rules defined on guvnor 



package org.numbercompare;
declare NumberCompare
message : String
numberone: Integer
numbertwo: Integer
end

rule "numberone is equals to numbertwo"

when
n: NumberCompare(numberone == numbertwo);

then
n.setMessage("numberone is equals to numbertwo");

end

rule "numberone is greater than numbertwo"
when
n: NumberCompare(numberone > numbertwo);

then
n.setMessage("numberone is greater than numbertwo");
end

rule "numberone is