Chapter 25. NIO SSH Slaves Plugin

Introduction

The NIO SSH Slaves plugin is an alternative SSH slave connector that uses a Non-Blocking I/O architecture. This alternative connector shows different scalability properties from the standard SSH slave connector.

There are three main differences in scalability characteristics:

  • The Non-blocking I/O connector limits the number of threads that are used to maintain the SSH channel. Thus when there are a large number of channels (i.e. many SSH slaves) the Non-blocking connector will use less threads and consequently the Jenkins UI will remain more responsive than with the standard SSH slave connector.
  • When the Non-blocking I/O connector requires more CPU resources than are available, it responds by applying back-pressure to the channels generating the load. This allows the system to remain responsive at a consequence of increasing build times. It is important to note that under this type of load the traditional SSH slave connector typically has lost the connection with a corresponding build failure.
  • The Non-blocking I/O connector is optimized for reduced connection time. For example, it avoids copying the slave JAR file unless necessary; and by default it supresses the logging of the slave environment.

Another important technical note is that the SSH client library used in the Non-Blocking I/O connector currently only supports RSA and DSA key types and the maximum key size is determined by the JCE policy of the Jenkins Master’s JVM. Without installation of the unrestricted policy, the RSA key size will be limited to 2048 bits. Finally the Non-Blocking I/O connectur currently does not support connecting to CYGWIN or other Microsoft Windows based SSH servers.

The NIO SSH Slaves plugin was introduced in Jenkins Enterprise 13.11.