Hello,

I'm testing the jMeter LDAP sampler and I seem to have fielded a defect, or an 
interesting undocumented feature. When testing the LDAP search sampler, my Directory 
Server notes 1,005 active connections; jMeter doesn't drop them nearly as fast as it 
creates them.

Solaris 8
java version "1.4.1_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_05-b01)
Java HotSpot(TM) Client VM (build 1.4.1_05-b01, mixed mode)

Steps to reproduce:
 1. Start jMeter
 2. Create a new thread group
 3. Leave the defaults as-is
 4. Add simple logic controller
 5. Add LDAP request sampler
 6. Put in correct port # and use localhost (or appropriate hostname)
 7. Select "search test"
 8. Select "User defined test"
      Search base: cn=test
      Search filter: objectclass=*
 9. Save test
10. Run test.

Tailing the Directory Server log file I can see the searches executing quite nicely, 
one after another. I even see the occassional unbind. Interestingly enough, the 
connections stay open until jMeter has been shut down. Stopping the test doesn't 
affect the number of open connections. Only by closing jMeter will they drop. Also of 
note: starting another test without closing and restarting jMeter will create more 
connections, though not more than 1,005. Closing jMeter adds 1,005 lines to the 
Directory server log file - all of them indicating a disconnect.

Changing the number of active threads to ten only means the number of active 
connections increases faster. It seems to top out at 1,005, even if it started at 500 
open.

I'd really like to use this tool for performance testing but no single client here is 
going to hold more than 50 active connections, let alone a thousand.

I've also had it produce the following error output when it gets up to 1,005 
connections and the test run is stopped:

[EMAIL PROTECTED] bin]$ Logging Error: Caught an IOException
java.io.InterruptedIOException
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(FileOutputStream.java:257)
        at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
        at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
        at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
        at org.apache.log.output.io.WriterTarget.write(WriterTarget.java:119)
        at 
org.apache.log.output.AbstractOutputTarget.doProcessEvent(AbstractOutputTarget.java:149)
        at org.apache.log.output.AbstractTarget.processEvent(AbstractTarget.java:145)
        at org.apache.log.Logger.fireEvent(Logger.java:708)
        at org.apache.log.Logger.output(Logger.java:683)
        at org.apache.log.Logger.output(Logger.java:666)
        at org.apache.log.Logger.info(Logger.java:206)
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:306)
        at java.lang.Thread.run(Thread.java:536)

Is there any way to cause jMeter to either hold long binds and share them, or to drop 
and reconnect on every operation?

Thank you,


Kayne McGladrey

Reply via email to