Doc downloads (PDF, HTML & XML)
[FishEye Knowledge Base]
This page describes a number of ways in which you can optimise the performance of your FishEye installation.
FishEye is now multi-threaded, allowing you to control the number of threads dedicated to the repository indexing process. See Configuring indexing.
On this page:
Related pages:
The heap size of the FishEye Java Virtual Machine is controlled by the FISHEYE_OPTS environment variable. The best heap size to use is dependent on a number of factors including:
FishEye will reserve a portion of the available heap for caching of database data. So in general, the more memory you can supply, the better.
For Subversion repositories, it is also possible to reduce FishEye's memory footprint by reducing the BlockSize parameter.
Read more about how FishEye uses memory.
If you do run into 'Out of Memory' errors, see Fix out of Memory Errors.
If you have a large number of repositories, we recommend that you increase the default number of files that FishEye is allowed to open. See this knowledge base article for more info: Subversion Indexer Paused with "Too many open files" Error.
For users with very large repositories, you may find the rendering of the Subversion tree slow. You can try disabling checking for empty folders by using the disable-dirtree-empty-checks option in your FISHEYE_ARGS environment variable.
The incremental indexing process causes FishEye to poll all repositories at the specified interval to check for new commits, even though there might not be any new information to index. If you have a large number of repositories (> 100), this can lead to:
Configuring commit hooks will allow you to set up your SCM so that indexing of a repository is triggered by a commit to the repository itself. This means that FishEye only runs the indexing process when necessary, and allows automatic polling to be disabled. Commits will appear sooner in FishEye, and the server load will be reduced.
When you add a repository, FishEye needs to perform a once-off scan through the repository to build up its initial index and cache. This scan can take some time. Until this scan is complete, you may find that some data is not displayed. As a guide, FishEye should be able to process about 100KB-200KB per second on an averaged-size PC. If FishEye is accessing the repository over the network (e.g. over a NFS mount), then you should expect the initial scan to take longer. You can increase the speed of your scans using the following options: One option is break large repositories into multiple smaller repositories. While this technique will not improve the overall initial scan time, it allows for all fully scanned repositories to be updated while the initial scan is still being performed on those remaining. In FishEye 1.3.4 and later, the initial and incremental scans happen in separate, single threads. So, splitting the repositories will allow incremental scans to run concurrently alongside the initial scans. You may also wish to split projects into separate repositories, since permissions in FishEye are applied on a per-repository basis. The http/s protocol has the slowest performance during the initial scan. The svn protocol (svn://) is faster and the file protocol (file:///) is the fastest. In order for SVN protocol to work you need to have set up an svnserve based server. More information on how to troubleshoot SVN indexing related issues can be found here.Background information
General improvements
Improve update performance during initial scan
Improving initial scan performance for an SVN repository
Therefore if you find your initial scan takes an extended amount of time (more than a day or two), you should consider switching over from the http/s protocol to the svn or file protocol to define the location of your SVN repository. (Use svnsync to mirror the repository onto the fisheye server, so that you can access it with the file protocol.)E.g. Switch from
https://example.com/svn/project/
to
svn://example.com/svn/project/
or
file:///home/user/some/location/svn/project