26 Punkte von yunyun0505 2022-09-15 | 5 Kommentare | Auf WhatsApp teilen

nginx hatte Einschränkungen

  • Für jede Anfrage wird nur ein einzelner Worker verwendet, wodurch eine unausgewogene Nutzung der CPU-Kerne entsteht
  • Da pro Worker ein Connection Pool existiert, ist die Wiederverwendungsrate von TCP- und TLS-Verbindungen schlecht -> TTFB steigt
  • Außerdem wurden die für den Betrieb von nginx benötigten Funktionen intern selbst implementiert, aber das in C entworfene nginx ist nicht memory-safe, sodass selbst erfahrenen Ingenieur:innen Fehler unterliefen

Pingora

  • Cloudflare erhält auch viele Anfragen, die nicht dem RFC-Standard entsprechen. Drittanbieter-Bibliotheken (hyper) sind jedoch strikt RFC-konform implementiert, sodass für Erweiterungen zusätzlicher Aufwand nötig gewesen wäre, weshalb man es selbst aufgebaut hat
  • Rust wurde gewählt, weil es das, was C kann, ohne Performance-Einbußen auf memory-safe Weise ersetzen kann
  • Um den Connection Pool leicht gemeinsam nutzen zu können, wurde ein Scheduling-System nach dem Work-Stealing-Prinzip eingeführt, wodurch die Wiederverwendungsrate stieg. Im Vergleich zu früher werden nur noch etwa ein Drittel so viele Verbindungen pro Sekunde aufgebaut
  • Im Vergleich zu früher werden 70 % weniger CPU und 67 % weniger Speicher verwendet
  • Soll später als Open Source veröffentlicht werden

5 Kommentare

 
functor 2022-09-27

70 % CPU und 67 % Arbeitsspeicher sind wirklich erstaunlich..

 
ifmkl 2022-09-16

Krass, nginx habe ich auch wirklich gern benutzt — wenn das als Open Source erscheint, würde ich es sofort ausprobieren.

 
forteleaf 2022-09-16

Selbst wenn man Rust lernt, gibt es kaum Stellen, wo man damit einen Job findet.

 
jungmin1237 2022-09-15

Rust also, das gefällt mir.

 
jjpark78 2022-09-15

Gerade in der Systemprogrammierung wird Rust zunehmend nahezu konkurrenzlos..