Slow Starting Nodes
This section gives general recommendations if your nodes are slow to start
Nodes Are Slow to Start
Normally nodes should be up and running after a restart within 5 minutes. If your nodes always takes 10 or more minutes to startup, see if it is due to one of these reasons:
Reason 1: Database not synced
This usually happens in the following circumstances:
Node is newly setup
Node was shutdown for some time before starting up
A recent upgrade requires a db sync
Solution: Wait for the database to resync. Next time you startup the node, it should not take that long. In the case of node upgrades, always read the release notes where it is usually stated if there will be a significant delay on startup
Reason 2: Hardware/Network
If you are running on hardware that is old, has limited resources (e.g. cpu, memory, hard disk, network bandwidth does not fit current recommended specifications), then your startup will be slow. It is important to monitor this closely to ensure that this does not prevent you from minting blocks. Use monitoring tools to check out utilization levels
Solution: If you see frequently high resource utilization, it is a good idea to upgrade the component that is causing problems. If only one component is causing problems (e.g. lack of memory), you may choose to upgrade only that component.
Reason 3: Ungraceful Shutdown
In some environments, it seems that the shutdown command ungracefully terminates the cardano-node even if a service has been setup to properly terminate it during a shutdown. This triggers longer pre-start checks on the next start up. (Thanks to Chris [HONEY] for contributing to this section).
Solution
You need to ensure that the node is terminating gracefully. Graceful termination requires a SIGINT
to be sent to the cardano-node
process. Depending on how you are running your node this can be achieved in multiple ways:
1. Directly terminating the process
If you are running the process yourself (unlikely unless testing) pressing ctrl+c
is enough to send SIGINT
.
If you are trying to terminate the process based on PID you can run this at the command line:
In the above example, -2 is the equivalent of -SIGINT
2. Terminating via systemctl
If you have a service setup to control the cardano-node
via systemctl
then you need to ensure the service has the correct signals set up, e.g. ensure these parameters are set:
Note: This will only work if the signals are propagated to the cardano-node
process.
3. Ensuring correct signal via wrapper shell script
If you are in a situation where you are using a wrapper shell script and you cannot control the signal being passed to it you can use something like this:
This will trap both SIGTERM
and SIGINT
and ensure a SIGINT
is passed to the cardano-node. In the above example, there is also a “sleep” command to ensure the underlying process has enough time to complete a graceful shutdown.
4. Shutting down via docker
There are various ways to achieve this, but to kill a cardano-node
running with docker
from the command line one can use something similar to:
```shell docker kill --signal=SIGINT cardano_container
5. Shutting down manually via systemctl
If the above steps do not work for you, an option that some people find useful is to shutdown the cardano service manually before performing the actual shutdown.
Last updated