Recommanded Hardware requirement to set lora server and lora APP server

Hello,

Any idea of the needed hardware requirements: CPU, memory and disk space to set up the lora server and the lora APP server?

Thanks,
Best regards

Depending the scale of your deployment, a Raspberry Pi could already be enough. E.g. potentially this http://www.risinghf.com/product/risinghf-iot-dicovery/?lang=en could run both your gateway and LoRa Server instance. See also https://github.com/brocaar/loraserver-pi-gen.

Please note that each scenario is different. Some networks have a high number of nodes, sending only a few messages. Some setups have only a few nodes sending lots of messages. One tool to perform benchmarks could be http://lorhammer.itk.fr.

Do you know any rough numbers that should work?

For example: if our nodes will send messages every 30min and there will be 100 nodes (with 5 gateways).
How much would it change for 1000 nodes using 50 gateways?

I think hardly anything. 1000 nodes sending data each 30 min that is ~ 33 frames per minute or about one ever other second. But the best way is to test it: keep track of your server load, memory usage and i/o :slight_smile:

1 Like

Seems like a bigger challenge than expected :slight_smile: We don’t have a server yet, I’m searching what possibilities we have and what can we expect. Thank you for the info

Martin, did you find right HW for your configuration, because I need it for 2000 EN and 5 GW?

BR,
Mladen

1 Like

Not really, for first test we simply took a Core2Duo E8400 PC with 8GB RAM which was lying around. Currently we have 4-5 GW’s and only about 10 nodes in operation.

Any updates on this topics or new data? Im trying to migrate from TTN to ChirpStack, therefore I’m researching the proper requirements to host: 7 Gateways, around 100 devices per node, no more than 1000 node at this point; obviously this will grow as soon as Sales department get traction.

I was thinking to Start with a VM 1vCPU, 1GB RAM, 25GB Disk, 1GB Data Transfer, and grow from here as the workload demands it…

@brocaar At this start point, Will I benefit of a managed REDIS DB and managed PostgreSQL databases?? Or should I go with a monolith Server and migrate later?

I has been researching this so much im tired… Advise will most appreciated.

Will check lorhammer.itk.fr to see if I can emulate this…

Hi,
7 gateways and less than 1000 nodes should work easily with the configuration you mentionned.
Migrating REDIS and Postgres later is not a big deal, but having it on the same machine will probably be quicker on short term (managed services increase network latencies).

1 Like

Greetings All!

In my quest for information, I scoured the internet extensively but came up empty-handed in my search for a comprehensive benchmark documentation comparing CPU/RAM to Gateway/nodes performance. Faced with this gap, I decided to take matters into my own hands and embark on a journey to create one. The focus of my benchmarking project will be Cloud VPS environments, and I’m excited to share my progress and findings with all of you.

I invite all of you to join me on this endeavor and contribute your valuable recommendations, suggestions, and guidance. Your insights will be instrumental in making this benchmarking project a success! :cowboy_hat_face:

Project Goals: :disguised_face:
My primary objectives for this benchmarking project are as follows:

  1. To explore and document the performance spectrum of VPS instances, ranging from 1vCPU/1GB to 16vCPU/64GB.
  2. To utilize Ubuntu as the host OS for consistent configuration and benchmarking.
  3. To install Docker on all VPS instances to ensure uniformity in the software environment.

Furthermore, I plan to set up an independent VPS dedicated to Prometheus and Grafana. This separate VPS will serve as a monitoring platform, allowing us to closely track and analyze the performance of our benchmarked systems.

Limitations: :sweat: :cry:
It’s important to note that this project does come with certain limitations. Specifically, the available credit provided by my cloud provider is set to expire on September 30, 2023. This means that time is ticking, and we have a finite window to conduct our experiments and gather data.

As I move forward with this ambitious project, I’ll be regularly updating you all on my progress and insights gained along the way. Your engagement and expertise are highly appreciated as we work together to create a valuable resource for our community. If you have any thoughts or suggestions, please don’t hesitate to share them!

Let’s embark on this benchmarking journey together and help each other achieve our goals. :blush:

PS: Enough formality, since I already will be sharing installation issues before even starting.
@brocaar should this be its own post?

[for security reasons public IP has been change by X.X.X.X]

I have 2 servers ready:

  1. lns-CSv4-server
  2. lorhammer-server

lorhammer server is ready and can perform hammering to its local MQTT Broker.
ChirpStack Server is ready using official docker container, can connect from browser.

Network:

  • Forwarded port using docker, correctly expose
  • Can ping and telnet IP:1883 from lrhammer-server → lns-CSv4-server
  • Can do a mosquito_sub or mosquito_pub from lrhammer-server → lns-CSv4-server
  • Both VPS are communicating through public IP, no local network access.

Sending command from

./build/lorhammer -mqtt tcp://X.X.X.X:1883

Checking los at los

 docker logs -f chirpstack-docker-mosquitto-1 

I can see the error

1694061461: New connection from X.X.X.X:52674 on port 1883.
1694061461: Client <unknown> disconnected due to protocol error.
1694061461: New connection from X.X.X.X:52686 on port 1883.
1694061461: Client <unknown> disconnected due to protocol error.

same if I try doing an orchestrator cmd:

root@lorhammer-server:~/go/src/lorhammer# ./build/orchestrator -mqtt tcp://X.X.X.X:1883 -from-file "./resources/scenarios/simple_remote.json"
INFO[0000] Tcp port reserved                             logger=orchestrator/main port=37273
WARN[0000] Welcome to the Lorhammer's Orchestrator      
ERRO[0000] Error while connecting to mqtt                error="Network Error : %!s(<nil>)" logger=orchestrator/main
ERRO[0000] Error while subscribing to topic              error="Not Connected" logger=orchestrator/main
ERRO[0005] No requiered lorhammer after time             MaxWaitLorhammerTime=5s logger=orchestrator/testsuite/manager
ERRO[0005] Error during test                             error="no required lorhammer" logger=orchestrator/main

In case your are wondering what details are in the scenario file “simple_remote.json”

[{
  "test": {
    "type": "oneShot",
    "repeatTime": "0"
  },
  "stopAllLorhammerTime": "0",
  "sleepBeforeCheckTime": "0",
  "shutdownAllLorhammerTime": "0",
  "sleepAtEndTime": "0",
  "requieredLorhammer": 1,
  "maxWaitLorhammerTime": "5s",
  "init": [{
    "nsAddress": "X.X.X.X:1700",
    "nbGatewayPerLorhammer": 1,
    "nbNodePerGateway": [2, 2],
    "nbScenarioReplayLaps": 0,
    "scenarioSleepTime": ["10s", "10s"],
    "receiveTimeoutTime": "1s",
    "gatewaySleepTime": ["100ms", "500ms"],
    "payloads" : [
      {"value": "01B501002919000006018403131313121233", "date": 1488931200},
      {"value": "01B501002919000006018403131313121244", "date": 1488931201}
    ]
  }],
  "provisioning": {
    "type": "loraserver",
    "config": {
      "apiUrl": "X.X.X.X:8090",
      "abp": true,
      "login": "NO_ADMIN_USER",
      "password": "GOOD_PASSWORD",
      "appId": "",
      "nbProvisionerParallel": 10
    }
  },
  "check": {
    "type": "none"
  },
  "deploy": {
    "type": "local",
    "config": {
      "pathFile": "./build/lorhammer",
      "cleanPreviousInstances": true,
      "nbInstanceToLaunch": 1
    }
  }
}]

Any hints? :melting_face: Thanks in advance :innocent: