Confluence7.4跟AD同步后,每天首次登录很慢。报错信息如下

java.lang.Throwable
at [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
at [email protected]/java.util.concurrent.locks.LockSupport.park(Unknown Source)
at [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
at [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(Unknown Source)
at [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(Unknown Source)
at [email protected]/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(Unknown Source)
at net.sf.ehcache.concurrent.ReadWriteLockSync.lock(ReadWriteLockSync.java:50)
at net.sf.ehcache.constructs.blocking.BlockingCache.acquiredLockForKey(BlockingCache.java:196)
at net.sf.ehcache.constructs.blocking.BlockingCache.get(BlockingCache.java:158)
at com.atlassian.cache.ehcache.LoadingCache.get(LoadingCache.java:79)
at com.atlassian.cache.ehcache.DelegatingCachedReference.get(DelegatingCachedReference.java:74)
at com.atlassian.confluence.cache.DeferredCachedReference.sync(DeferredCachedReference.java:140)
at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.synchronizeCache(TransactionalCacheFactory.java:252)
at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.synchronizeCaches(TransactionalCacheFactory.java:231)
at com.atlassian.confluence.cache.TransactionalCacheFactory$DelegateCacheSynchronization.afterCompletion(TransactionalCacheFactory.java:218)
at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:171)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:992)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:967)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:788)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
at jdk.internal.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at [email protected]/java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205)
at com.sun.proxy.$Proxy75.commit(Unknown Source)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:152)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator.render(ConfluenceSitemeshDecorator.java:98)
at com.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:33)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:84)
at com.atlassian.confluence.util.profiling.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)

这个问题还真不好说。

考古了下网上的内容,有提到过 AD 慢的问题: Jira Login is slow after updating base DN | Jira | Atlassian Documentation

说是有提到了下面的解决方案。

和下面的这个社区的问题了:Solved: Synchronize windows AD is slow

从你的错误日志上来看,看不出有什么异常的问题。

可以考虑的是:

  • 插件的版本是不是兼容
  • 网络环境的问题,我们公司用过微软的 AD 云服务,没有什么问题
  • 用户量有多少,通常不会耗费太长时间

可以考虑是不是自己写一个 AD 连接的测试或者在网络环境上测一下,是不是这台机器本身连接 AD 就有问题。

每天首次登录慢,感觉是 JIRA 为了同步缓存 AD 的内容导致的,当内容被缓存下来了,那么登录就快了。

我感觉也是为了同步缓存内容 大概两千多用户吧 这个有什么解决办法吗

或者不让他缓存?直接用每天自动同步的AD信息?

我记得在 LDAP 的高级设置中,有一个同步时间的选项。

你看看 AD 有没有。

另外,根据文章中的内容,看看是不是可以不选择这个选项。


我是这么设置的 是不太行的

你这个设置只设置了分页,这个没有什么用呀。

分页只是说分页下载而已。

同步时间正好是 24 小时,上面是 1440 分钟,你改成 60 分钟试试。

登录时更新组员信息,显示是从不,你改成针对新添加用户。

然后上面可以选择下简单 DN 匹配,看看性能有没有改变。

只使用分页,没有任何意义,只是每次查询返回的结果罢了,一共也才 2000 个用户,最多就进行 3 次查询,没有任何区别。