Why is TPS used to determine the Solana network health?
Let's start by saying TPS is not a good way to measure network health.
The reason it is often used to measure the health of the network is due to people finding that it sometimes correlates with congestive issues. This does not mean that it is a good metric to measure health though.
Just as an example, people are now often confused by devnet performance and commonly think there's issues looking at TPS. Devnet just has lower TPS because it has less usage and a whole lot less validators.
How should I measure network health?
There's a variety of metrics you should consider when determining network health.
Average Confirmation Time
When confirmation times start to skyrocket, that's usually an indicator that there is some amount of forking going on or transactions are not confirming before they expire. You can find this measurement on tools such as ping thing.
Tower Distance in Latest and Root Slot
If the tower distance is getting very high between latest and root slot, that can also lead to excessive forking. At a certain point, the cluster will go into Vote Only mode if the tower distance is too high. This will cause non-vote transactions to fail as the cluster tries to normalize.
Slot Skip Rate
Validators that are unable to produce a block within their designated timeframe will cause slots to be skipped. That paired with delinquent validators on the leader schedule can cause a high percentage of slots to be skipped and lead to a bad user experience.
Time since last block produced
A good indicator of cluster health is time since last block produced. If the time grows too far from the PoH target, it can be a leading indicator that the cluster may halt. This is not a sure-fire way to determine it, but a good indicator on how validators are doing with the current traffic and producing blocks.
Number of Validators Online
During high congestion times, it can be seen that a large amount of validators may be kicked offline due to OOM(Out of Memory) or other issues. If this amount gets too high and the cluster cannot maintain consensus, it will need to be restarted.
Other Factors
All of the above are good starting points to determine cluster health, but are not the complete list. Depending on the scenario, you may want to check into other cluster stats to understand if there is a problem elsewhere. A great example of this is checking pps(packets per second) and determining if they're too high for most Validator's NIC. Always be mindful of all cluster stats when determining cluster health.