Ein Kollege wies mich auf etwas beim gerrit hin, was ich nun versuche hier wiederzugeben.
Der Gerrit Server macht bei einer SSH Verbindung einen Thread auf, in diesem Threadpool werden die Verbindungen abgearbeitet. Pro Thread werden nur x Verbindungen zugelassen und alle weiteren landen in einer Warteschleife. Nun kann es vorkommen das die Verbindungen nicht rechtzeitig abgearbeitet werden und einige Verbindungen nicht sauber geschlossen werden bzw brechen ab.
Die Anzahl der Threads ist unter anderem Abhängig von der Anzahl der CPU Kerne, mehr Kerne also mehr mögliche Verbindungen.
Werden Jenkins Server verwendet die auf den git Server zugreifen, verursachen diese ebenfalls Threads (Verbindungen).
Damit sich die Verbindungen der Jenkins Server und der Benutzer nicht in die quere können, kann für die Server ein Non-Interactive Users erstellt werden.
Dieser wird wie folgt erstellt, der Befehl muss von einem Benutzer mit Adminrechten ausgeführt werden.
cat /home/jenkins-user/.ssh/id_rsa.pub | ssh -p 29418 git.itbasic.de gerrit create-account –ssh-key – jenkins-user
Ein Non-Interactive kann sich nicht an der Weboberfläche anmelden, somit kann man weitere SSH Keys nur über die Datenbank hinzufügen. Hierfür müssen in der Tabelle account_ssh_keys die Felder ssh_public_key,valid,account_id und seq befüllt werden. Nur zu Info, die Spalte seq muss manuell hochgezählt werden.
Wenn ein neuer SSH Key hinzugefügt wurde muss noch das nachfolgende Kommando ausgeführt werden, da ansonsten ein Zugriff nicht möglich ist.
ssh -p29418 benutzer@git.itbasic.de gerrit flush-caches –cache=sshkeys
Auch hier muss der Benutzer Adminrechte haben.