There's for sure something wrong here. Getting 8/10 req/s out of this configuration is close to nothing. A target throughput of 500-600 req/s should be easy to reach.
id(x)
should not cause any issues. It's a O(1)
operation that basically performs a seek operation on your IO subsystem.
Couple of questions to understand the issue better:
- What's the cardinality? How many
Cards
does aPersona
have? Are there "superpresonas" with a huge number of cards? - How many properties to you store on your
Card
nodes? - Can you check using htop (or similar) how busy your CPUs are going while you increase the load?
- Did you do any config changes with respect to bolt serverside pool sizes?
- Can you rule out network latency of being an issue? Are your clients based in the same physical location than your server?
- Do you have any heap extensive operations (large writes, heavy read operations like
ORDER BY
,DISTINCT
, ...) ? If not I think heap of 24G might be too large.
On a different notice: if you're on AWS and use Ubuntu, consider enabling ENA, see Enable enhanced networking with the Elastic Network Adapter (ENA) on Linux instances - Amazon Elastic Compute Cloud. For the given issue I suspect this won't make a big difference, but worth a try.