我们的Atlassian Confluence系统存在问题。
基本上我们有一个服务器,它与我们的Confluence和Jira协作系统共享我们的主要负载的SQL脚本,这些脚本为本月的生产部分进行数据转换。
值得注意的是 - 我们注意到在运行大型脚本并尝试访问Confluence页面时出现了一些巨大的减速,无论汇合操作如何(渲染页面,编辑页面,创建页面)......它们都陷入困境,最终等待几秒钟才能发生。
我们刚刚开始记录事务级别。它们如下:
在脚本运行时打开常规和慢速查询日志。
在此期间注意到汇合处的过度活动:下午12:33:01到下午13:27:16的SQL语句发布次数:
对于汇合,每秒43.85的声明。对于汇合声明,顶部是:
提交38,286 SET autocommit = 1 28,519 rollback 27,809 SET autocommit = 0 27,809 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED 27,809 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE阅读27,809 SELECT @@ session.tx_isolation 712
主要关注点是BOLD
所以我的问题是......在一段时间内,Confluence在发布这么多的事务级别读取是什么......?
即使是回顾数据库的内部处理,也不应该多次回顾数据库,无论是安全检查还是渲染数据......
那么,Confluence又做了什么?如果有人知道......这只是它的运作方式吗?我很想知道其他人的Confluence日志是否显示相对测量...
为什么会放慢速度?这是资源共享问题吗?
Confluence可以在会话级别配置数据库隔离级别,也可以依赖mysql的全局配置。
我的猜测是你的Confluence实例每个会话设置一次隔离级别。尝试全局配置隔离级别。有关如何执行此操作的说明,请参阅Confluence knowledge base
基本上,你只需要添加
事务隔离= READ-COMMITTED
到你的my.cnf文件
更一般地说,您可能希望查看MySql的Confluence安装指南,并确保按照他们的推荐方式配置数据库(请参阅https://confluence.atlassian.com/display/DOC/Database+Setup+For+MySQL#DatabaseSetupForMySQL-Step3.ConfigureMySQLServer)。
不建议添加全局设置。 请参考这个link
根据这篇文章,在3.5.6或更高版本中,建议不要将transaction-isolation=READ-COMMITTED
添加到my.cnf
我在atlassian / application-data / confluence下检查了confluence.cfg.xml
,默认情况下hibernate.connection.isolation
属性为2.(汇合V5.4.4)
所以我更喜欢忽略恼人的mysql日志,因为汇合工作正常:
110 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ<br>
108 Query SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED