Heim > Artikel > Backend-Entwicklung > So lösen Sie die Probleme hoher Parallelität und großem Datenverkehr in PHP
Dieser Artikel stellt hauptsächlich vor, wie man die Probleme hoher Parallelität und großem Datenverkehr in PHP löst. Jetzt kann ich ihn mit Ihnen teilen
Grundkenntnisse
TFS: Durchsatz (Durchsatz bezieht sich auf die Anzahl der Anfragen, die das System pro Zeiteinheit verarbeitet)
RT: Antwortzeit (vom Senden der Anfrage bis zur Antwortzeit)
Parallelität: Die Anzahl der Benutzer, die gleichzeitig innerhalb von 24 Stunden auf die Website zugreifen ein Zeitraum
QPS: Abfragerate pro Sekunde (Anfragen oder Antworten pro Sekunde, im Internet-Bereich die Anzahl der Antworten pro Sekunde (HTTP-Anfragen))
PV: Seitenaufrufe, Seitenaufrufe
UV: Benutzeransicht, Benutzeraufrufe
Im Allgemeinen beträgt der tägliche PV ( Besuche) ist größer als 10 Millionen. Es kann als hohe Parallelität betrachtet werden
Tägliche Website-Bandbreite = PV / statistische Zeit (Sekunden) * durchschnittliche Seitengröße (KB) * 8
Stresstest
Es wird empfohlen, Apaches eigenes Stresstest-Tool ab zu verwenden
Verwendung: Geben Sie das Apache-Verzeichnis ein und führen Sie es im aktuellen Verzeichnis (Windows) aus:
ab.exe -n 总请求量 -c 并发请求量 http://请求地址
Nachdem die Anfrage abgeschlossen ist, können wir die Daten abrufen:
Server Software: Apache/2.4.18 服务器类型 Server Hostname: eko.xiao.com 域名 Server Port: 80 端口 Document Path: /index.html 请求文件 Document Length: 529 bytes 文件大小 Concurrency Level: 100 并发数 Time taken for tests: 1.240 seconds 总响应时间 Complete requests: 1000 请求数 Failed requests: 0 失败次数 Total transferred: 800000 bytes 总共传输数据量 HTML transferred: 529000 bytes Requests per second: 806.41 [#/sec] (mean) QPS(每秒查询率) Time per request: 124.007 [ms] (mean) 平均响应时间 Time per request: 1.240 [ms] (mean, across all concurrent requests) Transfer rate: 630.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.4 1 38 Processing: 42 114 34.2 103 204 Waiting: 41 113 33.9 102 204 Total: 43 115 34.5 104 207 Percentage of the requests served within a certain time (ms) 50% 104 66% 117 75% 133 80% 136 90% 173 95% 197 98% 204 99% 204 100% 207 (longest request)
Optimierung
Mit zunehmendem QPS sind in jeder Phase unterschiedliche Optimierungsmaßnahmen erforderlich. Der Optimierungsplan hängt auch von den Hardware- und Netzwerkbedingungen ab.
QPS erreicht 50
Keine Optimierung erforderlich
QPS erreicht 100 (Datenbankschicht)
Angenommen, jede Datenbankabfrage ist 0,01 S und jede Seite hat nur eine SQL-Abfrage , dann ist das Datenbanklimit zu diesem Zeitpunkt bereits erreicht
Optimierungsmaßnahmen: Datenbank-Cache, Datenbank-Lastausgleich, Redis, Memcache
QPS erreicht 800 (Netzwerkbandbreite)
Angenommen dass jede Seite nur 10K groß ist, dann ist bei 800QPS die Bandbreite erschöpft
Optimierungsmaßnahmen: CDN-Beschleunigung Lastausgleich
QPS erreicht 1000
Optimierungsmaßnahmen: Statische Seite
Traffic-Optimierung:
Anti-Hotlink-Verarbeitung
Front-End-Optimierung:
HTTP-Anfragen reduzieren
Asynchrone Anfragen hinzufügen
Browser-Cache aktivieren
Serveroptimierung:
Seitenstatisch
Parallelitätsverarbeitung
Warteschlangenverarbeitung
Datenbankoptimierung:
Datenbank-Cache
Datenbank-Untertabelle, Partitionsoperation
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Bitte achten Sie auf die chinesische PHP-Website!
Verwandte Empfehlungen:
PHP-Experte geteilt: PHP-Code-Schreibspezifikationen, eine vollständige Zusammenfassung
PHP-Einführung in die Installation und Integration mit Apache
Das obige ist der detaillierte Inhalt vonSo lösen Sie die Probleme hoher Parallelität und großem Datenverkehr in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!