You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Ian Boston <ie...@tfd.co.uk> on 2010/03/06 12:41:27 UTC

Usermanager performance in 1.6, question.

Hi,
I am seeing slow performance in Sling based on Jackrabbit 1.6. (not quite Sling trunk Head)
The slow performance has been tracked down to the IndexNodeResolver user by the UserManagerImpl.
We have 10K + users, and may need to cope with upto 4M
The problem hits worst when the user does not exist in the space managed by UserManagerImpl.

Question:
Do the changes made in JR2 under [1][2] remove the structure whereby users were nested and hence eliminate the need to perform expensive queries ?

I have looked at the code, but its not clear to me if the the various find* operations are as fast as direct node lookup (eg session.exists(calculatedUserNodePath)), or even if thats a viable alternative.

Thanks
Ian




1 https://issues.apache.org/jira/browse/JCR-2199

Re: Usermanager performance in 1.6, question.

Posted by Ian Boston <ie...@tfd.co.uk>.
On 6 Mar 2010, at 11:41, Ian Boston wrote:

> Hi,
> I am seeing slow performance in Sling based on Jackrabbit 1.6. (not quite Sling trunk Head)
> The slow performance has been tracked down to the IndexNodeResolver user by the UserManagerImpl.
> We have 10K + users, and may need to cope with upto 4M
> The problem hits worst when the user does not exist in the space managed by UserManagerImpl.
> 
> Question:
> Do the changes made in JR2 under [1][2] remove the structure whereby users were nested and hence eliminate the need to perform expensive queries ?

To answer my own question, yes, completely eliminates the expensive queries.
Tested upto 100K users with no perceivable drop in performance or impact on memory.
Average performance for the create user operation in Jackrabbit 2 is about 5x that of Jackrabbit 1.6 at 10K users.
More details at [1]

Kudos to Angela (I think) for a great improvement.
Thank you
Ian

1 http://blog.tfd.co.uk/2010/03/07/jackrabbit2-user-manager-scaling/

> 
> I have looked at the code, but its not clear to me if the the various find* operations are as fast as direct node lookup (eg session.exists(calculatedUserNodePath)), or even if thats a viable alternative.
> 
> Thanks
> Ian
> 
> 
> 
> 
> 1 https://issues.apache.org/jira/browse/JCR-2199