Some strange issue under a heavy stress test
---------------------------------------------
Key: HTTPCORE-118
URL: https://issues.apache.org/jira/browse/HTTPCORE-118
Project: HttpComponents Core
Issue Type: Bug
Components: Examples, HttpCore, HttpCore NIO
Affects Versions: 4.0-alpha5
Environment: Windows xp(sp2), JDK 1.5
Reporter: Halo chen
Priority: Critical
Fix For: 4.0-alpha5
Thanks very much for your contributions.
I use your httpcore to develop a embed web application, very well, I think.
But, when i do some stress test, i find a strange issue, please see my test
case:
public class SendToIA implements Runnable {
String[] args;
SendToIA( String[] args )
{
this.args = args;
}
public void run()
{
try {
FileInputStream fis = new FileInputStream("a.txt");
int len = fis.available();
byte[] buf = new byte[len];
fis.read(buf);
fis.close();
String ReuestHead = "POST /TerminalLocationNotification
HTTP/1.1\r\nHOST: LOCALHOST\r\nContent-Length: ";
String ReuestLen = String.valueOf(len) + "\r\n\r\n";
String RequestBody = new String(buf);
String httpRequest = ReuestHead + ReuestLen +
RequestBody;
String host = "localhost";
int port = 8086;
if( args.length == 1 )
{
host = args[0];
}
else if( args.length == 2 )
{
host = args[0];
port = Integer.parseInt( args[ 1 ] );
}
System.out.println(new java.util.Date());
for (int i = 0; i < 20000; i++) {
Socket connection = new Socket( host, port );
connection.setReuseAddress( true );
PrintWriter out = new
PrintWriter(connection.getOutputStream(), true);
out.print(httpRequest);
out.flush();
connection.close();
System.out.print("\b\rcont:"+i);
}
System.out.println(new java.util.Date());
} catch (SecurityException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
int threadcount = 1;
if( args.length == 3 )
{
threadcount = Integer.parseInt( args[ 2 ] );
}
Thread[] t = new Thread[ threadcount ];
for( int i = 0 ; i < threadcount ; i ++ )
{
new Thread( new SendToIA( args ) ).start();
}
for( int i = 0 ; i < threadcount ; i ++ )
{
try{t[i].join();}catch( Exception e ){}
}
}
}
Unfortunately, the application was crashed.
The first , I think my application has some mistake. so I run the example(
org.apache.http.examples.nio.NHttpServer) in the HttpCore binary package. Oh,No!
The same issue was occured!
Why? I found the memory usage of the application reach 170M!!, and then I add
the JVM parameter -Xmx256M.Okay, the application can running continue. but
after a long time, the memory usage of the application reach 256M and then the
same thing was occured! So , I think that the HttpCore has some memory leak.
Can you give me some advices to resolve this issue? or I have some mistakes?
details of error occured:
...
Exception in thread "I/O reactor worker thread 2" java.lang.OutOfMemoryError:
Java heap space
....
java.lang.NullPointerException
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.verifyWorkers(AbstractMultiworkerIOReactor.java:136)
at
org.apache.http.impl.nio.reactor.DefaultListeningIOReactor.execute(DefaultListeningIOReactor.java:111)
....
Exception in thread "I/O reactor worker thread 8" java.lang.OutOfMemoryError:
Java heap space
Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space
Sorry , I'm chinese , my english is bad, may be i haven't explain the issue
clearly. but I need your help.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]