Timeout issues are described in the NSClient documentation, but at the time of writing it may not be exhaustive. This article is offered as a complement, but should not be considered a replacement. The NSClient documentation points out that:
Configuring timeouts can some times be a problem and cause strange errors. It is important to understand that timeouts are cascading this means if you have all timeouts set to 60 seconds they will all miss fire.
The Nagios server timeout will fire after exactly 60 seconds but the script timeouts will be started maybe 1 second after the Nagios service check timeout this means once we reach 60 seconds the Nagios service timeout will fire first and 1 second after the script will timeout. This you always have to set each timeout slightly less to accommodate this drift.
At the time of writing, the original documentation mentions five settings that should be considered, but there are actually six when including the general timeout:
NSClient++ general timeout
Documented here. Described as: "Timeout when reading packets on incoming sockets. If the data has not arrived within this time we will bail out." Example:
[/settings/external scripts/wrappings] vbs = cscript.exe //T:120 //NoLogo scripts\\lib\\wrapper.vbs %SCRIPT% %ARGS%
External script timeout:
[/settings/external scripts] timeout = 65
[settings/NRPE/server] timeout = 70
check_nrpe -t 75
Nagios service check timeout