Auswirkungen wenn man max_files_per_process verringert

In einem Projekt haben wir einen Kunden bei dem Postgres ständig Fehler produziert weil zu wenig File Handles im System verfügbar sind.

Der Prozess den Server umzukonfigurieren ist etwas aufwändig und vermutlich kann das Linux auf Grund von anderen Restriktionen gar nicht so konfiguriert werden dass wirklich immer zuverlässig genügend File Handles zur Verfügung stehen.

Man kann bei Postgres via max_files_per_process konfigurieren wie viele Handles ein Backend maximal verwendet. Und wir sind derzeit am Überlegen den Wert von den 1000 (Default) auf 750 oder sogar 500 zu reduzieren. Die Anwendung die auf die DB zugreift macht das über einen Connection Pool. Auf der DB haben wir ca. 60-100 (nie mehr) offene Sessions.

Mir ist aber nicht ganz klar was das für eine Auswirkung auf die Performance der Datenbank haben wird. Das Schema ist relativ groß (500-600 Tabellen) und die meisten Queries verwenden auch relativ viele Tabellen. Im Handbuch steht, dass ein Backend dem die Filehandles ausgehen (also das Limit von max_files_per_process erreicht hat), Handles wieder geschlossen werden um neue aufmachen zu können. Offensichtlich beschleunigt das offen lassen der Handles den Zugriff auf die Dateien - sonst würde man das vermutlich nicht machen.

Deswegen meine Frage: wenn man davon ausgeht dass Postgres derzeit die 1000 File Handles verwendet und in Zukunft weniger hat, wie stark (wenn überhaupt) wird sich das auf die Geschwindigkeit der Zugriffe auswirken? Ist das überhaupt quantifizierbar ohne die Auslastung und Queries im Detail zu kennen?

Weniger PostreSQL aber mehr Linux…

sysctl fs.file-max

Hast du dir schon angeschaut bzw. mal danach in der Suchmaschine deiner Wahl geschaut?

cu tb

Wie schon geschrieben, wird eine Änderung der Konfiguration des Betriebssystem angegangen. Aber der Betreiber meint, dass es vermutlich (auf Grund der Ausstattung der Maschine) nicht hoch genug eingestellt werden kann. Deswegen erwägen wir die Möglichkeit das auf Postgres Seite zu reduzieren (ich selber habe keinen Zugriff auf die Maschine, das geht alles um drei Ecken).