Concurrent Queries

Hi, one of our vendors uses Virtuoso as a backend RDF store, and we are currently stress/load testing (JMeter/Locust). The product is entirely deployed on EKS, with the worker node for Virtuoso having 12 vCPUs and 96gb of memory. I increased the ServerThreads to 24 (2 threads per vCPU), and I was wondering if increasing this number beyond the max threads for this instance type (i3en.3xlarge on AWS) will help with concurrent requests?

Your question is not clear …

How where the indicated ServerThreads increased to 24 , is this the old Virtuoso ServerThreads param in the config file or something in the AWS instance type config ?

What are the max threads for this instance type (i3en.3xlarge on AWS) ?

Hey sorry, the instance type for the node group is i3en.3xlarge, which has 12 vCPUs, each has 2 threads so I assume a maximum of 24.

I indicate ServerThreads using an environment variable on the Kubernetes Deployment: VIRT_PARAMETERS_SERVER_THREADS

Can I also specify these environment variables (using Virtuoso 7.2.7):

  • VIRT_PARAMETERS_MAX_CLIENT_CONNECTIONS
  • VIRT_HTTP_MAX_CLIENT_CONNECTIONS

Note the Virtuoso docker container environment variable settings take the form of VIRT_SECTION_KEY=VALUE as per Virtuoso Docker Reference Guide, thus params you refer to should be:

VIRT_PARAMETERS_SERVERTHREADS
VIRT_PARAMETERS_MAXCLIENTCONNECTIONS
VIRT_HTTPSERVER_MAXCLIENTCONNECTIONS

ie he Key name does no have any underscores in it as is as per in the INI file and be be in upper, lower or mixed case.

In Virtuoso the ServerThreads and MaxClientConnection keys are the same thing the former being the original name and retained as an alias for the latter such that either work.

With regards to the Virtuoso ServerThreads/MaxClientConnection keys these represent these operating system and not CPUs threads, for which there is not a one to one relationship. The operating system can allocate more OS threads for use than CPUs threads , thus you can see the ServerThreads/MaxClientConnection keys large then the number of CPU threads setting to something closer to the number of concurrent connections expected. Noting that in the case of the commercially licensed Virtuoso product , each connections requires a thread and consumes a license point, which would also limit the number of concurrent connections that can be made.

In terms of concurrent queries Virtuoso has Vectored Execution and Query Parallelization support to aid with the parallel/concurrent execution of queries with a number of INI file params in the documentation for controlling this behaviour.