You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Gandhirajan Natarajan <Ga...@igate.com> on 2008/04/23 11:46:02 UTC

Performance Tuning

Hi,

 

We are using jlibrary1.0 as a document management server for our web
application which in turn uses Jackrabbit 1.0

 

Unfortunately, we could upgrade to jlibrary 1.1 which uses the latest
version of jackrabbit. Because we don't have webdav support in jlibrary
1.1 that is very essential for our application.

 

Now we are trying to improve the performance of our document management
server. And we have come up with our Custom persistence manager that
implements connection pooling. We are using MSSQL 2005 in our
application. We have also changed the values of few parameters in
lucene's search index to fine tune the application.

 

Currently we have around 3360 documents in our repository and it takes
around 1 minute and 5 seconds to add a document into the repository at
this point of time.

 

Could you please suggest anymore performance tuning techniques that can
be done?

 

Our repository.xml is as follows: 

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- <!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD
Repository//EN" "file://config.dtd"> -->

 

<Repository>

    

    <FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">

                        <param name="path" value="${rep.home}"/>

    </FileSystem>

 

    <Security appName="Jackrabbit">

        <AccessManager
class="org.apache.jackrabbit.core.security.SimpleAccessManager"/>

                        

                        <LoginModule

 
class="org.apache.jackrabbit.core.security.SimpleLoginModule">

                        <param name="anonymousId" value="anonymous" />

                        </LoginModule>                    

    </Security>

 

    <Workspaces rootPath="${rep.home}/workspaces"
defaultWorkspace="default"/>

            <Workspace name="${wsp.name}">

                <FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">

                    <param name="path" value="${wsp.home}"/>

                </FileSystem>  

                

             

   <PersistenceManager
class="org.apache.jackrabbit.core.state.db.CustomDbPersistenceManager">

                <param name="driver"
value="net.sourceforge.jtds.jdbc.Driver"/>

                <param name="url"
value="jdbc:jtds:sqlserver://URL:1433/SID"/>

                <param name="schema" value="mssql"/>

                <param name="schemaObjectPrefix" value="${wsp.name}_"/>

                <param name="externalBLOBs" value="true"/>

                <param name="user" value="sa"/>

                <param name="password" value="sa"/>

    </PersistenceManager> 

 

 

                        <SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

                                    <param name="path"
value="${wsp.home}/index"/>

                        <param name="textFilterClasses"
value="org.apache.jackrabbit.core.query.lucene.TextPlainTextFilter,org.a
pache.jackrabbit.core.query.MsExcelTextFilter,org.apache.jackrabbit.core
.query.MsPowerPointTextFilter,org.apache.jackrabbit.core.query.MsWordTex
tFilter,org.apache.jackrabbit.core.query.PdfTextFilter,org.apache.jackra
bbit.core.query.HTMLTextFilter,org.apache.jackrabbit.core.query.XMLTextF
ilter,org.apache.jackrabbit.core.query.RTFTextFilter,org.apache.jackrabb
it.core.query.OpenOfficeTextFilter" />

                        

                                    <!-- These are all default values.
You can change them if you want -->

                    <param name="useCompoundFile" value="true"/>

                    <param name="minMergeDocs" value="100"/>

                    <param name="volatileIdleTime" value="3"/>

                    <param name="maxMergeDocs" value="100000"/>

                    <param name="mergeFactor" value="1000"/>

                    <param name="bufferSize" value="1000"/>

                    <param name="cacheSize" value="10000"/>

                    <param name="forceConsistencyCheck" value="false"/>

                    <param name="autoRepair" value="true"/>

                    <param name="analyzer"
value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>

                    <param name="queryClass"
value="org.apache.jackrabbit.core.query.QueryImpl"/>

                    <param name="idleTime" value="-1"/>

                    <!-- end of default values -->        

                        

                        <param name="respectDocumentOrder"
value="false"/>

                        </SearchIndex>

    </Workspace>

 

    <Versioning rootPath="${rep.home}/jackrabbit/repository/versions">

    

                <FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">

                    <param name="path"
value="${rep.home}/jackrabbit/repository/versions"/>

                </FileSystem>

                <PersistenceManager
class="org.apache.jackrabbit.core.state.db.CustomDbPersistenceManager">

                 <param name="driver"
value="net.sourceforge.jtds.jdbc.Driver"/>

                <param name="url"
value="jdbc:jtds:sqlserver://URL:1433/SID"/>

                <param name="schema" value="mssql"/>

                <param name="schemaObjectPrefix" value="versions_"/>

                <param name="externalBLOBs" value="true"/>

                <param name="user" value="sa"/>

                <param name="password" value="sa"/>

                </PersistenceManager>

    </Versioning>

 

    <SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

        <param name="path"
value="${rep.home}/jackrabbit/repository/index"/>

    </SearchIndex>

</Repository>

 

Thanks & Regards,

Gandhi Rajan.N

________________________________

 

iGATE is Ranked No. 3 in DQ-IDC best IT employer survey and Ranked No.6 
by Business Today-Mercer Human Resource Consulting-TNS  in a cross industry survey of Best Companies to work for in India
----------------------------------------------------------------DISCLAIMER---------------------------------------------------------
Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual 
or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under 
applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com 
and delete this EMAIL including any attachments

Re: Performance Tuning

Posted by Thomas Mueller <th...@gmail.com>.
Hi,

> Actually, I meant that when we used SimpleDBPersistence manager along
>  with SQLJDBC driver the performance was not that impressive but once we
>  used the customDBPersistenceManager along with jtds driver and
>  connection pooling, the performance was impressive.

That's interesting, but I don't think the problem was connection pooling.

>  Any other performance tips?

Yes, try the org.apache.jackrabbit.core.persistence.bundle.MSSqlPersistenceManager
together with your jtds driver.

Regards,
Thomas

RE: Performance Tuning

Posted by Gandhirajan Natarajan <Ga...@igate.com>.
Actually, I meant that when we used SimpleDBPersistence manager along
with SQLJDBC driver the performance was not that impressive but once we
used the customDBPersistenceManager along with jtds driver and
connection pooling, the performance was impressive.

Any other performance tips?

Thanks & Regards,
Gandhi Rajan.N
________________________________

| iSIGHT Development Team | iGATE Global Solutions| T: +91-80-4104 1312|
M: +91 9886834626 | gandhirajan.natarajan@igate.com |
| 158-162 & 165-170 EPIP Phase II Whitefield Bangalore - 560 066 India |
www.igate.com |
 

-----Original Message-----
From: Stefan Guggisberg [mailto:stefan.guggisberg@gmail.com] 
Sent: Wednesday, April 23, 2008 7:12 PM
To: users@jackrabbit.apache.org
Subject: Re: Performance Tuning

On Wed, Apr 23, 2008 at 3:07 PM, Gandhirajan Natarajan
<Ga...@igate.com> wrote:
> Hi,
>
>  Previously we were using simpledbpersistencemanager which establishes
a
>  new connection for every user who tries to access the repository.Now
in

that's not correct. there's one jdbc connection per workspace.

>  our customDBpersistencemanager we have implemented connection pooling
>  using jtds driver that uses the connection from the connection
pool.It
>  helped us in improving the performance drastically.

having some understanding of jackrabbit's core/internals i dare to
question this claim ;)

anyway, i guess your custom pm is aware of jackrabbit's transactional
requirements
(i.e. all write operations in the jackrabbit commit context *must* use
the same connection)?

cheers
stefan


>
>  Thanks a lot for your response.But do we have
BundleDbPersistenceManager
>  in jackrabbit 1.0?
>
>
>  Thanks & Regards,
>  Gandhi Rajan.N
>  ________________________________
>
>  | iSIGHT Development Team | iGATE Global Solutions| T: +91-80-4104
1312|
>  M: +91 9886834626 | gandhirajan.natarajan@igate.com |
>  | 158-162 & 165-170 EPIP Phase II Whitefield Bangalore - 560 066
India |
>  www.igate.com |
>
>
>
>  -----Original Message-----
>  From: Thomas Mueller [mailto:thomas.tom.mueller@gmail.com]
>  Sent: Wednesday, April 23, 2008 3:43 PM
>  To: users@jackrabbit.apache.org
>  Subject: Re: Performance Tuning
>
>  Hi,
>
>  > And we have come up with our Custom persistence manager that
>  > implements connection pooling.
>
>  One way to improve performance is to use a bundle persistence
manager.
>  Does your persistence manager extend BundleDbPersistenceManager?
>  If not, you should probably do that.
>
>  Why do you need connection pooling by the way?
>
>  Regards,
>  Thomas
>
>
>
> iGATE is Ranked No. 3 in DQ-IDC best IT employer survey and Ranked
No.6
>  by Business Today-Mercer Human Resource Consulting-TNS  in a cross
industry survey of Best Companies to work for in India
>
----------------------------------------------------------------DISCLAIM
ER---------------------------------------------------------
>  Information transmitted by this EMAIL is proprietary to iGATE Group
of Companies and is intended for use only by the individual
>  or entity to whom it is addressed and may contain information that is
privileged, confidential, or exempt from disclosure under
>  applicable law. If you are not the intended recipient of this EMAIL
immediately notify the sender at iGATE or mailadmin@igate.com
>  and delete this EMAIL including any attachments
>
>

iGATE is Ranked No. 3 in DQ-IDC best IT employer survey and Ranked No.6 
by Business Today-Mercer Human Resource Consulting-TNS  in a cross industry survey of Best Companies to work for in India
----------------------------------------------------------------DISCLAIMER---------------------------------------------------------
Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual 
or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under 
applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com 
and delete this EMAIL including any attachments


Re: Performance Tuning

Posted by Stefan Guggisberg <st...@gmail.com>.
On Wed, Apr 23, 2008 at 3:07 PM, Gandhirajan Natarajan
<Ga...@igate.com> wrote:
> Hi,
>
>  Previously we were using simpledbpersistencemanager which establishes a
>  new connection for every user who tries to access the repository.Now in

that's not correct. there's one jdbc connection per workspace.

>  our customDBpersistencemanager we have implemented connection pooling
>  using jtds driver that uses the connection from the connection pool.It
>  helped us in improving the performance drastically.

having some understanding of jackrabbit's core/internals i dare to
question this claim ;)

anyway, i guess your custom pm is aware of jackrabbit's transactional
requirements
(i.e. all write operations in the jackrabbit commit context *must* use
the same connection)?

cheers
stefan


>
>  Thanks a lot for your response.But do we have BundleDbPersistenceManager
>  in jackrabbit 1.0?
>
>
>  Thanks & Regards,
>  Gandhi Rajan.N
>  ________________________________
>
>  | iSIGHT Development Team | iGATE Global Solutions| T: +91-80-4104 1312|
>  M: +91 9886834626 | gandhirajan.natarajan@igate.com |
>  | 158-162 & 165-170 EPIP Phase II Whitefield Bangalore - 560 066 India |
>  www.igate.com |
>
>
>
>  -----Original Message-----
>  From: Thomas Mueller [mailto:thomas.tom.mueller@gmail.com]
>  Sent: Wednesday, April 23, 2008 3:43 PM
>  To: users@jackrabbit.apache.org
>  Subject: Re: Performance Tuning
>
>  Hi,
>
>  > And we have come up with our Custom persistence manager that
>  > implements connection pooling.
>
>  One way to improve performance is to use a bundle persistence manager.
>  Does your persistence manager extend BundleDbPersistenceManager?
>  If not, you should probably do that.
>
>  Why do you need connection pooling by the way?
>
>  Regards,
>  Thomas
>
>
>
> iGATE is Ranked No. 3 in DQ-IDC best IT employer survey and Ranked No.6
>  by Business Today-Mercer Human Resource Consulting-TNS  in a cross industry survey of Best Companies to work for in India
>  ----------------------------------------------------------------DISCLAIMER---------------------------------------------------------
>  Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual
>  or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under
>  applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com
>  and delete this EMAIL including any attachments
>
>

RE: Performance Tuning

Posted by Gandhirajan Natarajan <Ga...@igate.com>.
Hi,

Previously we were using simpledbpersistencemanager which establishes a
new connection for every user who tries to access the repository.Now in
our customDBpersistencemanager we have implemented connection pooling
using jtds driver that uses the connection from the connection pool.It
helped us in improving the performance drastically.

Thanks a lot for your response.But do we have BundleDbPersistenceManager
in jackrabbit 1.0?

Thanks & Regards,
Gandhi Rajan.N
________________________________

| iSIGHT Development Team | iGATE Global Solutions| T: +91-80-4104 1312|
M: +91 9886834626 | gandhirajan.natarajan@igate.com |
| 158-162 & 165-170 EPIP Phase II Whitefield Bangalore - 560 066 India |
www.igate.com |
 
-----Original Message-----
From: Thomas Mueller [mailto:thomas.tom.mueller@gmail.com] 
Sent: Wednesday, April 23, 2008 3:43 PM
To: users@jackrabbit.apache.org
Subject: Re: Performance Tuning

Hi,

> And we have come up with our Custom persistence manager that
> implements connection pooling.

One way to improve performance is to use a bundle persistence manager.
Does your persistence manager extend BundleDbPersistenceManager?
If not, you should probably do that.

Why do you need connection pooling by the way?

Regards,
Thomas

iGATE is Ranked No. 3 in DQ-IDC best IT employer survey and Ranked No.6 
by Business Today-Mercer Human Resource Consulting-TNS  in a cross industry survey of Best Companies to work for in India
----------------------------------------------------------------DISCLAIMER---------------------------------------------------------
Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual 
or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under 
applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com 
and delete this EMAIL including any attachments


Re: Performance Tuning

Posted by Thomas Mueller <th...@gmail.com>.
Hi,

> And we have come up with our Custom persistence manager that
> implements connection pooling.

One way to improve performance is to use a bundle persistence manager.
Does your persistence manager extend BundleDbPersistenceManager?
If not, you should probably do that.

Why do you need connection pooling by the way?

Regards,
Thomas