Hive-Engine Node Benchmark Report - 2025-04-18

in #hive-engine6 months ago

Full Hive-Engine API Node Update - (18/04/2025)

2025-04-18T17:00:04 (UTC)
Note: This post is published from the @nectarflower account, but the benchmark data and nodee metadata are from the @flowerengine account.
@nectarflower provides daily updates about the state of all available full API node servers for Hive-Engine.
More information about nectarflower can be found in the github repository.

List of failing nodes

This table includes a list of all nodes which were not able to answer to a getStatus API call within the specified timeout.

nodeerror
https://herpc.meb.asiaNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.meb.asia', port=443): Max retries e...
https://herpc.cupidchat.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.cupidchat.net', port=443): Max retr...
https://herpc.mmshare.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.mmshare.net', port=443): Max retrie...
https://herpc.asiaworld.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.asiaworld.net', port=443): Max retr...
https://herpc.tarwateinthar.comNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.tarwateinthar.com', port=443): Max ...

List of working nodes (At least once)

This table includes all nodes which were able to answer a getStatus call within the timeout. The achieved mean duration values are shown. The returned SSCnodeVersion is also shown.

Full Hive-Engine API Node Update - (18/04/2025)

2025-04-18T17:00:04 (UTC)
Note: This post is published from the @nectarflower account, but the benchmark data and node metadata are from the @flowerengine account.
@nectarflower provides daily updates about the state of all available full API node servers for Hive-Engine.
More information about nectarflower can be found in the github repository.

List of failing nodes

This table includes a list of all nodes which were not able to answer to a getStatus API call within the specified timeout.

nodeerror
https://herpc.meb.asiaNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.meb.asia', port=443): Max retries e...
https://herpc.cupidchat.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.cupidchat.net', port=443): Max retr...
https://herpc.mmshare.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.mmshare.net', port=443): Max retrie...
https://herpc.asiaworld.netNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.asiaworld.net', port=443): Max retr...
https://herpc.tarwateinthar.comNot a valid hive-engine node: HTTPSConnectionPool(host='herpc.tarwateinthar.com', port=443): Max ...

List of working nodes (At least once)

This table includes all nodes which were able to answer a getStatus call within the timeout. The achieved mean duration values are shown. The returned SSCnodeVersion is also shown.

Node Uptime Statistics (7-day period)

This table shows how reliable nodes have been over the past week.

Token retrieval

This table shows how many token operations were processed by the node within the specified time. The nodes are ordered according to the number of operations processed.

Contract operations

This table shows how many contract operations were processed by the node within the specified time. The nodes are ordered according to the number of operations processed.

Account history operations

This table shows how many account history operations were processed by the node within the specified time. The nodes are ordered according to the number of operations processed.

Latency

This table shows the latency measurements for each node. The nodes are ordered according to average latency (lowest first).

Node Trends and Reliability

The following data shows trends over the past 7 days:

Node Uptime

Notable Trends

No significant trends detected in the past 7 days.

Node Consistency

This section shows how consistent each node's performance has been.
Lower standard deviation indicates more consistent performance.

NodeConsistency Score (lower is better)

Conclusion

This report provides a snapshot of Hive-Engine node performance. Users can use this information to select reliable nodes for their applications.

The benchmark data is also available in JSON format in the @flowerengine account's json_metadata for automated processing.


Generated by the engine-bench tool.

Sort:  

Interesting... didn't know about this. Some feedback!

  • Can you please indicate where you are making the calls (IP or country perhaps)... all benchmarks are relative to sources.
  • "were processed by the node within the specified time." - How much is this specified time?
  • It says "The following data shows trends over the past 7 days:" but then the number of runs shows 1... should it be instead the number of total successful runs in the 7 days divided by the total number of runs planned to do in 7 days?
  • Can you add the command being used to get "Latency" results? I am assuming it's just getStatus, but it's nice to have it clear. Same sort of thing for the other results.

Anyhow, my diagonal. Let me know what you think.

I'll try to answer the questions in order.

  • Frankfurt Germany - Digital Ocean Droplet
  • It should state that, since it's variable it was vague, but I'll clarify, but the standard tests are 30 second timeout / time limit
  • I was originally running it on my dev machine, That was the first run from the server, it should populate over the week. If it's still not right this time next week, will adjust as needed, but you are probably right, I wasn't sure exactly how I wanted the trends section to be, so if any of them need it badly, that's one that will get refactored.
  • Latency is the average time of 5 samples of:
start_time = time.time()
# Make a simple query to measure latency - use a lightweight call
api.find("tokens", "tokens", {"symbol": "SWAP.HIVE"}, limit=1)
latency = time.time() - start_time

I would love some more input, kind of went into this blindly, and the original intent was to do what we did with @nectarflower with @flowerengine, which was run a benchmark every hour and store the results in the account metadata.

curl -s --data '{"jsonrpc":"2.0", "method":"database_api.find_accounts", "params": {"accounts":["flowerengine"]}, "id":1}' https://api.hive.blog | jq '.result.accounts[0].json_metadata | fromjson' | jq '.nodes[]'

@nectarflower runs on the :00 minute mark, and @flowerengine runs on the :30 minute mark, to avoid clash. Both benchmarks take ~10 minutes to do all the servers.


Would absolutely be thrilled to get a PR if you see something that could be done better. Also, I am aware the head section of this post was printed twice, that should be fixed on the next run, don't know how I didn't catch that the first 20 times I ran it.

Thanks for the answers. I would love to do more PR's, but lately, time to reply is already a luxury. I will keep giving this a watch and provide any feedback, and if I find anyone keep on helping out, will point he/she in your direction.

I have noticed also you guys used python 3.13 (which is very recent). Would be nice to support older versions, but its not a problem if not. As in a few months, all pythons everywhere will be supporting 3.13 anyhow.

Just a thought.

I appreciate the feedback just as much as a pull requests.

It just happens to be the version i'm using, there is no 3.13 specific features being used, should work without problems back several versions (i've tested 3.11, and 3.12)

Not for those... but for 3.10 there is. Close enough though =)

Unfortunately, Ubuntu 22 is still behind. Plus a couple of other Linux distros... either way this would need to be changed on the repo.

$ cat src/engine_bench/__init__.py
"""Nectar-bench package for benchmarking hive-engine nodes using nectarengine."""

import sys

__version__ = "0.2.0"

# Check Python version
if sys.version_info < (3, 13):
    print("Error: engine-bench requires Python 3.13 or higher")
    sys.exit(1)

I can install 3.X whatever but just thinking on people that are just using Linux distributed versions.

I am pushing because I see good stuff... not because I dislike stuff. 😎😍

good catch, i'll destroy that section in both benchmarks

This is fantastic feedback!!!!!

(Its very new still, but will fill out 7 days...over next 7 days 😅)

Going to run from my server to see the difference... I was just watching the repo code now... and I think a couple of things will be massively different because of the total timeout being a limit on calls.

But hey, this is really cool! Love benchmarks because it's part of what I do in real life.

We also accept PRs!!! But I know GM will check out your feedback tomirrow!


Your comment is upvoted by @topcomment

Info - Support - Discord

image.png
Curated by friendlymoose

Congratulations @nectarflower! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You received more than 400 upvotes.
Your next target is to reach 500 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP