On 10/25/07, tiandike <[EMAIL PROTECTED]> wrote:
>
>
> I use jcosole to monitor my app and find many thread is blocked
>
> BLOCKED  on [EMAIL PROTECTED]


that is probably because the dbcp connectionPool is exhausted,
are you sure you are properly returning connections to the pool ?

and i find the number of pool-4-thread-xx is equal with the number of
> connector that my client create .
>
> I add new ExecutorFilter(Executors.newCachedThreadPool())) in filterchain
> ,why the number of thread for handler is equal with the number of
> connector
> that my client create ??


wild guess : every thread created by the ThreadPool is eventually blocked,
waiting for the connectionPool,
these threads are not returned to the pool, hence a new thread must be
created for every user.

Maarten

Frédéric Brégier wrote:
> >
> > I can say some more point (I had such problem) related to Oracle and
> Java
> > performance.
> >
> > When you try a loop of requests over the database as suggested Maarten,
> > try to see also how is configured Oracle.
> > For instance, Oracle can have two levels of pool of connections :
> > - one from the application point of vue (using dbcp.BasicDataSource for
> > instance as you said)
> > - another one using thread pool of connection directly in Oracle
> > Both can be used.
> > By default, in Oracle, 1 connection from the application is 1
> > thread/connection in Oracle,
> > so 10000 connections = 10000 threads.connections in the Oracle server.
> > In this mode, Oracle can have a limitation on accepting multiple
> > connections
> > (perhaps 8 in your case ?).
> > Using thread pool in Oracle, 1 connection from the application is still
> 1
> > thread/connection
> > but using a pool of 200 directly in Oracle, 10 000 connections from
> > applications
> > will means 200 connections. In fact, in this mode, requests are
> > multiplexed
> > so using less
> > thread/connection in Oracle.
> > What I want to say is looking only at the Java code might not be
> enough...
> >
> > Also, if you can, recheck you use pooled connection since
> > connect/disconnect
> > can be very heavy.
> > Finally, try to use a prepared statement instead of a standard statement
> > since Oracle will perform really faster. Even more, if you can, try to
> use
> > a
> > stored procedure.
> >
> > Frederic
> > ----- Original Message -----
> >
> > what are the other values for BasicDataSource ?
> > initialSize, maxIdle, minIdle ?
> >
> > How much threads is your mina app using ?
> >
> > You could try to see how much insert/transactions your app can do per
> > second
> > without using mina and loadrunner: just start x threads INSIDE your
> > application that do the db operations in a loop.
> > Then you know if it's mina related or not.
> >
> > Maarten
> >
> > On 10/24/07, tiandike <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >> I use  org.apache.commons.dbcp.BasicDataSource and set maxActive =1000
> >>
> >> i don't know why is 8? why not other number?
> >>
> >>
> >>
> >> Maarten Bosteels wrote:
> >> >
> >> > Hello,
> >> >
> >> > With 8 users or less your server is doing 2600 inserts per second ?
> >> > And each insert is a new database transaction ?
> >> > First of all, I think that ain't bad at all !
> >> >
> >> > Are you using a database connection pool ?
> >> > Check the size of the pool.
> >> >
> >> > Since you don't have problems when you don't perform db operations, I
> >> > think
> >> > your problem is not related to MINA.
> >> >
> >> > The bottleneck in our MINA based server also turned out to be Oracle,
> >> more
> >> > specifically the number of commits that Oracle could do per second. I
> >> am
> >> > not
> >> > saying that Oracle is bad (quite the opposite) just that I think
> that's
> >> > where you should look: it has A LOT of tuning options.
> >> >
> >> > Maarten
> >> >
> >> > On 10/24/07, tiandike <[EMAIL PROTECTED]> wrote:
> >> >>
> >> >>
> >> >> I use loadruner to test my server ,my handler performs database
> >> >> operations(insert a row a request)
> >> >> i disable the default ThreadModel setting following
> >> >> http://mina.apache.org/configuring-thread-model.html
> >> >>
> >> >> when i use loadruner to run performance test , a strange phenomenon
> is
> >> >> that
> >> >> when the number of  Running Vusers
> >> >>   in loadruner is less than 8 (include 8) the tps is about 2600 ,but
> >> when
> >> >> the number of Running Vusers is greater than 8 in loadruner ,the tps
> >> >> reduce
> >> >> to very low  and number of the records that inserted in oracle also
> >> >> reduce
> >> >> to very low .
> >> >> I don't know why, anyone can help me?
> >> >>
> >> >> my server is 4 cpu (Intel(R) Xeon(R) CPU            5110  1.60GHz),
> >> linux
> >> >> my database is oracle
> >> >> jvm version is 6.0
> >> >>
> >> >> (But : if  my handler not perform database operations the condition
> >> above
> >> >> never happen!)
> >> >>
> >> >> --
> >> >> View this message in context:
> >> >>
> >>
> http://www.nabble.com/a-question--when-running-performance--test-by-loadruner-tf4683007s16868.html#a13381592
> >> >> Sent from the Apache MINA Support Forum mailing list archive at
> >> >> Nabble.com
> >> >> .
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/a-question--when-running-performance--test-by-loadruner-tf4683007s16868.html#a13383246
> >> Sent from the Apache MINA Support Forum mailing list archive at
> >> Nabble.com
> >> .
> >>
> >>
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/a-question--when-running-performance--test-by-loadruner-tf4683007s16868.html#a13406063
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com
> .
>
>

Reply via email to