Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Note

Tracking known Sakai performance issues that we need need to address

Wiki Markup
{note}
Tracking known Sakai performance issues that we need need to address
{note}

h2. sakai_2-5-x

...



h2. sakai_2-4-x

...


* Email from Lance Speelmon

...


** [https://oncourse.iu.edu/access/wiki/site/3001b886-1069-4fb7-00d5-8db4b3a85f74/home.html

...

]
** {noformat}
Adi,

Let me see if I can outline the changes:

1) DBCP settings we have been running for 2+ years:
minSize=10
initialSize=10
maxSize=50

2) When we started seeing DBCP having problems establishing new database connections, we switched to:
minSize=50
initialSize=50
maxSize=50
* These settings served us pretty well until we saw the 2x load increase the first week of classes.

3) Once the load really hit we tried:
minSize=150
initialSize=150
maxSize=150
* We were still seeing errors with creating new database connections and DBCP deadlocks.

4) Our current settings after switching to c3p0:
minSize=150
initialSize=150
maxSize=150
* We still saw connection errors, but c3p0 was able to cope without any deadlocking.

5) Now that we think we have resolved our Oracle connection issues, we are considering moving to the following settings for c3p0:
minSize=10
initialSize=10
maxSize=150
* The change that we think resolved the Oracle connection issues were increasing number of dispatchers, and disabling automatic memory management.

Thanks, L

...

{noformat}
** {noformat}
Do you have minIdle and maxIdle set? and does maxIdle = maxActive? That will
ensure you don't create new db connections and will help you scale much
better.

We have 8 appservers and use:

minIdle@javax.sql.BaseDataSource=1
maxIdle@javax.sql.BaseDataSource=14
initialSize@javax.sql.BaseDataSource=15
maxActive@javax.sql.BaseDataSource=14

with 400 requests per second peak, I'm don't see why you would
need 2400 db pool connections -- maybe 400 * 2 for safety, but you are just
eating PGA unnecessarily with all those connections, and that memory could be
used for SGA instead (we reduced our PGA from 512m to 256m and haven't seen
problems).

Adi

...

{noformat}
* Email exchange with R. P. Aditya : aditya@grot.org

...


** {noformat}
On Fri, Aug 31, 2007 at 11:50:34AM -0700, Thomas Amsler wrote:
> > Are the 15 connections in the DBCP connection pool you max setting? I think 
> > the default is max=50 in OOTB.

on our 8 appservers, we use:

minIdle@javax.sql.BaseDataSource=1
maxIdle@javax.sql.BaseDataSource=14
initialSize@javax.sql.BaseDataSource=15
maxActive@javax.sql.BaseDataSource=14

and in typical use, even at peak, we only see 2-3 active via Oracle

The most important thing for Oracle is that maxIdle = maxActive so that the
pool connections are never dropped or recycled since setting up new
connections is terribly expensive...

Adi
{noformat}
** {noforamt}
Adi

...

,

Would you mind sharing your Oracle memory settings?  We are currently running with:
db_cache_size = 4096M (from 5120M)
shared_pool_size = 3072M (from 4096M)
java_pool_size = 250M (no change)
large_pool_size= 2048M (from 4096M)
sga_max_size = 20480M (from 24576M)

Thanks, L 
{noformat}
* [SAK-9860|http://jira.sakaiproject.org/jira/browse/SAK-9860] : Excessive db queries generated from Site Info / user service
** From Ian: {noformat}
Just commited a fix agaisnt SAK-9860

Its not a total fix, but you should be able to patch 2.4.x (once fully tested) and the profiler is saying the 
number of queries for a since request is now 1 rather than 4 the first time per user and then 0 after that.

Needs testing though, and only eliminates the EID/ID SQL.

...


{noformat}
* [SAK-11279|http://jira.sakaiproject.org/jira/browse/SAK-11279] : Spurious presence events

...


** From Stephen:

...

 {noformat

...

}
Hi all,

If you're running 2.4.0 or 2-4-x in production with presence enabled, you will probably want to apply the fix to presence/courier from:

http://jira.sakaiproject.org/jira/browse/SAK-11279

This is a bug that logs 2 presence events every time a presence refresh is made (every 30s per user). Fixing this reduced the volume of presence events in our production system by a factor of 10 or more.

Regards
Stephen 
{noformat}