This page can be used as a guide to obtain detailed performance information of your instance.

Please read the Confluence Reporting HOWTO for information about the reporting capabilities of Confluence, including the {sql} macro, charting and security.

Users and usage

Users

What is the typical number of concurrent active users i.e. number of concurrent requests being processed?

  • users with currently active requests
  • users currently using Confluence: eg including reading a page, editing a page, viewing search results.
  • users with sessions held in application server memory.
  • users logged in active users (Note that Confluence uses "Remember Me" Session cookies and in my experience of Confluence, users never explicitly log out).
  • define user types (viewer, editor, etc)

– light viewer
– rss reader
– searcher
– infrequent editor
– frequent editor
– administrator
– commenter

Usage

What is the average number of pages created per day, and similar usage stats (AWStat reports are a good starting place when User Access Logging is enabled)
To help interpret the raw access data, consider these important URL patterns:

Searches: http://<host>/dosearchsite.action
Rss requests: http://<host>/createrssfeed.action
Dashboard: dashboard.action
Creation: createpage.action
Editing: http://<host>/pages/editpage.action
Administrators: http://<host>/admin/*

Database usage statistics

The following SQL statements are for PostgreSQL database. You may need to adjust the queries to suit your database.

Note: specify the date range

Table sizes
SELECT relname, reltuples, relpages FROM pg_class ORDER BY relpages DESC ;
  • Example result:

relname

reltuples

relpages

pg_toast_1404472

115842

30116

trackbacklinks

451197

23832

bodycontent

170462

18197

The column reltuples is the number of rows in the table, relpages is the number of 8 KB pages used by the table. Indexes are included in this list as well.

In this example, the bodycontent table includes 170462 rows and is approximately 142 MB (18197 * 8 KB) in size.

Content created per day
select contenttype, min(number_of_changes), max(number_of_changes), avg(number_of_changes)
from (
    select contenttype, date_trunc('day', creationdate) , count(*) as number_of_changes 
    from content 
    where content.creationdate > date '2007-01-01' and version = 1
    group by contenttype, date_trunc('day', creationdate)        
     ) as dates
group by contenttype
  • Example result:

contenttype

min

max

avg

DRAFT

4

6

5.0000000000000000

MAIL

1

1

1.00000000000000000000

COMMENT

1

54

20.5040000000000000

USERINFO

1

45

15.8112449799196787

SPACEDESCRIPTION

1

3

1.1403508771929825

PAGE

1

119

21.4593495934959350

BLOGPOST

1

64

5.5925925925925926

Content edited per day
select contenttype, min(number_of_changes), max(number_of_changes), avg(number_of_changes)
from (
    select contenttype, date_trunc('day', lastmoddate) as changedate, count(*) as number_of_changes 
    from content 
    where content.creationdate > date '2007-01-01'
    group by contenttype, date_trunc('day', lastmoddate)        
     ) as dates
group by contenttype
  • Example result:

    contenttype

    min

    max

    avg

    BLOGPOST

    1

    718

    14.4705882352941176

    COMMENT

    1

    73

    23.5120000000000000

    DRAFT

    4

    6

    5.0000000000000000

    MAIL

    1

    1

    1.00000000000000000000

    PAGE

    1

    4658

    130.2650602409638554

    SPACEDESCRIPTION

    1

    4

    1.2033898305084746

    USERINFO

    1

    48

    16.7991967871485944

Number of existing pages
select contenttype, count(*) from content group by content.contenttype
  • Example result:

    contenttype

    count

    MAIL

    7914

    COMMENT

    12983

    SPACEDESCRIPTION

    232

    DRAFT

    10

    PAGE

    81465

    USERINFO

    13782

    BLOGPOST

    3308

Number of links per page
select http, max(linkcount), min(linkcount), avg(linkcount), stddev_pop(linkcount), stddev_samp(linkcount), var_pop(linkcount), var_samp(linkcount)
from
(
    select contentid, (links.destspacekey = 'http') as http, count(*) as linkcount 
    from links group by contentid, (links.destspacekey = 'http')
) as links_per_page
group by http
  • Example result:

    http

    max

    min

    avg

    stddev_pop

    stddev_samp

    var_pop

    var_samp

    false

    1994

    1

    5.8366957470010905

    32.7082672608353032

    32.7104967872521825

    1069.8307472062305489

    1069.9766000688353519

    true

    189

    1

    2.9633190883190883

    6.3609167066017375

    6.3614831031752836

    40.4612613483250948

    40.4684672719846362

http

max

min

avg

stddev_pop

stddev_samp

var_pop

var_samp

f

600

1

5.8769371011850501

21.0221241817454213

21.0245200019346061

441.9297051127255987

442.0304413117483308

t

695

1

3.9395946999220577

12.8270107456162932

12.8282606370439241

164.5322046681558531

164.5642709719305862

Number of characters per content body
select max(blength), min(blength), avg(blength), stddev(blength), variance(blength) 
from (select length(body) as blength from bodycontent) as bodylengths
where blength > 0
  • Example result:

    max

    min

    avg

    stddev

    variance

    488707

    1

    2826.5649320388349515

    8858.740996699238

    78477292.046599816739

(Note this query takes a long time to execute.)

Number of characters per page body
select max(blength), min(blength), avg(blength), stddev(blength), variance(blength) 
from (select length(bodycontent.body) as blength 
      from bodycontent, content 
      where bodycontent.contentid = content.contentid and contenttype='PAGE'
     ) as bodylengths
where blength > 0
  • Example result:

    max

    min

    avg

    stddev

    variance

    488707

    1

    3333.0885906386048069

    9884.337162920180

    97700121.150284961908

Attachments
select count(*), max(filesize), min(filesize), avg(filesize), stddev(filesize), sum(filesize) from attachments;
  • Example result:

    count

    max

    min

    avg

    stddev

    sum

    16082

    107431588

    0

    207641.309725158562

    2447904.9322

    3339287543

Attachments per page

List the stats for attachments per page, only for those pages that actually have attachments.

select count(*) as pages_with_attachments, avg(attachments_per_page), max(attachments_per_page), min(attachments_per_page), stddev(attachments_per_page) from
( select count(*) as attachments_per_page from attachments group by attachments.pageid ) as app
  • Example result:

    pages_with_attachments

    avg

    max

    min

    stddev

    4197

    3.8317846080533715

    231

    1

    10.7013051235493489

Configuration / plugin data stored in Bandana
  • Just the global context
    select count(*), sum(length(bandanavalue)) from bandana where bandanacontext = '_GLOBAL' 
  • Example result:

    count

    sum

    84

    47729

  • All of the information
    select count(*), sum(length(bandanavalue)) from bandana 
  • Example result:

    count

    sum

    665

    153094

Content

It is essential to obtain the typical configuration of database (#pages, #spaces, #registered users, etc), based on Global Stats Plugin

Home directory usage statistics

On Unix-based environments like Linux and Mac OS X, you can use the following commands to gather information about the home directory usage.

Size of home directory components
du -sh /path/to/home/directory/*
  • Example output:
5.9G	attachments
4.0K	backups
13M	bundled-plugins
8.0K	config
4.0K	confluence.cfg.xml
216K	fonts
3.4M	framework-bundles
2.9G	index
12M	plugin-cache
114M	plugins-temp
412K	resources
4.0K	restore
201M	temp
84M	thumbnails
222M	viewfile
Number of attachments, including all versions
find /path/to/home/directory/attachments -type f | wc -l