Old Release

This documentation covers an old version of Fedora. Looking for another version? See all documentation.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

This is work in progress!

OutOfMemoryException when ingesting large files

Currently there seems to be a bug, which creates OutOfMemoryExceptions when ingesting files that are larger than available heap space with certain infinispan configurations (e.g. LevelDB). It seems like this is an issue with the Modeshape project which has been reported at: https://issues.jboss.org/browse/MODE-2103

The following TestCase can be used to reproduce the issue: https://github.com/futures/large-files-test

Workaround

You will need a large heap size for this to work (e.g. -Xmx2048g)

Currently the only known workaround is using a _file_ configuration for infinspan caches e.g.: https://github.com/futures/fcrepo4/blob/34aab66bc26edfca3a4cbabecc4870bfd81f05da/fcrepo-http-commons/src/main/resources/config/single-file/repository.json.

This can be done by setting the following property:

-Dfcrepo.modeshape.configuration=config/single-file/repository.json

 

Large Files on a Single Node Fedora 4 Installation

Because of https://issues.jboss.org/browse/MODE-2103 for large file ingests only the single-file configuration can be used.

Setting the Java Property fcrepo.modeshape.configuration to classpath:/config/single-file/repository.json and allowing the heap to grow up to 2gb is required.

Example

Running Fedora 4 for large file ingests in Tomcat7 

CATALINA_OPTS="-Xmx1024m -XX:MaxPermSize=256m -Dfcrepo.modeshape.configuration=classpath:/config/single-file/repository.json" bin/catalina.sh run

Using the single-file configuration ingest and retrieval of files up to the size of 300 GB using Fedora 4's REST API were tested successfully. The files were ingested sequentially, retrieved and a bitwise comparison with the original data has been performed. Larger sizes have not been tested, due to HDD size limitations.

 

Large File Upload/Download Roundtrip via REST API Tests

File SizeUploadDownload
256GB15,488,156ms (16.9MB/sec)3,306,756ms (79.3MB/sec)
512GB 31,262,610ms (16.77MB/sec)5,386,542ms (97.33MB/sec)
1TB59,631,142ms (17.58MB/sec)15,120,135ms (69.35MB/sec)
  • Conclusion: Arbitrarily-large files can be ingested via the REST API.  The only apparent limitations are disk space available to store the file, and sufficiently large Java heap size (tested with -Xmx2048m).

Large File Upload/Download Roundtrip Tests

  • Platform: Linux 3.12.1-1-ARCH #1 SMP PREEMPT x86_64 GNU/Linux 16GB RAM
  • Repository Profile: Single-File
  • Workflow Profile: Upload/Download Roundtrip
File SizeUploadDownload
256GB15,488,156ms (16.9MB/sec)3,306,756ms (79.3MB/sec)
512GB  

Federated Content Large File Download Roundtrip Tests

  • Platform: Linux 3.12.1-1-ARCH #1 SMP PREEMPT x86_64 GNU/Linux  16GB RAM
  • Repository Profile: Single-File with an additional external Resource:

    "externalSources" : {
    "home-directory" : {
        "classname" : "org.modeshape.connector.filesystem.FileSystemConnector",
        "directoryPath" : "/tmp/projection",
        "projections" : [ "default:/projection => /" ],
        "readOnly" : true,
        "addMimeTypeMixin" : true
        }
    }

File SizeProjection Directory Request DurationFirst Projected Node Request Duration

Download Duration

Throughput
2 GB0m35.117s0m34.572s0m8.236s248.66 mb/sec
10 GB    

100 GB

  

 

 
300 GB    
10*10 GB    
"externalSources" : {
    "filesystem" : {
        "classname" : "org.modeshape.connector.filesystem.FileSystemConnect
        "directoryPath" : "/mnt/isilon/fedora-dev/federated",
        "projections" : [ "default:/projection => /" ],
        "readOnly" : true,
        "addMimeTypeMixin" : true,
        "contentBasedSha1" : "false"
    }
}
ObjectsDatastream
Size

Projection Directory
Request Duration

Projected Node
Request Duration

Download
Duration

Download
Throughput
11 GB417 ms35 ms17,333 ms59.08 MB/sec
12 GB528 ms219 ms26,902 ms76.13 MB/sec
14 GB432 ms54 ms47,581 ms86.08 MB/sec
18 GB583 ms90 ms90,705 ms90.31 MB/sec
116 GB691 ms452 ms176,508 ms92.82 MB/sec
132 GB445 ms34 ms348,488 ms94.03 MB/sec
164 GB750 ms460 ms699,937 ms93.63 MB/sec
1128 GB800 ms90 ms1,412,640 ms92.79 MB/sec
1256 GB530 ms70 ms2,768,570 ms94.69 MB/sec
1512 GB490 ms80 ms5,893,420 ms88.96 MB/sec
11 TB420 ms40 ms11,322,330 ms92.61 MB/sec

There is no content with the specified labels

  • No labels