La mancanza di "parità di bit" tra il server Web e il server DB può influire sulle prestazioni?


10

Oggi ho avuto un incontro con un fornitore di software sulla loro infrastruttura consigliata per la distribuzione di una particolare applicazione. L'applicazione richiede due server: un server app per le pagine Web del server (.NET, Windows) e un database (SQL Server). Il fornitore ha affermato che questi due server dovevano avere "bit parità". Ciò significava che se l'app server era a 32 bit, SQL Server dovrebbe essere a 32 bit o se l'app è a 64 bit, SQL Server a 64 bit. In caso contrario, le prestazioni saranno influenzate negativamente.

Mi sembra ridicolo. I server sono indipendenti e comunicano solo su una rete. I protocolli di rete non hanno nulla a che fare con il "bit-ness" del processore su entrambi i server.

Ho sbagliato? C'è un motivo per cui una mancata corrispondenza potrebbe effettivamente influire negativamente sulle prestazioni?

NOTA: so che alcune app potrebbero funzionare più velocemente o più lentamente a 32 bit contro 64 bit. Ma il fornitore stava dicendo che la mancata corrispondenza tra il server Web e il server DB causa un problema. Questa è la frase che sto interrogando.


A parità di altre condizioni, pensa che un 32 e un 32 funzionino più velocemente di un 32 e un 64?
JeffO,

Questo è ciò che il venditore stava rivendicando, sì. Le prestazioni di 32,32 o 64,64 sono superiori a 32,64 o 64,32.
RationalGeek,

Fagli installare due varianti del sistema. Quindi stress test. Acquista la versione più economica che soddisfa le tue esigenze.
Martin York,

Risposte:


10

Suppongo sia possibile che siano a conoscenza di un'interazione specifica tra quei due prodotti che causa un problema in caso di mancata corrispondenza (ma ne dubito davvero - metterei circa 10: 1 probabilità che il venditore ne sia pieno).

Potresti voler cercare su serverfault domande sugli effetti di disadattamenti del genere, ma dubito che troverai molto, perché dubito che ci sia un vero problema da trovare ...


1
+1, penso che tu abbia ragione. Potrebbero esserci delle considerazioni sulle prestazioni su ogni singolo box, ma sulla rete è irrilevante se qualcosa è 32 bit o 64 bit.
Moo-Juice,

1
È possibile? Non riesco a pensare a uno scenario in cui sia una possibilità fisica. Mi sto anche rivolgendo all'opzione "fornitore pieno". :-)
RationalGeek,

@jkolhepp: posso pensare ad alcuni modi in cui sarebbe possibile , ma dubito che uno qualsiasi di essi si applichi. Solo per una possibilità distante, considera un server che invia i dati più velocemente di quanto il ricevitore possa elaborarli, quindi i dati vengono eliminati e devono essere ritrasmessi. È davvero improbabile, ma appena immaginabile.
Jerry Coffin,

Ciò sarebbe probabilmente solo se stessero usando protocolli di rete di basso livello che consentivano quel tipo di cose. L'uso del "normale" TCP / IP o altro impedisce questi tipi di problemi. E la velocità di invio rispetto alla velocità di ricezione non ha nulla a che fare con il "bit-ness" del server.
RationalGeek,

3
Ho visto accadere problemi a causa di problemi del venditore, come esporre un campo in un messaggio di rete che varia di dimensioni a seconda del "testimone" dell'applicazione senza fornire un modo per scoprire quali dimensioni del campo dovresti inviare / aspettarti.
Jeffrey Hantin, il

6

Chiedi una prova. Ha fatto una dichiarazione discutibile, ti sta vendendo (male) cose, o dovrebbe sostenerlo o ritrattarlo. Salva te stesso le gambe.


Questa è una buona idea. Sto pensando di farlo. Il punto di questa domanda era assicurarsi che non fossi pazzo prima di farlo. :-)
RationalGeek,

4

La differenza tra coppie di server a 32 e 64 bit non farà probabilmente alcuna differenza. Ciò che farà la differenza è l' endianità di vari processi, che il venditore potrebbe aver confuso come "bit parità".


2
Anche questo dipende dal protocollo (e ammetto di non avere idea di come funzionano quelli DB). Se il server / client dichiara la sua endianness e l'altro si adatta ad esso, allora hai assolutamente ragione; ma tradizionalmente i protocolli di rete sono stati big-endian, e in tali circostanze due box little-endian dovrebbero entrambi convertirsi, mettendoli in uno svantaggio più di una coppia LE / BE.
IJW

3

In breve, direi che nessuna bit-parità non ha importanza. SQL Server non ha un protocollo separato a 64 e 32 bit.

Tuttavia, consiglierei di passare i server a 64 bit a prescindere. SQL Server arriva solo a 64 bit e credo che Windows Server stia andando anche in quella direzione.


Sono d'accordo che 64 bit è il futuro. Ma non era questo il punto della mia domanda. Sto mettendo in dubbio i venditori supponendo che la parità dei bit sia un requisito valido che ci stanno ponendo. Abbiamo server farm esistenti che vogliamo utilizzare che non sono in parità.
RationalGeek,

2

Bene, se detto venditore si riferisse strettamente alle prestazioni, potrebbe esserci del vero. Non c'è certamente incompatibilità tra i sistemi x86 e amd64, perché il protocollo di rete dovrebbe nasconderlo.

Tuttavia, la rappresentazione interna dei valori deve essere trasformata durante il trasferimento. Quindi una pack/unpackparte di esso ne farà parte. Suppongo tuttavia che la rete protcol non definisca due varianti e sia ottimizzata per la rete a 64 bit o per i valori a 32 bit. Quindi potrebbe esserci una conversione, e potrebbe anche essere misurabile. Ma è probabilmente morto non significativo.


1

Tecnicamente la connessione al server SQL di solito è un canale binario (ora non conosco questo sistema in modo specifico potrebbe essere un canale basato su testo) quindi ci sarà una conversione alla fine della destinazione quando verranno recuperati i risultati di una query.

Questo porta a due domande:

  1. Questa conversione viene eseguita solo su 32x64
    Potrebbe essere che il canale binario sia indipendente dal sistema (in modo che possa supportare 32x64 e 32x32 e 64x64) e la conversione avverrà comunque su un sistema 32x32.

  2. Qual è il costo della conversione.
    Non riesco a immaginare che questo ti influenzerà. Il costo della conversione da binario a binario è piccolo e fisso.

C'è un'altra domanda che devi porre:

Il costo di avere la parità dei bit è più alto? In caso contrario, perché pasticciare con i consulenti. Se esiste una differenza di costo significativa, qual è la vera diminuzione delle prestazioni e, soprattutto , la riduzione delle prestazioni riduce le prestazioni del server Web al di sotto della soglia accettata.

cioè se il tuo server ha bisogno di server 200 pagine al secondo. Un sistema 32x32 può consegnare 202 un 32x64 può consegnare 200 e un 64x64 può consegnare 210. Quindi in questa situazione non importa quale sistema hai (tutti soddisfano la barra), ma è il costo aggiuntivo che vale le 10 pagine extra al secondo .

Alla fine, anche se c'è un piccolo costo aggiuntivo (che dubito). Questo costo è significativo o misurabile rispetto agli altri costi accumulati dal WebServer. cioè Guardando ad un esempio estremo: se il costo di costruzione di una pagina è 100ms di cui 15ms è il WebServer. Se la versione di parità non bit è più costosa del 33% (20 ms), questo davanzale aumenta solo il costo di costruzione di una pagina a 105 ms con un aumento solo del 5%.


Questo è interessante Martin. Esiste una pagina di riferimento per questa conversione del canale binario?
RationalGeek,

@jkohlhepp: dovrai scoprire i dettagli dell'implementazione su "SQL Server". Apparentemente usa il protocollo proprietario Tabular Data Stream Non ne so nulla ma secondo questa pagina MS ha pubblicato il protocollo.
Martin York,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.