Heim > Backend-Entwicklung > PHP-Tutorial > Optimierung des Nginx-Serversystems

Optimierung des Nginx-Serversystems

WBOY
Freigeben: 2016-08-08 09:32:57
Original
998 Leute haben es durchsucht

1 Die Standardgröße der Linux-Kerndatei beträgt 0

Was ist eine Kerndatei? Wenn ein Programm abstürzt, wird das Speicherabbild des Prozesses in die Kerndatei im aktuellen Arbeitsverzeichnis des Prozesses kopiert. Die Kerndatei ist lediglich ein Speicherabbild (plus Debugging-Informationen), das hauptsächlich zum Debuggen verwendet wird. Die Kerndatei ist eine Binärdatei und es müssen entsprechende Tools verwendet werden, um das Speicherabbild zu analysieren, wenn das Programm abstürzt.

Die Standardgröße der Kerndatei des Systems beträgt 0, daher wird sie nicht erstellt. Mit dem Befehl ulimit können Sie die Größe der Kerndatei anzeigen und ändern.

$ulimit -c

0

$ ulimit -c 1000

$ulimit-c

1000

-c gibt an, die Kerndateigröße zu ändern, 1000 gibt die Kerndateigröße an. Sie können auch keine Begrenzung für die Größe der Kerndatei festlegen, z. B.:

# ulimit -c unbegrenzt

#ulimit -c

Unbegrenzt

Wenn Sie möchten, dass die Änderungen dauerhaft wirksam werden, müssen Sie die Konfigurationsdatei ändern

In Vim /etc/profile:

ulimit -S -c 0 > /dev/null 2>&1

Ändern zu

ulimit -S -c 1000 > /dev/null 2>&1

Referenz: http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html

2 Der Standardwert für geöffnete Linux-Dateien und maximale Benutzerprozesse ist 1024

#ulimit -n

1024

#ulimit –u

1024

Problembeschreibung: Beschreibung Der Server ermöglicht nur das gleichzeitige Öffnen von 1024 Dateien und verarbeitet 1024 Benutzerprozesse.

Verwenden Sie ulimit -a, um alle Grenzwerte des aktuellen Systems anzuzeigen, und verwenden Sie ulimit -n, um die aktuelle maximale Anzahl geöffneter Dateien anzuzeigen.

Das neu installierte Linux verfügt standardmäßig nur über 1024. Bei Verwendung als Server mit hoher Auslastung kann es leicht zu Fehlern kommen: zu viele offene Dateien. Daher muss es größer gemacht werden.

Lösung:

Verwenden Sie ulimit –n 65535, um es sofort zu ändern. Nach dem Neustart ist es jedoch ungültig. (Beachten Sie, dass ulimit -SHn 65535 äquivalent zu ulimit -n 65535 ist, -S sich auf weich und -H auf hart bezieht)

Es gibt drei Änderungsmethoden:

1. Fügen Sie eine Zeile ulimit -SHn 65535
zu /etc/rc.local hinzu 2. Fügen Sie eine Zeile ulimit -SHn 65535
in /etc/profile hinzu 3. Fügen Sie am Ende von /etc/security/limits.conf Folgendes hinzu:

* Soft Nofile 65535
* harte Nofile 65535
*soft nproc 65535
*harter Nproc 65535

Welche Methode soll speziell verwendet werden? Die erste Methode hat in CentOS keine Auswirkung, die dritte Methode hat eine Auswirkung und die zweite Methode hat eine Auswirkung in Debian.

# ulimit -n

65535

# ulimit -u

65535

Hinweis: Der Befehl ulimit selbst verfügt über Soft- und Hard-Einstellungen. Fügen Sie -H für Hard und -S für Soft hinzu. Die Standardanzeige ist Soft Limit.

Der Soft-Limit bezieht sich auf den im aktuellen System gültigen Einstellwert. Der harte Grenzwert kann von normalen Benutzern gesenkt werden. Aber es kann nicht erhöht werden. Das Soft-Limit kann nicht höher eingestellt werden als das Hard-Limit. Nur der Root-Benutzer kann den harten Grenzwert erhöhen.

3 Es wurde festgestellt, dass sich eine große Anzahl von Verbindungen im Status TIME_WAIT befindet


Problembeschreibung: Es wurde eine große Anzahl von Verbindungen im Status „time_wait“ gefunden, teilweise sogar über 7000

netstat -n |. awk '/^tcp/ { state[$NF]} END {for(key in state) print key,"t",state[key]}'

Finden Sie weitere time_wait-Verbindungen

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

Es wurde festgestellt, dass MySQL und Memcache des DB-Servers nicht freigegeben wurden.

Lösung: Für Anwendungen, die viele TCP-Verbindungen nutzen, müssen auch die Parameter in /etc/sysctl.conf entsprechend optimiert werden:

vim /etc/sysctl.conf

Bearbeiten Sie die Datei und fügen Sie den folgenden Inhalt hinzu:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

Führen Sie dann /sbin/sysctl -p aus, damit die Parameter wirksam werden.

Nach der Optimierung:

Es wurde festgestellt, dass eine große Anzahl von TIME_WAIT nicht mehr vorhanden war und die Auslastung des MySQL-Prozesses schnell abnahm.

Das Obige hat die Optimierung des Nginx-Serversystems eingeführt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage