Virtuoso Writing Issue - Process Stalling and Crashing

Why from the status() output are you now running an old Version 07.20.3233-pthreads for Linux as of Jun 30 2021 binary, whereas previously you were running a ersion 07.20.3239-pthreads for Linux as of Feb 13 2024 (d698f21712) binary ?

Why in the status() output are 20000 buffers whereas previously they were set to 680000 buffers. The buffers in the status output is the NumberOfBuffers param in the INI config file.

How many triples are in the database as with 20000 buffers which is the minimal Virtuoso default you would not be able to out much data before running out of memory buffers ? Forcing the database to start swapping to disk to process requests, which would slow it down resulting in a growth of pending transactions and general slowing of the database.

The Jena RDFConnection method being used is connecting directly to the Virtuoso SPARQL endpoint, which does not support transactions or the setting of different transaction isolation levels in the database, that can impact performance. The default transaction isolation level for Virtuoso is READ_COMMITTED , but the DefaultIsolation setting in the [Parameters] section can be used to set it to any of the standard levels of:

Numeric Value Transaction Isolation Level
unset as if set to 2, READ COMMITTED
1 READ UNCOMMITTED
2 READ COMMITTED
4 REPEATABLE READ
8 SERIALIZABLE

So you can try setting the isolation level to something like REPEATABLE READ ie DefaultIsolation = 4, to see if it improves performance and prevents the excessive locking/pending transactions.

As said previously to better control transactions in the database you should use the methods outlined in the reviewed the Transactional Bulk Loading of RDF Data into Virtuoso DBMS via the Jena RDF Framework post we provide, which details the optimal means of bulk loading RDF datasets into Virtuoso with Jena using the Virtuoso Jena Provider.