回复:JIRA 4.1.2。是什么让这个查询调用?
Re: JIRA 4.1.2. What makes this query call?
我们使用的是不受支持的 JIRA 版本,即使我们有支持许可证,Atlassian 也不会就此主题向我们提供支持。
我们的数据库在过去一周发布了一个补丁,我们看到系统上的查询数量从每天 80 万跃升至超过 3600 万。 JIRA 系统正在尝试从组中删除用户。以下是我们的 EnterpriseDB 日志捕获的内容
"execute <unnamed>: DELETE FROM public.membershipbase WHERE USER_NAME= AND GROUP_NAME="
我们根本不明白为什么它会尝试这样做,如果您能帮助我们找出造成这种情况的原因,我们将不胜感激。我检查了我们拥有的所有代码,检查了数据库中的所有函数,查找了存储过程,甚至查看了所有视图。我没有看到任何可以进行上述调用的东西。如果您对这个版本的 JIRA 有任何经验,请提供您可能有的任何建议。从我读到的内容来看,从 5.0 版开始,USERBASE 和 MEMBERSHIPBASE 表已被删除,这就是为什么我要求那些具有 4.1.2 知识的人。
正如您所指出的,membershipbase
table 包含属于 JIRA 内部组的用户。我最好的猜测是,您可能将 JIRA 设置为使用 LDAP/AD 进行身份验证(使用 Crowd?),并且它正在尝试将组成员身份的更改同步到 JIRA。
例如,如果 JIRA 配置了一个过于宽泛的 LDAP 过滤器,用于包含大型公司中的邮件列表等的组,而另一个公司管理员要删除 and/or 移动一堆过滤器外的 LDAP 树中的条目,我可以看到这导致 JIRA 中发生大量删除。
一个对 运行 有用的命令是这个(根据你上面的评论,我想你需要向你的 dBAs 请求):
SELECT GROUP_NAME, count(1) FROM public.membershipbase GROUP BY GROUP_NAME ORDER BY 1 DESC
这会报告每个组中的用户数。然后 运行 一分钟后再次执行相同的命令,并比较输出。这应该让您知道哪些组正在被修改,而不必安装 SQL 监控工具。 (您可能还想查看 JIRA 中总共有多少组,并验证它看起来是否合理。)
无论哪种方式,您都可以深入了解 updated/deleted 的实际用户,并开始询问其他系统管理员。
您也可以尝试重新启动 JIRA 以查看更新是否消失。如果它是 legitimate/intended LDAP 同步操作,我想 DELETEs
会很快重新启动。
编辑添加:
代替 SQL 查询,Group Browser in the admin UI 也会向您显示一些相同的信息,尽管它不是特别适合比较。
创建查询的项目中实现了名为 opensymphony 的库包。
人们为什么不自己学习编写 SQL。 IMO 更干净、更简单。
解决方法是将编码为 100,000 的用户缓存中的 1000 个条目的限制更改为 100,000。
我说这是黑客修复,因为我们不理解编码内容的意图。代码中没有注释,也没有任何文档说明为什么将其设置为如此低的数字。
Updated: 9/17/2015 After speaking with a trainer for Jira 6.x they
said that this issue was not Jira based. Someone had modified the
source code. Jira 4.x has no such limiter of 1000 for
caching.
我们使用的是不受支持的 JIRA 版本,即使我们有支持许可证,Atlassian 也不会就此主题向我们提供支持。
我们的数据库在过去一周发布了一个补丁,我们看到系统上的查询数量从每天 80 万跃升至超过 3600 万。 JIRA 系统正在尝试从组中删除用户。以下是我们的 EnterpriseDB 日志捕获的内容
"execute <unnamed>: DELETE FROM public.membershipbase WHERE USER_NAME= AND GROUP_NAME="
我们根本不明白为什么它会尝试这样做,如果您能帮助我们找出造成这种情况的原因,我们将不胜感激。我检查了我们拥有的所有代码,检查了数据库中的所有函数,查找了存储过程,甚至查看了所有视图。我没有看到任何可以进行上述调用的东西。如果您对这个版本的 JIRA 有任何经验,请提供您可能有的任何建议。从我读到的内容来看,从 5.0 版开始,USERBASE 和 MEMBERSHIPBASE 表已被删除,这就是为什么我要求那些具有 4.1.2 知识的人。
正如您所指出的,membershipbase
table 包含属于 JIRA 内部组的用户。我最好的猜测是,您可能将 JIRA 设置为使用 LDAP/AD 进行身份验证(使用 Crowd?),并且它正在尝试将组成员身份的更改同步到 JIRA。
例如,如果 JIRA 配置了一个过于宽泛的 LDAP 过滤器,用于包含大型公司中的邮件列表等的组,而另一个公司管理员要删除 and/or 移动一堆过滤器外的 LDAP 树中的条目,我可以看到这导致 JIRA 中发生大量删除。
一个对 运行 有用的命令是这个(根据你上面的评论,我想你需要向你的 dBAs 请求):
SELECT GROUP_NAME, count(1) FROM public.membershipbase GROUP BY GROUP_NAME ORDER BY 1 DESC
这会报告每个组中的用户数。然后 运行 一分钟后再次执行相同的命令,并比较输出。这应该让您知道哪些组正在被修改,而不必安装 SQL 监控工具。 (您可能还想查看 JIRA 中总共有多少组,并验证它看起来是否合理。)
无论哪种方式,您都可以深入了解 updated/deleted 的实际用户,并开始询问其他系统管理员。
您也可以尝试重新启动 JIRA 以查看更新是否消失。如果它是 legitimate/intended LDAP 同步操作,我想 DELETEs
会很快重新启动。
编辑添加:
代替 SQL 查询,Group Browser in the admin UI 也会向您显示一些相同的信息,尽管它不是特别适合比较。
创建查询的项目中实现了名为 opensymphony 的库包。
人们为什么不自己学习编写 SQL。 IMO 更干净、更简单。
解决方法是将编码为 100,000 的用户缓存中的 1000 个条目的限制更改为 100,000。
我说这是黑客修复,因为我们不理解编码内容的意图。代码中没有注释,也没有任何文档说明为什么将其设置为如此低的数字。
Updated: 9/17/2015 After speaking with a trainer for Jira 6.x they said that this issue was not Jira based. Someone had modified the source code. Jira 4.x has no such limiter of 1000 for caching.