Heim  >  Artikel  >  Wie löst PHP die großen Datenmengen, den großen Datenverkehr und die hohe Parallelität der Website?

Wie löst PHP die großen Datenmengen, den großen Datenverkehr und die hohe Parallelität der Website?

无忌哥哥
无忌哥哥Original
2018-06-27 14:44:161798Durchsuche

1: Hardware

Ein gewöhnlicher p4-Server kann bis zu 100.000 IPs pro Tag unterstützen. Wenn die Anzahl der Besuche 10 W übersteigt, ist ein dedizierter Server erforderlich, um das Problem zu lösen. Wie kann die Software optimiert werden? Es ist alles nutzlos. Die Hauptfaktoren, die die Geschwindigkeit des Servers

beeinflussen, sind: Netzwerk – Lese- und Schreibgeschwindigkeit der Festplatte – Speichergröße – CPU-Verarbeitungsgeschwindigkeit.

2: Softwareaspekt

Zuallererst muss die Datenbank gut strukturiert sein. Vermeiden Sie die Verwendung von * Indizes und Sortierung für häufig abgefragte Elemente. Wenn die Bedingungen dies zulassen, ist es im Allgemeinen am besten, den MySQL-Server

im Linux-Betriebssystem zu installieren. In Bezug auf Apache und Nginx wird empfohlen, Nginx in Situationen mit hoher Parallelität zu verwenden. Ginx ist ein guter Ersatz für den Apache-Server. Nginx verbraucht weniger Speicher. Der offizielle Test kann 50.000 gleichzeitige Verbindungen unterstützen, und in der tatsächlichen Produktionsumgebung kann die Anzahl gleichzeitiger Verbindungen 20.000 bis 30.000 erreichen. Schließen Sie unnötige Module in PHP so weit wie möglich und verwenden Sie Memcached, ein leistungsstarkes verteiltes Speicherobjekt-Caching-System, das Daten direkt aus dem Speicher überträgt, ohne eine Datenbank zu verwenden. Dadurch wird die GZIP-Komprimierung erheblich verbessert Website und komprimieren Sie den Website-Inhalt, um den Website-Verkehr erheblich zu reduzieren.

Zweitens ist das externe Hotlinking verboten.

Hotlinking von Bildern oder Dateien von externen Websites bringt oft einen hohen Lastdruck mit sich, daher sollte das externe Hotlinken von Bildern oder Dateien auf die eigenen

strikt eingeschränkt werden, derzeit kann man einfach darauf verweisen. Um Hotlinking zu steuern, kann Apache selbst

Hotlinking über die Konfiguration deaktivieren. IIS verfügt auch über einige ISAPIs von Drittanbietern, die dieselbe Funktion erreichen können.

Natürlich kann das Fälschen von Verweisen auch durch Code erfolgen, um Hotlinking zu erreichen, aber derzeit gibt es nicht viele Leute, die absichtlich Verweise auf Hotlink fälschen.

Sie können es ignorieren oder nichttechnische Mittel verwenden, um das Problem zu lösen Wie auf den Bildern. Wasserzeichen hinzufügen.

Drittens kontrollieren Sie den Download großer Dateien.

Das Herunterladen großer Dateien nimmt viel Datenverkehr in Anspruch, und bei Nicht-SCSI-Festplatten verbraucht das Herunterladen einer großen Anzahl von Dateien

CPU, was die Reaktionsfähigkeit der Website verringert. Versuchen Sie daher, keine Downloads großer Dateien mit einer Größe von mehr als 2 MB bereitzustellen. Wenn

erforderlich ist, wird empfohlen, große Dateien auf einem anderen Server zu platzieren.

Viertens: Verwenden Sie verschiedene Hosts, um den Hauptverkehr umzuleiten.

Platzieren Sie Dateien auf verschiedenen Hosts und stellen Sie Benutzern verschiedene Bilder zum Herunterladen zur Verfügung. Wenn Sie beispielsweise das Gefühl haben, dass RSS-Dateien viel Verkehr beanspruchen, nutzen Sie Dienste wie FeedBurner oder FeedSky, um die RSS-Ausgabe auf andere Hosts zu verteilen Konzentrieren Sie sich auf den Host von FeedBurner, und RSS wird nicht verfügbar sein. Es beansprucht zu viele Ressourcen.

Fünftens: Verwenden Sie verschiedene Hosts, um den Hauptverkehr umzuleiten.

Platzieren Sie Dateien auf verschiedenen Hosts und stellen Sie den Benutzern verschiedene Bilder zum Herunterladen zur Verfügung . Wenn Sie beispielsweise das Gefühl haben, dass RSS-Dateien viel Datenverkehr beanspruchen, nutzen Sie Dienste wie FeedBurner oder FeedSky, um die RSS-Ausgabe auf anderen Hosts zu platzieren. Auf diese Weise wird der größte Teil des Datenverkehrsdrucks durch den Zugriff anderer Personen konzentriert Der Host von FeedBurner und RSS belegen nicht zu viele Ressourcen.


Sechstens: Verwenden Sie eine Verkehrsanalyse- und Statistiksoftware.
Durch die Installation einer Verkehrsanalyse- und Statistiksoftware auf der Website können Sie sofort erkennen, wo viel Verkehr verbraucht wird und welche Seiten optimiert werden müssen. Daher ist eine genaue statistische Analyse erforderlich, um das Verkehrsproblem zu lösen. Zum Beispiel: Google Analytics.

Einschränkungen für hohe Parallelität und hohe Last: Hardware, Bereitstellung, Betriebssystem, Webserver, PHP, MySQL, Tests

Bereitstellung: Servertrennung, Datenbankcluster und Bibliothekstabellen-Hashing, Spiegelung, Laden Balancing


Lastausgleichsklassifizierung: 1), DNS-Round-Robin 2) Proxyserver-Lastausgleich 3) Adressübersetzungs-Gateway-Lastausgleich 4) NAT-Lastausgleich 5) Reverse-Proxy-Lastausgleich 6) Hybrider Lastausgleich

Bereitstellungsplan 1:

Anwendungsbereich: Websites und Anwendungssysteme mit statischen Inhalten als Hauptteil; Websites und Anwendungssysteme mit hohen Systemsicherheitsanforderungen.

Hauptserver: Der Hauptserver

trägt den Hauptlaufdruck des Programms und verarbeitet dynamische Anforderungen auf der Website oder im Anwendungssystem.

überträgt statische Seiten an mehrere Veröffentlichungsserver ;

Übertragen Sie die Anhangsdatei auf den Dateiserver

Bei Websites mit hohen Sicherheitsanforderungen und hauptsächlich statischen Werten kann der Server im internen Netzwerk platziert werden, um den Zugriff vom externen Netzwerk zu blockieren.

DB-Server: Der Datenbankserver

trägt den Lese- und Schreibdruck der Datenbank

tauscht nur Daten mit dem Hauptserver aus und blockiert den externen Netzwerkzugriff.

Datei-/Videoserver: Der Datei-/Videoserver

überträgt Datenströme, die große Systemressourcen und Bandbreitenressourcen im System beanspruchen.

dient zum Speichern, Lesen und Schreiben von Lager für große Anhänge

Als Videoserver verfügt er über automatische Videoverarbeitungsfunktionen.

Veröffentlichungsservergruppe:

ist nur für die Veröffentlichung statischer Seiten verantwortlich und überträgt die überwiegende Mehrheit der Webanfragen.

führt die Lastausgleichsbereitstellung über Nginx durch.

Bereitstellungsplan 2:

Anwendungsbereich: Websites oder Anwendungssysteme mit dynamischem interaktivem Inhalt als Hauptteil; Websites oder Anwendungssysteme mit hohem Lastdruck und ausreichendem Budget; >Webservergruppe:

Webdienste haben keine Master-Slave-Beziehung und sind parallele redundante Designs

Der Lastausgleich wird durch Front-End-Lastausgleichsgeräte oder Nginx-Reverse-Proxy erreicht;

Teilen Sie dedizierte Dateiserver/Videoserver auf, um leichte/schwere Busse effektiv zu trennen

Jeder Webserver kann über DEC eine Verbindung zu allen Datenbanken herstellen und diese in Master und Slave aufteilen.

Datenbankservergruppe:

Hält relativ ausgeglichenen Datenbank-Lese- und Schreibdruck bereit

Erreicht die Datensynchronisierung mehrerer Datenbanken durch die Zuordnung physischer Datenbankdateien.

Gemeinsame Festplatte/Festplatten-Array

Wird zum einheitlichen Lesen und Schreiben von physischen Datendateien verwendet

Speicherlager für große Anhänge

Über seine eigene physische Datei Festplattenbalance und Redundanz zur Gewährleistung der E/A-Effizienz und Datensicherheit des Gesamtsystems;

Lösungsmerkmale:

Angemessene Verteilung des Webdrucks durch Front-End-Lastausgleich; Durch Datei/Der Videoserver ist vom regulären Webserver getrennt, um die leichten und schweren Datenströme angemessen zu verteilen.

Verteilen Sie den Datenbank-E/A-Druck angemessen über die Datenbankservergruppe Stellt normalerweise nur eine Verbindung zu einem Datenbankserver her. Durch die Heartbeat-Erkennung kann in sehr kurzer Zeit automatisch auf einen redundanten Datenbankserver umgeschaltet werden.

Die Einführung von Festplatten-Arrays verbessert nicht nur die E/A-Effizienz des Systems erheblich erhöht die Datensicherheit erheblich.

Webserver:

Ein großer Teil der Ressourcennutzung des Webservers entsteht durch die Verarbeitung von Webanfragen. Dies ist der Druck, der von Apache erzeugt wird Verbindungen, Nginx ist Apache Eine gute Alternative zu Servern. Nginx („Engine x“) ist ein in Russland geschriebener Hochleistungs-HTTP- und Reverse-Proxy-Server. In China verwenden viele Websites und Kanäle wie Sina, Sohu Pass, NetEase News, NetEase Blog, Kingsoft Xiaoyao.com, Kingsoft iPowerWord, Xiaonei.com, YUPOO Photo Album, Douban, Xunlei Kankan usw. Nginx-Server.

Vorteile von Nginx:

Hohe gleichzeitige Verbindung: Der offizielle Test kann 50.000 gleichzeitige Verbindungen unterstützen, und in der tatsächlichen Produktionsumgebung erreicht die Anzahl gleichzeitiger Verbindungen 20.000 bis 30.000.

Geringer Speicherverbrauch: Unter 30.000 gleichzeitigen Verbindungen verbrauchen die 10 gestarteten Nginx-Prozesse nur 150 MB Speicher (15 MB * 10 = 150 MB).

Eingebaute Health-Check-Funktion: Wenn ein Webserver im Backend von Nginx Proxy ausfällt, ist der Front-End-Zugriff nicht beeinträchtigt.

Strategie: Im Vergleich zum alten Apache wählen wir Lighttpd und Nginx, Webserver mit geringerem Ressourcenverbrauch und höherer Lastkapazität.

MySQL:

Die MySQL-Optimierung selbst ist eine sehr komplizierte Aufgabe, da sie letztendlich ein gutes Verständnis der Systemoptimierung erfordert. Jeder weiß, dass die Datenbankarbeit eine große Anzahl kurzfristiger Abfragen, Lese- und Schreibvorgänge umfasst. Zusätzlich zu Softwareentwicklungstechniken wie der Indizierung und der Verbesserung der Abfrageeffizienz, auf die bei der Programmentwicklung geachtet werden muss, sind die Hauptauswirkungen auf die MySQL-Ausführungseffizienz Aus Sicht der Hardware kommt es auf die Festplattensuche, die Festplatten-IO-Level, die CPU-Zyklen und die Speicherbandbreite an.

Führen Sie eine MySQL-Optimierung entsprechend den Hardware- und Softwarebedingungen auf dem Server durch. Der Kern der MySQL-Optimierung liegt in der Zuweisung von Systemressourcen. Dies bedeutet nicht, dass MySQL unbegrenzt mehr Ressourcen zugewiesen werden muss. In der MySQL-Konfigurationsdatei führen wir einige der bemerkenswertesten Parameter ein:

Ändern Sie die Indexpufferlänge (key_buffer)

Ändern Sie die Tabellenlänge (read_buffer_size)

Einstellungen öffnen Die maximale Anzahl von Tabellen (table_cache)

Legen Sie ein Zeitlimit (long_query_time) für langsame lange Abfragen fest

Wenn die Bedingungen es zulassen, ist es im Allgemeinen am besten, den MySQL-Server im Linux-Betriebssystem zu installieren. und Nicht in FreeBSD installiert.

Strategie: Die MySQL-Optimierung erfordert die Formulierung verschiedener Optimierungspläne basierend auf den Datenbank-Lese- und Schreibeigenschaften des Geschäftssystems und der Server-Hardwarekonfiguration, und die Master-Slave-Struktur von MySQL kann nach Bedarf bereitgestellt werden.

PHP:


1. Laden Sie so wenige Module wie möglich.

2. Wenn es sich um eine Windows-Plattform handelt, versuchen Sie, IIS oder Nginx zu verwenden Verwenden Sie Apache;

3. Installieren Sie den Beschleuniger (beide verbessern die Ausführungsgeschwindigkeit von PHP-Code, indem Sie vorkompilierte PHP-Code-Ergebnisse und Datenbankergebnisse zwischenspeichern)

eAccelerator, eAccelerator ist ein kostenloser und Open-Source-PHP-Beschleuniger, optimiert und dynamisch Inhalts-Caching verbessert die Caching-Leistung von PHP-Skripten, wodurch der Server-Overhead von PHP-Skripten im kompilierten Zustand fast vollständig eliminiert wird.

Apc: Alternative PHP Cache (APC) ist ein kostenloser und öffentlich optimierter Code-Cache für PHP. Es wird verwendet, um ein kostenloses, offenes und robustes Framework zum Zwischenspeichern und Optimieren von PHP-Zwischencode bereitzustellen.


Memcache: Memcache ist ein leistungsstarkes, verteiltes Speicherobjekt-Caching-System, das von Danga Interactive entwickelt wurde und dazu dient, die Datenbanklast zu reduzieren und die Zugriffsgeschwindigkeit in dynamischen Anwendungen zu verbessern. Der Hauptmechanismus besteht darin, eine einheitliche riesige Hash-Tabelle im Speicher zu verwalten, mit der Daten in verschiedenen Formaten gespeichert werden können, einschließlich Bildern, Videos, Dateien und Datenbanksuchergebnissen usw.

Xcache: von Chinesen entwickelt people Cache,

Strategie: Beschleuniger für PHP installieren.

Proxyserver (Cache-Server):

Squid Cache (als Squid bezeichnet) ist ein beliebter Proxyserver und Web-Caching-Server für freie Software (GNU General Public License). Squid hat ein breites Einsatzspektrum, von der Funktion als Front-End-Cache-Server für Webserver zur Erhöhung der Geschwindigkeit von Webservern durch Zwischenspeichern relevanter Anfragen bis hin zum Zwischenspeichern des World Wide Web, des Domain Name Systems und anderer Websuchen für eine Gruppe von Personen zur gemeinsamen Nutzung von Netzwerkressourcen, zur Unterstützung des Netzwerks durch Filterung des Datenverkehrs und zum LAN über ein Proxy-Netzwerk. Squid ist in erster Linie für die Ausführung auf Unix-ähnlichen Systemen konzipiert.

Strategie: Die Installation des Squid-Reverse-Proxy-Servers kann die Servereffizienz erheblich verbessern.

Stresstests: Stresstests sind ein grundlegendes Qualitätssicherungsverhalten, das Teil jedes wichtigen Softwaretests ist. Die Grundidee von Stresstests ist einfach: Anstatt manuelle oder automatisierte Tests unter normalen Bedingungen durchzuführen, führen Sie Tests unter Bedingungen durch, bei denen die Anzahl der Computer gering oder die Systemressourcen knapp sind. Zu den Ressourcen, die typischerweise einem Stresstest unterzogen werden, gehören der interne Speicher, die CPU-Verfügbarkeit, der Festplattenspeicher und die Netzwerkbandbreite. Parallelität wird im Allgemeinen für Stresstests verwendet.
Stresstest-Tools: Webbench, ApacheBench usw.

Schwachstellentest: Zu den Schwachstellen in unserem System gehören hauptsächlich: SQL-Injection-Schwachstellen, XSS-Cross-Site-Scripting-Angriffe usw. Zur Sicherheit gehört auch Systemsoftware, wie z. B. Schwachstellen im Betriebssystem, Schwachstellen in MySQL, Apache usw., die im Allgemeinen durch Upgrades behoben werden können.

Tool zum Testen von Sicherheitslücken: Acunetix Web Vulnerability Scanner

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