A number of factors influence Fedora 4 performance, such as...
- server hardware (CPU, disk, memory, network bandwidth)
- repository configuration (storage, indexing and sequencers configured)
- data (number of child nodes)
Results of performance testing using a variety of tools and testing parameters are summarized below.
For best performance, we recommend:
- Configure Java to have a large heap size, e.g.,
-Xmx2048m
- Limit the number of children under a single node to less than 5,000. Consider creating a hierarchy to organize nodes, or using automatically-generated identifiers (which will create the hierarchy automatically).
- Particularly when working with files larger than available memory, use Infinispan file storage (e.g.
-Dfcrepo.modeshape.configuration=config/single-file/repository.json
) or filesystem federation. Federation avoids having to transfer files using HTTP – and with larger file sizes (or with larger numbers of files being processed), this can improve performance significantly.
Single Node Performance Testing
Ingest Testing
Ingesting content into Fedora 4 is generally faster than ingesting into Fedora 3 on the same hardware (tested up to 10,000 objects with 50MB datastreams).
- See Ingest Test Matrix.
Ingest/Retrieval/Update/Delete Testing
Updating content in Fedora 4 is generally faster than in Fedora 3. Reading and deleting content from Fedora 4 is somewhat slower than Fedora 3.
Large File Ingest and Retrieval
Arbitrarily-large files can be ingested (or projected into the repository using filesystem federation) and downloaded via the REST API (tested up to 1TB). The only apparent limitations are disk space available to store the files, and a sufficiently large Java heap size (tested with -Xmx2048m).
Clustered Performance Testing
Ingest and read/update/delete testing on multiple servers configured as a cluster.
Case Studies
Reports of real-world ingest and performance testing.