Joe PearceManagerPerformance & Benchmarking
Oracle Corporation
Messaging & Calendaringwith
Oracle Collaboration Suite10g
Suite Architecture
Distributed solution– Tune each system– Tune connection pools
StorageServers
DirectoryServer
ApplicationServers
Mail Service behavior
Servers discover parameters in the Internet Directory– LDAP also used for authentication and name resolution
Servers pin connection pools for all mail stores and directory as needed
StorageServers
DirectoryServer
Mail Servers
Overview of Mail ArchitectureIMAP / POP
SMTP_OUTSMTP_IN
LIST SERVEROJMA
HOUSE KEEPING
ES_HEADERES_HEADERES_QUEUEES_QUEUE ES_EXT_HEADERES_EXT_HEADER
ES_RECIPIENTES_RECIPIENT ES_SHELLES_SHELL ES_BODYES_BODY
ES_INSTANCEES_INSTANCE
Tuning Sequence
Tuning is an iterative process
1st tune the mail stores
2nd tune the LDAP
3rd tune the mail servers– connection pools
Tuning the Mail StoreTuning the Mail Store
Tuning the Database
Regular DBA tuning– Ensure fastest I/O layout, sufficient buffer size
and hit ratio, etc.
At higher transaction rates, partition the tables and increase the sequence cache size
Run Housekeeper process only at night If using RAC in active/active mode, run the
SMTP processes against only one instance
Tuning the DB, cont’
Shadow process memory should NEVER page
– Count all process connection pool maximums– Number of shadow processes x XXX
Analyze tables when big change in data size– Do not analyze es_queue when system is down– Run oidstats.sh
after the addition of many users
Schema Modifications
Ensure Tablespaces are auto-spaced and locally managed
Increase Cache on Sequences Partition Indexes and tables
– Not ES_INSTANCE
Re-organize the ES_INSTANCE table
Real Application Clusters
Mail access efficiently scales
Mail delivery does not– Point at a single
instance
IMAP / POPSMTP_IN
Tuning the Directory
Tuning the Directory
Tuning OID
Oidstats.sh– Analyzes tables– Creates cost based statistics
Run after adding large number of users
Tuning the Mail ServersTuning the
Mail Servers
Mail Server ProcessesSQL/NET SQL/NET ListenerListener
Thread Thread PoolPool
Thread Thread PoolPool
Thread Thread PoolPool
Active Socket Active Socket ListList
Mail StoreMail StoreConnection PoolConnection Pool
LDAPLDAPConnectioConnectio
nnpoolpool
Global Global ContextContext
User User ContextContext
User User ContextContext
User User ContextContext
Server Process Tuning
Number of instances Number of threads per instance Concurrent listeners
Connection Pool Configuration– Minimum– Increment– Maximum
Instances and Threads
Keep maximum threads low in SMTP Relay Each instance of IMAP has a maximum limit
of 1024 concurrent sockets– Some fat clients use up two
Webmail considerations
Create same number of OC4J_UM instances as CPU’s on the host
– Monitor CPU usage
Ensure low latency between web server and the Internet Directory
Turn on HTTP compression Turn off sorting Set DB pool timing to ‘true’ during sizing
Determining optimal settings
Database connections– Client failures vs. wasted resources– Shadow processes on the database
.DUMP.Dbconnections.dump– Connection to usage falls off– Steep slope implies fast responses– Small usage is near max connection value
Determining optimal settings
Directory connections– No direct tool available – Set minimum to small number
But still greater than 1
– Set increment to ‘1’– Use netstat to find number of connections
established Look for ‘ldap’ and ‘ESTABLISHED’
How far can you scale?
Mutually independent service processes
– scale horizontally with extremely high limits
– Millions of Mailboxes Messages Folders
A store will be the eventual constraint
Multi-node systems– scale horizontally with
extremely high limits– Millions of
Mailboxes Messages Folders
AQ&Q U E S T I O N SQ U E S T I O N S
A N S W E R SA N S W E R S