JIRA stats logs - top mentionable & assignable users stats
Platform Notice: Data Center Only - This article only applies to Atlassian apps on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Environment
Jira 8.19.1 or later
Information regarding Jira versions lower than 8.19.1
Before Jira 8.19.1 the algorithm would get top users matching a given pattern and only then apply filters based on permission scheme configuration for every user, until top N users matched the given query. Such algorithm could potentially end up on iterating over all users matching the query (potentially all users). Also the filter applied to every user matching the query could have trigger a request to the database. This may have caused serious performance problems:
JSWSERVER-20336 - Searching and Mentioning users may cause performance issues and high CPU load
JRASERVER-72633 - @mention results differ between issue creation and issue view
Jira stat logs in Jira 8.19.1
A new way of getting top mentionable and top assignable users was introduced in Jira 8.19.1. In this version we have made the algorithm more stable by reversing the approach, where top users for given permission scheme configuration are retrieved directly from the database. The new solution comes with common Jira snapshot/total stats which can be used to validate mention & assignee performance:
total:
[JIRA-STATS] [UserSearchServiceStats] total stats: [data]snapshot:
[JIRA-STATS] [UserSearchServiceStats] snapshot stats:[data]
Check Mentionable & assignable users - tips & tricks to see how to interpret this data.
Stats structure (main parts):
legacy
findTopMentionableUsersInIssueLegacyMode
findTopAssignableUsersLegacyMode
optimised
findTopMentionableUsers
timeInMillis
findTopAssignableUsers
timeInMillis
findTopUsersInternal - common for mentionable and assignable
timeInMillis
permissionSchemeLogic
findTopUsersWithPermissionInIssue - path used to get users for permissions based on users
timeInMillis
findTopUsersWithPermissionInIssueFromGroups - path used to get users for permissions based on groups
timeInMillis
isNestedGroupsEnabledForAnyDirectory - are nested groups supported (Note: can affect performance when configured groups resolves to thousands of nested groups)
{
"legacy": {
"findTopMentionableUsersInIssueLegacyMode": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"queryLength": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"0": 0,
"1": 0,
"2": 0,
"4": 0,
"8": 0
}
},
"resultSize": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"0": 0,
"10": 0,
"100": 0
}
},
"topN": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"10": 0,
"100": 0,
"1000": 0
}
}
},
"findTopAssignableUsersLegacyMode": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"queryLength": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"0": 0,
"1": 0,
"2": 0,
"4": 0,
"8": 0
}
},
"newIssue": 0,
"existingIssue": 0,
"resultSize": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"0": 0,
"10": 0,
"100": 0
}
},
"topN": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"10": 0,
"100": 0,
"1000": 0
}
}
}
},
"optimised": {
"findTopMentionableUsers": {
"timeInMillis": {
"count": 6877,
"min": 9,
"max": 241,
"sum": 113285,
"avg": 16,
"distributionCounter": {
"5": 0,
"10": 405,
"50": 6363,
"100": 89,
"500": 20,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"queryLength": {
"count": 6877,
"min": 0,
"max": 3,
"sum": 11,
"avg": 0,
"distributionCounter": {
"0": 6871,
"1": 2,
"2": 3,
"4": 1,
"8": 0
}
},
"existingIssue": 6877,
"resultSize": {
"count": 6877,
"min": 2,
"max": 5,
"sum": 34380,
"avg": 4,
"distributionCounter": {
"0": 0,
"10": 6877,
"100": 0
}
},
"topN": {
"count": 6877,
"min": 5,
"max": 5,
"sum": 34385,
"avg": 5,
"distributionCounter": {
"10": 6877,
"100": 0,
"1000": 0
}
}
},
"findTopAssignableUsers": {
"timeInMillis": {
"count": 26,
"min": 12,
"max": 179,
"sum": 760,
"avg": 29,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 25,
"100": 0,
"500": 1,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"queryLength": {
"count": 26,
"min": 0,
"max": 8,
"sum": 91,
"avg": 3,
"distributionCounter": {
"0": 1,
"1": 4,
"2": 5,
"4": 8,
"8": 8
}
},
"newIssue": 1,
"existingIssue": 25,
"resultSize": {
"count": 26,
"min": 1,
"max": 150,
"sum": 712,
"avg": 27,
"distributionCounter": {
"0": 0,
"10": 10,
"100": 15,
"9223372036854775807": 1
}
},
"topN": {
"count": 26,
"min": 50,
"max": 150,
"sum": 1400,
"avg": 53,
"distributionCounter": {
"10": 0,
"100": 25,
"1000": 1
}
}
},
"findTopUsersInternal": {
"timeInMillis": {
"count": 6903,
"min": 5,
"max": 202,
"sum": 63566,
"avg": 9,
"distributionCounter": {
"5": 204,
"10": 5610,
"50": 1020,
"100": 56,
"500": 13,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"unsupportedPermissionTypes": [],
"resultSize": {
"count": 6903,
"min": 1,
"max": 150,
"sum": 35092,
"avg": 5,
"distributionCounter": {
"0": 0,
"10": 6887,
"100": 15,
"9223372036854775807": 1
}
},
"getPermissionSchemeIdFor": {
"timeInMillis": {
"count": 6903,
"min": 1,
"max": 127,
"sum": 21386,
"avg": 3,
"distributionCounter": {
"5": 6214,
"10": 496,
"50": 189,
"100": 3,
"500": 1,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
},
"getSchemePermissions": {
"timeInMillis": {
"count": 6903,
"min": 1,
"max": 158,
"sum": 21505,
"avg": 3,
"distributionCounter": {
"5": 6222,
"10": 495,
"50": 182,
"100": 1,
"500": 3,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"resultSize": {
"count": 6903,
"min": 1,
"max": 5,
"sum": 13667,
"avg": 1,
"distributionCounter": {
"0": 0,
"10": 6903,
"100": 0
}
}
},
"findTopUsers": {
"timeInMillis": {
"count": 6832,
"min": 0,
"max": 42,
"sum": 826,
"avg": 0,
"distributionCounter": {
"5": 6781,
"10": 33,
"50": 18,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"resultSize": {
"count": 6832,
"min": 1,
"max": 150,
"sum": 34737,
"avg": 5,
"distributionCounter": {
"0": 0,
"10": 6816,
"100": 15,
"9223372036854775807": 1
}
}
},
"permissionSchemeLogic": {
"anyUserType": 6038,
"anyGroupType": 486,
"allAllowed": 6832,
"isGroupAny": 48,
"isApplicationRoleAnyLoggedInUser": 6808,
"nobodyAllowed": 0,
"isIssueUserTypeReporter": 0,
"isIssueUserTypeAssignee": 0,
"isIssueUserTypeProjectLead": 0,
"isUserTypeUser": 5774,
"isUserTypeProjectRole": 486,
"isUserTypeCustomField": 0,
"isGroupTypeGroup": 23,
"isGroupTypeProjectRole": 486,
"isGroupTypeCustomField": 0,
"isGroupTypeApplicationRole": 24
},
"findInIssueDefinedUsers": {
"timeInMillis": {
"count": 6903,
"min": 2,
"max": 202,
"sum": 57597,
"avg": 8,
"distributionCounter": {
"5": 282,
"10": 5702,
"50": 906,
"100": 5,
"500": 8,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"queryLength": {
"count": 6903,
"min": 0,
"max": 8,
"sum": 102,
"avg": 0,
"distributionCounter": {
"0": 6872,
"1": 6,
"2": 8,
"4": 9,
"8": 8
}
},
"resultSize": {
"count": 6903,
"min": 0,
"max": 2,
"sum": 7824,
"avg": 1,
"distributionCounter": {
"0": 56,
"10": 6847,
"100": 0
}
},
"findMatchingUsers": {
"timeInMillis": {
"count": 6903,
"min": 2,
"max": 202,
"sum": 57135,
"avg": 8,
"distributionCounter": {
"5": 299,
"10": 5701,
"50": 891,
"100": 5,
"500": 7,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"usernamesSize": {
"count": 6903,
"min": 0,
"max": 2,
"sum": 7639,
"avg": 1,
"distributionCounter": {
"1": 6141,
"2": 762,
"3": 0
}
},
"resultSize": {
"count": 6903,
"min": 0,
"max": 2,
"sum": 7824,
"avg": 1,
"distributionCounter": {
"0": 56,
"10": 6847,
"100": 0
}
}
}
},
"findTopUsersWithPermissionInIssue": {
"timeInMillis": {
"count": 71,
"min": 3,
"max": 39,
"sum": 467,
"avg": 6,
"distributionCounter": {
"5": 38,
"10": 25,
"50": 8,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"sqlCount": {
"count": 71,
"min": 1,
"max": 1,
"sum": 71,
"avg": 1,
"distributionCounter": {
"0": 0,
"1": 71,
"2": 0,
"3": 0,
"4": 0,
"5": 0
}
},
"resultSize": {
"count": 71,
"min": 2,
"max": 5,
"sum": 283,
"avg": 3,
"distributionCounter": {
"0": 0,
"10": 71,
"100": 0
}
},
"findTopUsersFromTypeUser": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
},
"findTopUsersFromUserCF": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
},
"findTopUsersFromTypeProjectRoleUsers": {
"timeInMillis": {
"count": 71,
"min": 3,
"max": 38,
"sum": 464,
"avg": 6,
"distributionCounter": {
"5": 38,
"10": 25,
"50": 8,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"resultSize": {
"count": 71,
"min": 2,
"max": 5,
"sum": 283,
"avg": 3,
"distributionCounter": {
"0": 0,
"10": 71,
"100": 0
}
}
}
},
"findTopMentionableUsersInIssueFromGroups": {
"timeInMillis": {
"count": 71,
"min": 27,
"max": 139,
"sum": 3750,
"avg": 52,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 42,
"100": 25,
"500": 4,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"resultSize": {
"count": 71,
"min": 5,
"max": 5,
"sum": 355,
"avg": 5,
"distributionCounter": {
"0": 0,
"10": 71,
"100": 0
}
},
"findTopUsersWithNameInGroups": {
"timeInMillis": {
"count": 71,
"min": 0,
"max": 32,
"sum": 448,
"avg": 6,
"distributionCounter": {
"5": 49,
"10": 5,
"50": 17,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"groupSize": {
"count": 71,
"min": 14,
"max": 31,
"sum": 1810,
"avg": 25,
"distributionCounter": {
"1": 0,
"10": 0,
"100": 71,
"1000": 0
}
},
"resultSize": {
"count": 71,
"min": 5,
"max": 5,
"sum": 355,
"avg": 5,
"distributionCounter": {
"0": 0,
"10": 71,
"100": 0
}
},
"QueryDslJiraCrowdDAOSettings": {
"batchSize": 1000,
"maxTop": 100,
"maxGroupNestedLevel": 20
}
},
"findNestedGroupsOf": {
"timeInMillis": {
"count": 71,
"min": 22,
"max": 99,
"sum": 2778,
"avg": 39,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 64,
"100": 7,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"groupSize": {
"count": 71,
"min": 1,
"max": 1,
"sum": 71,
"avg": 1,
"distributionCounter": {
"1": 71,
"10": 0,
"100": 0,
"1000": 0
}
},
"resultSize": {
"count": 71,
"min": 14,
"max": 31,
"sum": 1810,
"avg": 25,
"distributionCounter": {
"0": 0,
"10": 0,
"100": 71
}
}
},
"findGroupsFrom": {
"timeInMillis": {
"count": 71,
"min": 2,
"max": 65,
"sum": 449,
"avg": 6,
"distributionCounter": {
"5": 45,
"10": 22,
"50": 3,
"100": 1,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"sqlCount": {
"count": 71,
"min": 1,
"max": 2,
"sum": 94,
"avg": 1,
"distributionCounter": {
"0": 0,
"1": 48,
"2": 23,
"3": 0,
"4": 0,
"5": 0
}
},
"resultSize": {
"count": 71,
"min": 1,
"max": 1,
"sum": 71,
"avg": 1,
"distributionCounter": {
"0": 0,
"10": 71,
"100": 0
}
},
"findGroupsFromTypeGroup": {
"timeInMillis": {
"count": 23,
"min": 2,
"max": 24,
"sum": 92,
"avg": 4,
"distributionCounter": {
"5": 20,
"10": 2,
"50": 1,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"resultSize": {
"count": 23,
"min": 2,
"max": 2,
"sum": 46,
"avg": 2,
"distributionCounter": {
"0": 0,
"10": 23,
"100": 0
}
}
},
"findGroupsFromTypeProjectRoleGroup": {
"timeInMillis": {
"count": 71,
"min": 2,
"max": 65,
"sum": 343,
"avg": 4,
"distributionCounter": {
"5": 60,
"10": 8,
"50": 2,
"100": 1,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0,
"resultSize": {
"count": 71,
"min": 0,
"max": 2,
"sum": 96,
"avg": 1,
"distributionCounter": {
"0": 23,
"10": 48,
"100": 0
}
}
},
"findGroupsFromGroupCF": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
},
"findGroupsFromSelectCF": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
},
"findGroupsFromApplicationRole": {
"timeInMillis": {
"count": 0,
"min": 0,
"max": 0,
"sum": 0,
"avg": 0,
"distributionCounter": {
"5": 0,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"exception": 0
}
},
"isNestedGroupsEnabledForAnyDirectory": {
"timeInMillis": {
"count": 71,
"min": 0,
"max": 5,
"sum": 7,
"avg": 0,
"distributionCounter": {
"5": 71,
"10": 0,
"50": 0,
"100": 0,
"500": 0,
"1000": 0,
"5000": 0,
"10000": 0,
"30000": 0
}
},
"directories": 2,
"nestedGroupsEnabled": true,
"exceptions": 0
}
}
}
}
}Was this helpful?