Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie die Probleme hoher Parallelität und großem Datenverkehr in PHP

So lösen Sie die Probleme hoher Parallelität und großem Datenverkehr in PHP

不言
不言Original
2018-07-14 11:44:096275Durchsuche

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!

Stellungnahme:
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