Allgemeine API Leistung Techniken


  Share  
|

Web site sind entworfen, von den Einzelpersonen erreicht zu werden und als solche neigen, auf die verhältnismäßig langsame Geschwindigkeit des Benutzers zu bauen, um alle mögliche Leistung Engpässe zu vermeiden. Diese Technik fällt miserabel mit APIs aus, weil sie durch andere Bediener mit den Schnellanschlüssen verbraucht werden werden, häufig entworfen worden nur mit ihrer eigenen Leistung im Verstand (sie cachieren nicht Ihre Antworten für Sie und bilden anstatt genau die gleiche Antragzeit und Zeit wieder). Das Entwerfen Ihrer API mit Leistung im Verstand kann helfen, den Bediener schnell zu halten, selbst wenn viele Anträge gebildet werden, und wird helfen, sicherzugehen, daß zukünftiges Kleinteilaufsteigen ihre gewünschten Aufgaben vollenden kann.

Anmerkung

Viele Web site sind entweder schlecht entworfen oder scheinen, jede mögliche Art des Designs zu ermangeln whatsoever. Ich habe einen Aufstellungsort, der 10 Datenbankfragen erforderte, die Seite zu beginnen, dann eine zusätzliche Frage für jedes Einzelteil in ihrer Datenbank gesehen. Mit mehr als 40 Einzelteilen in ihrer Datenbank, gab es ungefähr 50 Fragen, die gebildet wurden, jedesmal wenn die Indexseite lud. Diese Technik fiel schrecklich für eine Web site aus, die verhältnismäßig wenige Erfolge empfängt. Sie würde nicht Minuten gedauert haben, wenn sie automatisch verbraucht wurde, und ich zweifele, daß sie mehr als einige Sekunden unter dem Slashdot Effekt gedauert haben würde. Alle diese Datenbankfragen waren außerdem im Allgemeinen sinnlos; der Warenbestand des Unternehmens änderte langsam, also würde eine statische Seite, die einmal pro Woche vom gleichen Index erzeugt wurde, ebensogut für den Endbenutzer gearbeitet haben, aber würde einige Aufträge der Größe schneller gewesen sein.

Cachieren Von von Daten

Häufig Web site und APIs Antragdaten von der Datenbank jede Zeit ein Antrag wird gebildet, obwohl die Daten verwendeten, die Warteänderungen selten zu bevölkern. Dieses, kombiniert mit den Datenbanknormalisierungtechniken unterrichtete seit dem Anfang der Zeit, bedeutet, daß jeder jener Anträge wahrscheinlich ist, mindestens eine Frage die verbindenen Resultate von den mehrfachen Tabellen bildend, vielleicht Mehrfachverbindungsstelle Fragen. Wenn Ihre Daten nicht die häufig ändern, erwägen Sie, die Antwort zu cachieren.

Z.B. nehmen Sie die fiktiven des Bobs videoweb site. Jedesmal sieht jemand entweder ausführliche Informationen über einen Film auf seiner Web site an oder bittet um sie durch seine API, sein Bediener laufen läßt drei Fragen: eine Frage, die des vollen den Titel Films, die Plotlinie und das Veranschlagen findet, eine andere Frage, die eine verbindende Frage laufen läßt, um ausführliche Informationen über jedes der Formmitglieder zurückzuholen und eine abschließende Frage, zum des Mietstatus des Filmes festzustellen. Dieses ist eine gigantische Vergeudung der Betriebsmittel; sobald ein Film freigegeben wird, ist die einzige Antwort, die ändert, sein Mietstatus. Jedoch wird jede Zeit, welche die Seite, die Daten geladen wird, wieder von der Datenbank verlangt. Sie würde weit mehr Richtung entweder zum Gebrauch eine statische Seite für die freigegebenen Filme (Mietstatus dynamisch bevölkernd) bilden, oder wenigstens cachieren Sie Informationen des ganzes die Filmes und holen Sie den Mietstatus dynamisch zurück.

Merken Sie

Sie haben vermutlich beachtet, daß, weil der Pufferspeicher wahrscheinlich oben in einer Datenbank beendet, ich wirklich nur den Frage Zählimpuls von 3 bis 2 verringert habe. Er sieht nicht wie eine drastische Verbesserung aus, aber er ist. Die verbindende Frage, die herauf ausführliche Informationen nach den Formmitgliedern schaut, geht ein Auftrag der Größe langsamer, als ein Nachschlagen, das auf einem Primärschlüssel, so dort basiert, eine grosse Einsparung dort ist. Sie können die Filmdaten in einer Form nah an seiner abschließenden Netzform auch cachieren und auf der ganzer Verarbeitung speichern, die im Allgemeinen benötigt wird, um von Datenbank zu Webseite zu gehen. Sie benötigen zwei Pufferspeicher in diesem Beispiel, einen für die Web site und einen für die API.

Intelligenterer Gebrauch von Datenbank-Fragen

Obgleich, Daten ist zu cachieren eine ausgezeichnete Methode des Verringerns der Zahl Fragen, die Sie verwenden, es ist nicht immer angebracht. Stellen Sie einfach sicher, daß Sie die die meisten aus jeder Frage heraus erhalten, die Sie laufen lassen. Viele doppelte Daten der Zeiten werden bei der Behandlung eines einzelnen Antrags verlangt; dieses geschieht häufig, wenn unterschiedliche Funktionen die gleichen Daten benötigen, aber sie rufen sich nicht an, also teilen sie nicht ihre Resultate. Betrachten Sie irgendein, das Ihren Index überarbeitet, um alle erforderlichen Daten selbst zu erhalten, überschreiten Sie dann weg von den Daten zu den Funktionen, die ihn erfordern, oder zum Verursachen einer Abstraktion Schicht mit einem Gegenstand, der um Einholen von von Informationen von der Datenbank kümmert, nur wenn erforderlich.

Sobald Sie Ihre Datenbankfragen zu ihrem vollsten verwenden, fangen Sie Arbeit über das Verbessern der Geschwindigkeit der Fragen selbst an. Beginnen Sie nie Fragen mit AUSERWÄHLTEM * — vom Antrag nur fängt Sie wirklich Notwendigkeit auf. Überprüfen Sie auch Ihre Fragen und Ihre Datenbank. Versuchen Sie, sicherzugehen, daß Sie gründen Ihre Vorwähler sind an entweder Primärschlüssel oder mindestens registriert durch den Datenbankbediener auffängt.

Wartecachieren

Betrachten Sie einen Fall von einem videospeicher API, der Benutzern erlaubt, um Informationen über Filme zu bitten. Mit einer kleinen Designänderung (beweglicher Mietstatus zu seiner eigenen Frage, anstatt zum Versehen sie mit jedem Antrag), stellen sich viele neue cachierende Gelegenheiten dar. Weil die Antwort nicht ändert unabhängig davon, wem um sie bittet, kann ein proxy server die benutzte Bedienerseite sein, zum der Antwort anzufassen (dieses ist mit REST APIs als mit SEIFE viel einfacher). Die Einstellung der passenden Überschriften für das Pufferspeicherleben (24 Stunden für Filme und 30 Minuten für Mietstatus) läßt die API weg von die meisten seiner Arbeit zum proxy server zucken.

PHP Gaspedale

Es gibt einige vorhandene PHP Gaspedale, die einen drastischen Effekt auf der Geschwindigkeit Ihrer Indexe haben können. Jedesmal wenn ein PHP Index durchgeführt wird, wird er in Bytecode durch PHPs scripting Maschine analysiert und kompiliert. Weil, im Allgemeinen sprechend, der Index nicht zwischen Durchführungen geändert hat, ist dieses eine sehr große Vergeudung der Bearbeitungszeit. PHP Gaspedale cachieren die Bytecodeversion der Indexe und führen daß Kopie durch (Sein aufmerksam von irgendwelchen ändert zum ursprünglichen Index). Dieses speichert die Satzgliederung und Kompilation Schritte jede Zeit der Index wird durchgeführt, weil Ihre API mit großer Frequenz benannt wird, und selten dieses können sein bedeutende Sparungen änderte.

Es ist wichtig, festzustellen, wie PHP Gaspedale arbeiten, um zu vermeiden, übermäßige Erwartungen für ihre Resultate zu haben. Betrachten Satzgliederung und Umwandlungszeit für Index als örtlich festgelegt Kosten — , jedesmal wenn der Index, unabhängig davon die Geschwindigkeit anderer Betriebsmittel (Datenbanken, z.B.) erreicht wird oder wieviel Verarbeitung des fertigen Indexes erfordert, diese Kosten zahlend sein müssen. Das Byte cachierend, kodieren Sie Kopie des Indexes speichert nur auf diesen Kosten; es beschleunigt nicht Ihre Datenbankfragen oder andere CPU-intensive Prozesse.

Eins der überwiegendsten PHP Gaspedale ist von Zend, dutifully betitelte das Zend PHP [ 4/5 ] Gaspedal. Ich fand es einfach anzubringen und war mit seinen Resultaten verhältnismäßig erfreut. , verbessernd zu PHP5 kurz nach seiner Freigabe, war ich nicht imstande, andere Gaspedale zu prüfen, die haben, seit geworden vorhanden. Eins der anderen Gaspedale, die ich handhatte, sigfault'd zu versuchen der benennende Apache Prozeß auf einer Vielzahl meiner Indexe, ist so Sie Test sicher, welches Gaspedal Sie weitgehend benutzen, bevor Sie es auf das Produktion System setzen.

dieses ist ein Artikel, der von Emanuela Hedrick hinzugefügt wird


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions