Unter Linux versteht man unter hoher Parallelität die Situation, dass während des Systembetriebs „eine große Anzahl von Betriebsanforderungen auftritt“. Dies geschieht hauptsächlich, wenn das Websystem eine große Anzahl von Anforderungen für den konzentrierten Zugriff erhält Diese Situation führt dazu, dass das System in diesem Zeitraum eine große Anzahl von Vorgängen ausführt, z. B. Ressourcenanforderungen, Datenbankvorgänge usw.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Ein Konzept für hohe Parallelität
1.1 Konzept für hohe Parallelität
Hohe Parallelität (Hohe Parallelität) ist einer der Faktoren, die beim Entwurf einer verteilten Internetsystemarchitektur berücksichtigt werden müssen Sicherstellung, dass das System durch Design in der Lage ist, viele Anfragen parallel gleichzeitig zu bearbeiten .
Hohe Parallelität (Hohe Parallelität) ist eine Situation, in der während des Systembetriebs „eine große Anzahl von Betriebsanforderungen in kurzer Zeit“ auftritt. Dies tritt hauptsächlich auf, wenn das Websystem eine große Anzahl von Anforderungen für konzentrierten Zugriff erhält (). Beispiel: 12306 Ticket-Grab-Situation; Tmall Double Eleven-Ereignis). Das Auftreten dieser Situation führt dazu, dass das System in diesem Zeitraum eine große Anzahl von Vorgängen ausführt, z. B. Ressourcenanforderungen, Datenbankvorgänge usw.
1.2 Hohe Parallelitätsindikatoren
Antwortzeit (Antwortzeit)Die Zeit, die das System benötigt, um auf Anfragen zu reagieren. Beispielsweise dauert es 200 ms, bis das System eine HTTP-Anfrage verarbeitet. Diese 200 ms sind die Antwortzeit des Systems Zweitens)- Anzahl der Antwortanfragen pro Sekunde. Im Internetbereich ist der Unterschied zwischen diesem Indikator und dem Durchsatz nicht so offensichtlich. In einem Instant-Messaging-System stellt beispielsweise die Anzahl der gleichzeitigen Benutzer online in gewissem Maße die Anzahl der gleichzeitigen Benutzer des Systems dar. In Bezug auf Parameter
IO-Ereignisverteilungsmechanismus -
- 2. Verbessern Sie die Parallelitätsfähigkeit des Systems
- 2.1 Vertikale Erweiterung Verbessern Sie die Verarbeitungsfähigkeiten einer einzelnen Maschine
Verbessern Sie die Hardwareleistung einer einzelnen Maschine, zum Beispiel: Erhöhen Sie die C PU. Die Anzahl der Kerne beträgt etwa 32 Kerne, Upgrade B. auf eine bessere Netzwerkkarte wie 10G, aktualisieren Sie auf eine bessere Festplatte wie SSD, erweitern Sie die Festplattenkapazität wie 2T, erweitern Sie den Systemspeicher wie 128G, um die Leistung einer Einzelmaschinenarchitektur zu verbessern, zum Beispiel: Verwenden Sie Cache, um IO-Zeiten reduzieren, asynchron verwenden, um den Durchsatz einzelner Dienste zu erhöhen, sperrenfreie Datenstrukturen verwenden, um die Antwortzeit zu reduzieren
-
2.2 Horizontale Erweiterung
-
Eine Erhöhung der Anzahl der Server kann die Systemleistung linear steigern
2.3 Gemeinsame Internet-Schichtarchitektur
(1) Client-Schicht: Typischer Aufrufer ist Browser oder mobile Anwendungs-APP(2) Reverse-Proxy-Schicht: Systemeingang, Reverse-Proxy
(3) Site-Anwendungsschicht: implementieren Kernanwendungslogik, Rückgabe von HTML oder JSON : Datenbanksolidierter Datenspeicher
-
2.4 Horizontale Erweiterungsarchitektur
Horizontale Erweiterung der Reverse-Proxy-Schicht
Wenn Nginx zu einem Engpass wird, erhöhen Sie einfach die Anzahl der Server und fügen Sie Nginx hinzu. Zur Dienstbereitstellung hinzufügen Eine externe Netzwerk-IP kann die Leistung der Reverse-Proxy-Schicht erweitern und theoretisch eine unendlich hohe Parallelität erreichenErreicht durch „DNS-Polling“: Der DNS-Server konfiguriert bei jedem Zugriff mehrere Konfigurationen für einen Domänennamen Beim DNS-Server werden diese IPs abgefragt und zurückgegeben. Die horizontale Erweiterung der Site-Ebene wird durch „nginx“ erreicht. Durch Ändern von nginx.conf können mehrere Web-Backends eingerichtet werden
- Wenn das Web-Backend zu einem Engpass wird, erhöhen Sie einfach die Anzahl der Server, fügen Sie eine neue Webdienstbereitstellung hinzu und konfigurieren Sie ein neues Web-Backend in der Nginx-Konfiguration. Es kann die Leistung der Site-Schicht erweitern und eine theoretisch unendlich hohe Parallelität erreichen, indem der „Service-Verbindungspool“ verwendet wird, der Verbindungspool im RPC-Client Wenn der Dienst zu einem Engpass wird, können Sie einfach die Anzahl der Server erhöhen, neue Dienstbereitstellungen hinzufügen und neue Verbindungen zum RPC-Client herstellen Theoretisch unendlich hohe Parallelität. Die Datenschicht (Cache, Datenbank) umfasst die horizontale Erweiterung der Daten und die ursprüngliche Speicherung der Daten (Cache, Datenbank) auf einem Server, um das System zu erweitern Leistung.
Speichern Sie einen bestimmten Datenbereich.
Benutzer0-Bibliothek, Speicher-UID-Bereich 1–1 kW.
Benutzer1-Bibliothek, Speicher-UID-Bereich 1 kW–2 kW
Die Benutzer0-Bibliothek speichert gerade UID-Daten. Die Benutzer1-Bibliothek speichert ungerade UID-Daten. Drei einzelne Linux-Server verbessern die Parallelität.
Schließen Sie die iptables-Firewall um zu verhindern, dass der Kernel das iptables-Modul lädt
- Begrenzung der maximalen Anzahl geöffneter Dateien in einem einzelnen Prozess (die standardmäßige maximale Anzahl geöffneter Dateien in einem einzelnen Prozess beträgt 1024)
ulimit –n 65535
Nach dem Login kopieren
- Ändern Sie Soft und Hard Beschränkungen des Linux-Systems hinsichtlich der Anzahl geöffneter Dateien für Benutzer
vim /etc/security/limits.conf
* soft nofile 65535 #'*'表示修改所有用户的限制
* hard nofile 65535
Nach dem Login kopieren
#用户完成系统登录后读取/etc/security/limits.conf文件
vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so
Nach dem Login kopieren
3.2 Kernel-TCP-Parameter
Nachdem die TCP-Verbindung getrennt wurde, bleibt sie eine Zeit lang im TIME_WAIT-Status bestimmte Zeitspanne, bevor der Port freigegeben wird. Wenn zu viele gleichzeitige Anforderungen vorliegen, wird eine große Anzahl von Verbindungen im Status TIME_WAIT generiert. Wenn diese nicht rechtzeitig getrennt werden können, werden viele Portressourcen und Serverressourcen belegt
#查看TIME_WAIT状态连接
netstat -n | grep tcp | grep TIME_WAIT |wc -l
Nach dem Login kopieren
# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1 #表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse= 1 #表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle= 1 #表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout= 30 #修改系統默认的TIMEOUT 时间。
Nach dem Login kopieren
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonWas bedeutet hohe Parallelität unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!