Ich spiele mit pgBouncer als Verbindungspooling-System für PostgreSQL. Mein System ist ein 12-Core-System mit 64 GB RAM und 1 Gbit / s-Netzwerkschnittstelle unter Debian 8.1. Jetzt möchte ich das Limit für Open-Socket-Verbindungen auf beispielsweise 10.000 gleichzeitige Clients erhöhen. Beim Durchführen von DB-Benchmarks werden die pgbench
Dienstprogramme bei etwa 950 gleichzeitigen Clients blockiert, was wie in guten alten Zeiten ein Limit von 1024 offenen FDS zu erreichen scheint. Ich habe den fs.file-max
Kernel-Parameter und das pgbench
Ressourcenlimit des laufenden Benutzers überprüft :
# sysctl fs.file-max
fs.file-max = 6598264
# su - postgres
$ ulimit -Sn
65536
$ fgrep files /proc/self/limits
Max open files 65536 65536 files
$
Die Grenzwerte von proc
zeigen jedoch, dass das Soft-Limit für maximal geöffnete Dateien für pgBouncer (als Benutzer ausgeführt postgres
) nur maximal 1024 geöffnete Dateien beträgt:
$ ps -e | fgrep pgbouncer
9840 ? 00:00:00 pgbouncer
$ fgrep files /proc/9840/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
$
Ich habe versucht , die Grenze durch das Einfügen zu erhöhen ulimit -S -n 5000
in /etc/default/pgbouncer
(lesen Sie in der Start / Stopp - Skript in /etc/init.d
), aber das hat nicht funktioniert. Dann habe ich versucht nofile
, mich einzurichten /etc/security/limits.conf
und sichergestellt, dass es in PAM aktiviert ist, aber ohne Erfolg.
Wo genau wird start-stop-daemon
das nofile
Limit für Daemon-Prozesse gesenkt? Ich bin über diesen alten Fehlerbericht für Debian gestolpert , aber es scheint, dass der Patch nie angewendet wurde.
Übrigens: Ist es fs.file-max
wirklich der Ersatz der Kernelvariablen des früheren Systems nofiles
(beachten Sie den Plural), wie in vielen Blog-Artikeln zum Thema Tuning vorgeschlagen? Ich wundere mich, dass es im fs
Parameterbereich ist. Auf meinem IRIX-System wird es rlimit_no_files_max
im Ressourcenbereich aufgerufen , was für mich viel sinnvoller ist, als es in den fs
Abschnitt zu setzen.
Was mache ich hier falsch? Wo ist der richtige Ort, um diesen Parameter für Daemons in Debian 8.1 zu ändern?
Danke im Voraus,
Stefan
pgbouncer
, aber es hatstrace
gezeigt, dass diessystemd
die No-Dateien begrenzt, kurz bevor der Daemon ausgeführt wird. Vielleicht ist es in systemd fest codiert. Wie auch immer, jetzt funktioniert es und das Limit von 950 Dateien ist weg. Jetzt bricht pgbench mit 1025 Clients ab und eine Fehlermeldung (na ja):ulimit -H -n
zeigt65536
,pgbench -c 1025 -C -T 60
löst Fehler ausinvalid number of clients: 1025
.