Wenn Sie erwarten, dass Ihre Site die Möglichkeiten eines einzelnen Servers übersteigt, müssen Sie sorgfältig planen. Design so, dass Folgendes möglich ist: -
Abgesehen davon können Sie nur Ihre Website testen, herausfinden, wo die Engpässe sind und versuchen, sie zu entwerfen.
Sehen Sie sich dieses Gespräch von Rasmus Lerdorf (PHP-Entwickler) an
Besonders Seite 8 und darüber hinaus.
Vielleicht möchten Sie sich diese Ressource ansehen - highscalability.com .
Einige Leute haben Werkzeuge zur Identifizierung von Engpässen erwähnt, und das ist natürlich notwendig. Sie können keine produktive Zeit damit verbringen, etwas zu beschleunigen, ohne zu wissen, wo es langsam ist. Aber die andere Sache, die Sie wissen müssen, ist, wo Ihre Zielskalierbarkeit liegt. Ist es ein gutes Preis-Leistungs-Verhältnis, ein paar Monate damit zu verbringen, dass Ihre Website auf die gleiche Anzahl von Nutzern skaliert wird wie Twitter, wenn sie von drei Personen im HR-Bereich genutzt wird? Haben Sie eine bekannte Rate von Transaktionen oder Antwort-Latenz oder Anzahl der Benutzer in den Anforderungen des Produkts? Wenn ja, richten Sie diese Zahlen mit Ihrer Optimierungsstrategie aus. Wenn nicht, finde diese heraus , bevor du der Performance-Ratte nach unten jagst.
Sehr ähnlich: Wie funktioniert PHP richtig?
Skalierbarkeit ist kein kleines Thema und sicherlich mehr Material, als vernünftigerweise in einer einzigen Frage abgedeckt werden kann.
Bei einigen Arten von Anwendungen beispielsweise können Joins (in SQL) nicht skaliert werden, was alle Arten von Caching- und Shard-Strategien hervorbringt.
Beanstalk ist ein weiteres Skalierbarkeits- und Performance-Tool in leistungsstarken PHP-Sites. Wie Memcache (andere Art).
Das größte Problem für die Skalierbarkeit sind normalerweise gemeinsam genutzte Ressourcen wie DBMS. Das Problem tritt auf, weil DBMS normalerweise keine Möglichkeit haben, Konsistenzgarantien zu lockern.
Wenn Sie die Skalierbarkeit erhöhen möchten, wenn Sie etwas wie MySQL verwenden, müssen Sie Ihr Schemadesign ändern, um die Konsistenz zu verbessern.
Sie können z. B. Ihr Datenbankschema trennen, um Ihr normalisiertes Datenmodell für Schreibvorgänge und einen replizierten schreibgeschützten denormierten Teil für die 90% der Lesevorgänge zu erhalten. Die schreibgeschützten Daten können auf mehrere Server verteilt werden.
Eine weitere Möglichkeit, die Skalierbarkeit einer Datenbank zu erhöhen, besteht darin, die Daten z. Trennen Sie die Daten für jede Abteilung in eine Datenbank und aggregieren Sie sie entweder im ORM oder im DBMS.
In der Reihenfolge der Wichtigkeit:
Wenn Sie PHP verwenden, verwenden Sie einen Opcode-Cache wie APC . (Dies ist wichtig genug, um in der nächsten PHP-Generation integriert zu sein.)
Verwenden Sie YSlow oder Google Page Speed , um Engpässe zu identifizieren. (Dadurch werden strukturelle Probleme mit Ihrer Website aufgedeckt, die sich sowohl auf die Client- als auch auf die Serverleistung auswirken.)
Stellen Sie sicher, dass Ihr Webserver eine gültige Expires-Kopfzeile für statischen Inhalt (Bilder, Javascript, CSS) sendet, sodass der Browser sie ordnungsgemäß zwischenspeichern kann. (YSlow wird Sie auch davor warnen.)
Verwenden Sie einen HTTP-Beschleuniger wie Varnish . ( Dieses Bild sagt alles - und sie hatten bereits einen HTTP-Beschleuniger an Ort und Stelle.)
Entwickeln Sie Ihre Website mit festen OOP-Techniken. Sie brauchen Ihre Site, um modular zu sein, da nicht alle Leistungsengpässe zu Beginn offensichtlich sind. Seien Sie bereit, Teile Ihrer Website umzuformen, wenn der Verkehr zunimmt. Der erste Satz, den ich geschrieben habe, wird dir helfen, es einfacher und sicherer zu machen. Verwenden Sie außerdem eine testgetriebene Entwicklung, da Refaktor neue Fehler bedeutet, und gute TDD sind gut, um sie zu erfassen, bevor sie in Produktion gehen.
Trennen Sie so viel wie möglichen Client-seitigen Code vom serverseitigen Code, da diese wahrscheinlich von verschiedenen Servern bereitgestellt werden, wenn Ihr Website-Datenverkehr dies rechtfertigt.
Lesen Sie Artikel (lesen Sie zum Beispiel die YSlow-Tipps).
GL
Sehen Sie sich zusätzlich zu den anderen Vorschlägen die Aufteilung Ihrer Websites in Ebenen an, wie in Multi-Tier-Architektur . Wenn Sie das richtig gemacht haben, können Sie dann einen Server pro Tier verwenden.
Tags und Links php mysql scalability