Uploaded image for project: 'Service Packs and Hot Fixes'
  1. Service Packs and Hot Fixes
  2. MNT-10790

make the coupling between alfresco and auditing loose or pluggable: asynchronous messages / syslog messages / mongodb?

    Details

    • Type: Service Pack Request
    • Status: Closed (View Workflow)
    • Resolution: Not a bug
    • Affects Version/s: 4.1.6
    • Fix Version/s: None
    • Component/s: Auditing
    • Labels:
      None
    • Bug Priority:
      Category 2
    • ACT Numbers:

      144692

      Description

      Currently when auditing is enabled, we insert a row (4.1.6) in alf_prop_link at each action (even read)

      As an example, in that customer environment, we have:

      30335744 audit lines
      01760007 nodes
      03904155 node properties

      Thwere is a factor of 10 between the size of alf_node_properties and alf_prop_link

      | alf_prop_link                  | InnoDB |      10 | Compact    | 30335744 |             81 |  2485125120 |               0 |   4099932160 |   7340032 |           NULL | 2013-12-14 04:37:54 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
      
      
      
      | alf_node                       | InnoDB |      10 | Compact    |  1760007 |            166 |   293437440 |               0 |    450953216 |   6291456 |        2827624 | 2013-12-14 04:33:16 | NULL        | NULL       | utf8_bin        |     NULL |                |         |
      
      | alf_node_properties            | InnoDB |      10 | Compact    |  3904155 |            127 |   497025024 |               0 |    485408768 |   5242880 |           NULL | 2013-12-14 04:35:29 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
      

      This has for effect to slow down the system

      Customer ask we couple auditing to alfresco in a looser way (e.g emitting UDP syslog messages asynchronously)

      A simple getchildren CMIS request takes 10 times longer with audit enabled (40seconds) than with auditing disabled (4 seconds)

      curl --user admin:admin http://localhost:8080/alfresco/service/cmis/p/folder1/children

      NOte: thread dumps also seem to confirm the system is stuck doing org.alfresco.repo.audit.AuditComponentImpl.recordAuditValues most of the 40 seconds

      grep -i --color -l org.alfresco.repo.audit.AuditComponentImpl.recordAuditValues *
      
      threadDump_10.log
      threadDump_11.log
      threadDump_12.log
      threadDump_16.log
      threadDump_17.log
      threadDump_18.log
      threadDump_19.log
      threadDump_20.log
      threadDump_21.log
      threadDump_22.log
      threadDump_23.log
      threadDump_2.log
      threadDump_3.log
      threadDump_5.log
      threadDump_6.log
      threadDump_7.log
      threadDump_9.log
      
      grep -i --color 14093: *
      threadDump_10.log:Thread 14093: (state = IN_NATIVE)
      threadDump_11.log:Thread 14093: (state = IN_NATIVE)
      threadDump_12.log:Thread 14093: (state = IN_JAVA)
      threadDump_13.log:Thread 14093: (state = IN_VM)
      threadDump_14.log:Thread 14093: (state = IN_JAVA)
      threadDump_15.log:Thread 14093: (state = IN_JAVA)
      threadDump_16.log:Thread 14093: (state = IN_NATIVE)
      threadDump_17.log:Thread 14093: (state = IN_NATIVE)
      threadDump_18.log:Thread 14093: (state = IN_NATIVE)
      threadDump_19.log:Thread 14093: (state = IN_NATIVE)
      threadDump_1.log:Thread 14093: (state = BLOCKED)
      threadDump_20.log:Thread 14093: (state = IN_NATIVE)
      threadDump_21.log:Thread 14093: (state = IN_NATIVE)
      threadDump_22.log:Thread 14093: (state = IN_NATIVE)
      threadDump_23.log:Thread 14093: (state = IN_NATIVE)
      threadDump_24.log:Thread 14093: (state = BLOCKED)
      threadDump_25.log:Thread 14093: (state = BLOCKED)
      threadDump_2.log:Thread 14093: (state = IN_NATIVE)
      threadDump_3.log:Thread 14093: (state = IN_NATIVE)
      threadDump_4.log:Thread 14093: (state = IN_JAVA)
      threadDump_5.log:Thread 14093: (state = IN_NATIVE)
      threadDump_6.log:Thread 14093: (state = IN_NATIVE)
      threadDump_7.log:Thread 14093: (state = IN_NATIVE)
      threadDump_8.log:Thread 14093: (state = IN_JAVA)
      threadDump_9.log:Thread 14093: (state = IN_NATIVE)
      

      Workaround:
      ===========
      It seems necessary to prune the history of auditing to get a better performance.

        Attachments

          Structure

            Activity

              People

              • Assignee:
                closedissues Closed Issues
                Reporter:
                amadon Alex Madon [X] (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Structure Helper Panel