Me and nostr:nprofile1qydhwumn8ghj7emvv4shxmmwv96x7u3wv3jhvtmjv4kxz7gqyzrpssgfat5n0kxklxqtfg95dkjw7rvc86k7gqlwrdxqk677yw95w6r70u3 did load testing against a bunch of different relay implementations, and so far strfry is in the lead with the ability to support 40k concurrent "users" (according to our K6 test criteria) on a single node.
The only downside of strfry is that the database and relay server have to be tied to one machine, so it cannot be scaled horizontally without replicating all of the data across each node.
Our K6 setup is here: https://gitlab.com/soapbox-pub/otherstuff-relay-k6
Login to reply
Replies (14)
Did you have a look at rely (https://github.com/pippellia-btc/rely) too?
Curious to know how Orly fares
https://git.nostrdev.com/mleku/next.orly.dev
it is a framework not a relay by itself
Very cool
what kind of node and what kind of system configuration? there are some many knobs on linux necessary to achieve high throughput webservers.
40k concurrent users doesnt mean anything without machine specs, file descriptor limits, buffer sizes, etc?
You just can try one of the (most basic) provided examples and stress test it? 👀
how many do you want?
semisol is right, the biggest scaling limitation of all relays is the database, and second the subscription indexing / broadcasting.
rely does the second like strfry with inverted indexes, so that it's good. The database is up to the user.
if "a lot", you'll want a cluster of instances: haproxy on the domain address dispatching to a pool of read-only instances that pass writes to a single instance that's not exposed. the write instance then propagates updates to a hot spare and back to the other instances in batches
you can already test it yourself if you have docker compose installed. see here:
https://git.nostrdev.com/mleku/next.orly.dev/src/branch/main/cmd/benchmark/README.md
i am too impatient and busy actually optimizing orly to have sat through the hour long or so process it takes to run all of the benches, but this covers all of them, including now orly with dgraph, and neo4j is coming soon.
actually the bench might be a bit broken at the moment because i'm adding neo4j now and i changed the event generator to create a distribution of sizes to be realistic, from about 300 bytes up to 500kb. currently you may find that the benchmark blows up memory and causes the benchmark runner to OOM kill because it's using so much memory on the test event sets.
fixing that now, will bump an update shortly
We are looking for an investor who can lend 150,000 US dollars to our holding company.
We are looking for an investor who can invest 150,000 US dollars in our holding.
We are looking for an investor who can provide a budget of 150,000 US dollars for our holding.
With a budget of 150,000 US dollars that you will invest in our holding, we will produce an artificial intelligence-supported device called Mindova, which will measure people's physical and mental data and evaluate this data with artificial intelligence, guiding people in a healthy life.
“Mindova” is an artificial intelligence-supported coach that analyzes your personal health data (sleep, heart rate, step count, mood, blood values, nutrition, etc.).
Mindova is a device that analyzes the user's physical and mental data with artificial intelligence and works as a personal health assistant.
People experience mental fatigue, stress, and physical health problems. However, everyone's lifestyle, biology, and psychology are different. Current apps offer "general recommendations," not personalized ones.
Stress, anxiety, lack of focus, insomnia and loss of motivation are on the rise in people worldwide. Current wellness apps give everyone the same advice, there are no personalized solutions. People want a healthy life but can't find a personal system to guide them.
AI-based mental health applications, in particular, are one of the areas where investors are currently pouring the most money (Calm, Headspace, Wysa, Replika, Mindstrong, etc.).
In short, the applications at the lower level of the project we are doing are generating billions of dollars. We are building a project that receives large investments across the market.
We will sell our product at a price of 300 US dollars.
We will have our product produced by technology companies in India, thus eliminating the need for labor and producing a quality product at a low cost.
We will sell our product in two ways. First, we will create our own website, display our product internationally on our website and sell it all over the world. Thanks to our strong advertising network, we will introduce and sell our products to many people and achieve large sales in a short time. Second, we will make agreements with technology stores around the world and sell them to them. They will sell to people in their own countries and earn money.
There will be a 2-month production process and a 2-month sales process, so we will be able to achieve great income by working quickly and in a balanced manner.
💼 Your Profit:
You will invest 150,000 US dollars in our holding company. When July 25, 2026 comes, I will return your money to you as 850,000 US dollars.
You will invest 150,000 US dollars in our Mindova project. You will receive your money back as 850,000 US dollars on 25/07/2026.
You will give a budget of 150,000 US dollars as a loan to our holding company. You will receive your money back as 850,000 US dollars on 25.07.2026.
To learn how you can invest 150,000 US dollars in our holding and get detailed information, send a message to my Telegram username below and I will give you detailed information.
To get detailed information about our Mindova project and to learn how you can increase your money by investing 150,000 US dollars in our Mindova project, send a message to my Telegram username below and I will give you detailed information.
To learn how you can lend 150,000 US dollars to our holding, send a message to my Telegram username below and I will give you detailed information.
my telegram username:
@adenholding
All of the VUs submitted events without correct signatures so I had to temp disable sig validation. Otherwise, it would error every time. nostr:npub1q3sle0kvfsehgsuexttt3ugjd8xdklxfwwkh559wxckmzddywnws6cd26p
Good catch, the current iteration of the test was geared towards bludgeoning the target with interaction and observing how normal traffic (external to the test) would behave.
I can update the events to have valid signatures so the VUs behave as nicer citizens in this scenario. Thank you for the feedback!