On Tue, 27 Jul 2021 at 18:04, Andy Seaborne <[email protected]> wrote: > > > On 27/07/2021 14:19, Marco Fiocco wrote: > > Hello, > > > > I'm running a in-memory Fuseki 3.16 server and I see that the allocated > memory keeps growing linearly indefinitely even if idle. > > That is strange because if there are no requests, it does no work. > > > Initially I reserved 1GB of memory and I've noticed that the process > gets OOM killed every 2 hours. > > What pattern of usage is it getting? >
Actually it's used as read-only. But the memory grows even if there is no request. > > Now I've allocated 2GB because I've read somewhere that 2GB is the > minimum for Java heaps. Is that true? > > It's not that simple - you have an in-memory dataset so the space needed > is proportional to the amount of data. > > At the moment the the initial memory (with the dataset loaded with the REST API) is around 600-700MB. >From that it grows by itself... > > I'm waiting to see if it will get again. > > Is this a bug or there is a better way to config it? > > If you don't need the union graph, "rdf:type ja:MemoryDataset" is a > better in-memory choice. It has a smaller foot print and (I guess in > your setup you delete data as well as add it?) managed DELETE and PUT > better for GSP. TDB, in-memory is primarily a testing configuration. > > Would the memory be lower if instead of in-memory we use on disk TDB or TDB2? Thanks > > > > > My Fuseki config is: > > > > @prefix fuseki: <http://jena.apache.org/fuseki#> . > > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > > @prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> . > > @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . > > @prefix : <#> . > > > > [] rdf:type fuseki:Server . > > > > <#service> rdf:type fuseki:Service ; > > rdfs:label "Dataset with SHACL validation" ; > > fuseki:name "ds" ; > # See > the endpoint url in build.gradle > > fuseki:serviceReadWriteGraphStore "data" ; > # SPARQL Graph > store protocol (read and write) > > fuseki:endpoint [ fuseki:operation fuseki:query ; > fuseki:name "sparql" ] ; # SPARQL query service > > fuseki:endpoint [ fuseki:operation fuseki:shacl ; > fuseki:name "shacl" ] ; # SHACL query service > > fuseki:dataset <#dataset> . > > > > ## In memory TDB with union graph. > > <#dataset> rdf:type tdb:DatasetTDB ; > > tdb:location "--mem--" ; > > # Query timeout on this dataset (1s, 1000 milliseconds) > > ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ; > > # Make the default graph be the union of all named graphs. > > tdb:unionDefaultGraph true . > > > > Thanks > > Marco > > >
