Hi Piotr,

For that in-memory setup, I don't know of any changes that might lead to increased memory use. Might it be related to the queries received?

Service Unavailable -->

That looks like a reverse proxy can't contact the Fuseki server. What's the Fuseki server log say around that point?

The JVM will grow to 6G - or whatever you set the -Xmx to - before a full GC cuts in.

    Andy

Unrelated inline:

On 05/01/2022 11:49, Piotr Nowara wrote:
Hi Andy,

We are running Fuseki inside Kubernetes pod using our own Docker image on
Ubuntu 20.04 and eclipse-temurin:11-jre-focal.

The old RAM limit set in Kubernetes was 6GB which was more than enough
until we upgraded to 4.3.1.

Our Fuseki hosts four in-memory datasets. The biggest one has 1.6 million
triples (200 MB big when exporting to RDF/TTL file). The three others are
significantly smaller (less than 50k triples). Our datasets are used as
read-only data repositories. They are restored from S3-stored TTL backup
files when Fuseki restarts (see below for config TTL). Longest query takes
ca. 8 seconds, 90% of them complete in less than 20ms.

Thanks,
Piotr

Our config:
@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .

...
no need for the declarations
...

Simpler and modernization:

:service1  a                          fuseki:Service ;
        fuseki:dataset                :dataset ;
        fuseki:name                   "meta" ;
        fuseki:serviceQuery           "query" , "sparql" ;
        fuseki:serviceReadGraphStore  "get" ;
        fuseki:serviceReadWriteGraphStore
                "data" ;
        fuseki:serviceUpdate          "update" ;
        fuseki:serviceUpload          "upload" .

:dataset rdf:type ja:MemoryDataset ;
    ja:data <file:./seed/meta-cdq-latest.ttl.gz>
    .


and using

    fuseki:endpoint [
        fuseki:operation fuseki:query ;
        fuseki:name "sparql"
    ];
    fuseki:endpoint [
        fuseki:operation fuseki:query ;
        fuseki:name "query"
    ];


rather than

   fuseki:serviceQuery       "query" , "sparql" ;

or

:service1  a          fuseki:Service ;
    fuseki:endpoint [ fuseki:operation fuseki:query ] ;
    fuseki:endpoint [ fuseki:operation fuseki:update ] ;
    ...

if you use the dataset as the operation endpoint. (service* adds both for compatibility reasons).

    Andy

Reply via email to