Please open a Jira ticket. I think we can optimize the DB settings even more. Of course, derby probably isn't the best DB to deal with performance tests.
If I remember correctly, you can use progress as well by changing a property in default.props. D. On Thu, Dec 17, 2009 at 10:40 AM, Markus Kohler <[email protected]> wrote: > Hi all, > I described Plan A and B last time for getting a first load test running, > but since I'm always told to be "agile" and "lean" I decided to go for plan > C ;-) > > I've got the first load tests running using http://celerity.rubyforge.org/. > Celerity is an implemenation of watir (http://watir.com/) on top of Jruby > instead of "standard" ruby, which uses htmlunit (a Java library to simulate > a browser, without the rendering part) to execute the tests. Celerity > supports multithreaded tests and can therefore be used for load tests. > > Since I have a some experience with watir, I thought I could give it a try. > After I got around some issues caused by my limited understanding of how > multithreading works in ruby, it seems to work fine. > > At least I got enough load (50 users sending 10 messages) onto my local > ESME instance to lock it up. I first thought there's a dead lock, but It > would "only" respond very slowly. > > This behavior seems to be caused by exceeding the available data base > connections. I'm still using Derby and I didn't check the configuration. > > It seems that bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > retries to get a connection after 10 seconds. > It does a recursive call to do so and since no tail-recursion optimization > is kicking in I think this is not a good idea and should be changed. > The stacktrace is very long: > > "32640...@qtp-18149218-105" prio=6 tid=0x4c4f5000 nid=0x1b34 in > Object.wait() [0 > x4e19b000..0x4e19fc80] > java.lang.Thread.State: TIMED_WAITING (on object monitor) > at java.lang.Object.wait(Native Method) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:279) > - locked <0x09682bd8> (a bootstrap.liftweb.DBVendor$) > at > net.liftweb.mapper.DB$$anonfun$1$$anonfun$apply$1.apply(DB.scala:90) > at > net.liftweb.mapper.DB$$anonfun$1$$anonfun$apply$1.apply(DB.scala:90) > at net.liftweb.common.EmptyBox.or(Box.scala:374) > at net.liftweb.mapper.DB$$anonfun$1.apply(DB.scala:90) > at net.liftweb.mapper.DB$$anonfun$1.apply(DB.scala:90) > at net.liftweb.common.Full.flatMap(Box.scala:332) > at net.liftweb.mapper.DB$.newConnection(DB.scala:90) > at net.liftweb.mapper.DB$.getConnection(DB.scala:186) > at net.liftweb.mapper.DB$.use(DB.scala:446) > at > net.liftweb.mapper.KeyedMetaMapper$class.findDbByKey(MetaMapper.scala > :1566) > at org.apache.esme.model.User$.findDbByKey(User.scala:49) > at > net.liftweb.mapper.KeyedMetaMapper$class.findDbByKey(MetaMapper.scala > :1562) > at org.apache.esme.model.User$.findDbByKey(User.scala:49) > at > net.liftweb.mapper.KeyedMetaMapper$$anonfun$find$2.apply(MetaMapper.s > cala:1547) > at > net.liftweb.mapper.KeyedMetaMapper$$anonfun$find$2.apply(MetaMapper.s > cala:1547) > at net.liftweb.common.Full.flatMap(Box.scala:332) > at > net.liftweb.mapper.KeyedMetaMapper$class.find(MetaMapper.scala:1547) > at org.apache.esme.model.User$.find(User.scala:49) > at > org.apache.esme.model.User$curUser$$anonfun$$init$$2$$anonfun$apply$1 > .apply(User.scala:172) > at > org.apache.esme.model.User$curUser$$anonfun$$init$$2$$anonfun$apply$1 > .apply(User.scala:172) > at net.liftweb.common.Full.flatMap(Box.scala:332) > > > > It seems we are hitting the DB to get the currentUser. > I have to redo the test and will then post the whole thread dump with all > the stack traces. > I can also open a JIRA ticket if you want that. > > > Regards, > Markus > > > > "The best way to predict the future is to invent it" -- Alan Kay >
