JIRA stats logs - top mentionable & assignable users stats

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

JIRA 8.19.1 SERVER DC

A new way of getting top mentionable and top assignable users was introduced in Jira 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 perfrormance problems:


In JIRA 8.19.1 we have made the algorithm more stable by reversing the approach. We are getting top users for given permission scheme configuration 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
        }
      }
    }
  }
}




最終更新日: 2021 年 10 月 19 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する

このセクションの項目

Powered by Confluence and Scroll Viewport.