[ 
https://issues.apache.org/jira/browse/HTTPCORE-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12531344
 ] 

Roland Weber commented on HTTPCORE-118:
---------------------------------------

Could you please attach the current version of your test code?
I'll try to reproduce the problem next week outside of Eclipse.

cheers,
  Roland


> 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
>
>         Attachments: a.txt, SendToIA.java, snapshot.jpg
>
>
> 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]

Reply via email to