Was ist die beste sysctl.conf-Konfiguration für einen stark ausgelasteten Content-Streaming-Server mit hoher Auslastung? Der Server ruft den Inhalt von Remote-Servern wie Amazon, S3 usw. ab und verwendet dann PHP, um den Inhalt dynamisch an den Benutzer zu streamen, ohne ihn auf der Festplatte zu speichern. PHP verwendet CURL, um die Datei abzurufen, und verwendet dann Flush (), um sie gleichzeitig zu streamen, sodass nicht viel Festplattenarbeit geleistet wird ... nur Netzwerk und Bandbreite.
Der Server ist ein Quad-Core-XEON mit einer 1-Gbit-Vollduplex-Netzwerkkarte, 8 GB RAM und 500 GB x 2 RAID. Die Auslastung des Serverspeichers und die CPU-Auslastung sind ziemlich gering.
Wir führen Debian Lenny und Lighttpd2 darauf (ja, ich weiß, es ist noch nicht veröffentlicht :-)) mit PHP 5.3.6 und PHP Fastcgi mit Spawn-Fcgi-Bindung an 4 verschiedenen Unix-Sockets mit jeweils 20 Kindern. Die maximale Anzahl an fcgi-Anforderungen beträgt 20, wobei sich das Modul mod_balancer in der lighttpd2-Konfiguration befindet, um die fastcgi-Anforderungen auf diese 4 Sockets in der SQF-Konfiguration (Short Queue First) zu verteilen.
Unsere Server verbrauchen viel Bandbreite, dh die Netzwerkverbindung ist ständig besetzt. Unmittelbar nach 100 bis 200 parallelen Verbindungen verlangsamt sich der Server und reagiert schließlich nicht mehr. Es treten Fehler beim Verbindungs-Timeout auf. Wenn wir cpanel hatten, haben wir nie Timeout-Fehler erhalten, daher kann es sich nicht um ein Skriptproblem handeln. Es muss sich um ein Netzwerkkonfigurationsproblem handeln.
lighttpd2-Konfiguration: Worker-Prozesse = 8, Keep-Alive-Anforderungen sind 32, Keep-Alive-Zeitlimit beträgt 10 Sekunden und maximale Verbindungen sind 8192.
Unsere aktuellen Inhalte auf sysctl.conf sind:
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
# Increase maximum amount of memory allocated to shm
kernel.shmmax = 1073741824
# This will increase the amount of memory available for socket input/output queues
net.ipv4.tcp_rmem = 4096 25165824 25165824
net.core.rmem_max = 25165824
net.core.rmem_default = 25165824
net.ipv4.tcp_wmem = 4096 65536 25165824
net.core.wmem_max = 25165824
net.core.wmem_default = 65536
net.core.optmem_max = 25165824
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# you shouldn't be using conntrack on a heavily loaded server anyway, but these are
# suitably high for our uses, insuring that if conntrack gets turned on, the box doesn't die
# net.ipv4.netfilter.ip_conntrack_max = 1048576
# net.nf_conntrack_max = 1048576
# For Large File Hosting Servers
net.core.wmem_max = 1048576
net.ipv4.tcp_wmem = 4096 87380 524288
sysctls
. Überprüfen Sie, ob Prozesse ersticken, Speicher fehlt usw. strace
und sehen Sie, warum / wo sie hängen.