2012-09-16 10 views
5

Lighttpd, nginx e altri utilizzano una gamma di tecniche per fornire le massime prestazioni applicative come AIO, sendfile, MMIO, cache e epoll e strutture di dati senza blocchi.Tecniche per migliorare il tasso di transazione

Il mio collega e io abbiamo scritto un piccolo server di applicazioni che utilizza molte di queste tecniche e può anche contenere file statici. Quindi lo abbiamo testato con Apache Bench e confrontato il nostro con lighttpd e nginx e abbiamo almeno trovato le prestazioni per il contenuto statico per file da 100 byte a 1K.

Tuttavia, quando confrontiamo la velocità di transazione sugli stessi file statici con quella di G-WAN, G-WAN è miglia avanti.

So che questa domanda potrebbe essere un po 'soggettiva, ma quali tecniche oltre a quelle ovvie che ho menzionato potrebbero essere utilizzate da Gauthier in GWAN per consentirgli di ottenere prestazioni così sbalorditive?

risposta

4

Seguendo il server G-WAN da anni, ho letto i (molti) discorsi che riguardano questa domanda sul vecchio forum G-WAN.

Da quello che posso ricordare, ciò che è stato più volte affrontato fosse il programma:

  1. architettura (confronti specifici sono stati fatti con nginx, lighty e cherokee)
  2. implementazione (come nel complesso ramificazione, richiedere l'analisi e la risposta edificio sono state fatte)
  3. magra percorso comune (il percorso seguito da tutti i tipi di richieste: dinamica, statica, gestori)

Pierre spesso mentionn ed altri server per spiegare quello che nella loro architettura specifica e l'implementazione li stava rallentando.

Con il passare del tempo, poiché G-WAN sembra impilare sempre più funzionalità (supporto per script C#, un proxy inverso e un bilanciamento del carico sono previsti con la prossima versione), sembra che quei 3 punti sopra siano più e più importante.

Questo è probabilmente il motivo per cui ogni nuova versione di G-WAN sembra essere pronta a essere più veloce della precedente: più lavoro fai, più grasso in più deve essere eliminato perché il suo costo aumenta. E come per una macchina da corsa o un aereo questo è un processo incrementale, uno che richiede più dell'altro.

Se stai cercando il "segreto" della velocità di G-WAN, allora immagino che questo sia il punto chiave. Ma se vuoi maggiori dettagli, dovresti piuttosto parlare direttamente all'autore del G-WAN.

+0

Il design è il più ovvio. Tuttavia, i test successivi mostrano il carico della mia CPU intorno al 30%. Il collo di bottiglia sembra essere la scheda di rete o il kernel. GWAN sta ancora superando quello che abbiamo.Esistono alcuni trucchi di inizializzazione speciali per aumentare i pacchetti/s attraverso la scheda di rete? – Matt

+0

Se il collo di bottiglia era il kernel, G-WAN non poteva essere più veloce di altri. Il carico della CPU di G-WAN è inferiore perché il suo codice * modalità utente * è (molto) più veloce. Il servlet ** hello.c ** non tocca il disco in modo che il kernel non sia coinvolto nel caricare un file - e anche qui G-WAN è più veloce di un modulo nginx (che, a differenza dei servlet G-WAN, NON viene caricato dinamicamente quindi dovrebbe avere un vantaggio). Codice più veloce, più snello e migliore architettura del programma. Questo è tutto ciò che riguarda G-WAN. – Gil

1

Controlla la cronologia di G-WAN. Un aggiornamento dell'8 agosto 2011 potrebbe darti un'idea di ciò che sta utilizzando.

G-WAN Timeline

Pierre dicono che G-WAN usa è aspettare senza deposito di valori-chiave molto sulle funzioni fondamentali di G-WAN. Il che dà più velocità poiché non vengono utilizzati i blocchi.

Egli utilizza anche una tecnica ispirata alla Lorenz Waterwheel per gestire i fili. Non sono sicuro di come funzioni, ma ha detto che consente a G-WAN di correre più veloce in ogni caso possibile.

+0

L'archivio KV viene utilizzato per elenchi come gli host virtuali e i servlet in più lingue, mentre Lorenz Waterwheel rappresenta l'organizzazione dell'architettura per gestire i thread di lavoro. Il punto è che Waterwheel è * dinamicamente * regolato con il carico in modo da offrire la migliore reattività possibile nonostante il cambiamento delle condizioni di carico. – Gil

+0

Tranne che per la pubblicazione di pagine statiche non è necessario toccare l'archivio chiavi/valori. A meno che non lo usi come cache Inoltre, dubito che sia più veloce di mdb. In realtà, se si guarda a ciò che è un Lorenz Waterwheel, significa essenzialmente casuale. La mia ipotesi è che stia facendo un po 'di gergo che suona bene ma non è quello che sta effettivamente facendo. – Matt

+0

Puoi provare che mdb è più veloce di G-WAN KV store? Lorenz Waterwheel non è solo casuale. Un altro concetto è la sensibilità alle condizioni iniziali. Questo può essere applicato ai nuclei come condizione iniziale. L'algoritmo funzionerà in modo completamente diverso quando si usano 1,2,4 ... core. La mia ipotesi è che non sappiamo come lo fa davvero, ecco perché sembra privo di significato. –

Problemi correlati