File descriptor

Ein file descriptor ist ein abstrakter Indikator für den Zugriff auf eine Datei.

Dabei verwendet ein ZEO-Server für jeden Storage je Client-Verbindung 3 dieser Deskriptoren. Bei einem ZEO-Server mit zehn Storages und 36 ZEO-Clients würden also 10×36×3 file sescriptors benötigt. Üblicherweise verwendet der ZEO-Server jedoch nicht die erforderlichen 1080 file descriptors sondern nur 1025. Dies führt dann dazu, dass ZEO-Clients mit der Zeit keine Seiten mehr ausliefern und in deren Log-Dateien ECONNREFUSED-Meldungen erscheinen.

Die Ursache hierfür ist, dass Python üblicherweise kompiliert wird mit einer maximalen Anzahl von 1024 file descriptors je Prozess. Dies lässt sich ändern indem in /usr/include/bits/typesizes.h der Wert für define __FD_SETSIZE hochgesetzt wird, z.B. auf 2048. Nach einem Neukompilieren von Python kann der ZEO-Server dann auch alle 1080 file descriptors verwenden.

Andreas Gabriel hat ein Skript geschrieben, mit dem sich die maximale Anzahl der Verbindungen testen lässt: zeo-check-max-connections.py