Dzisiaj spotkałem się z dostawcą oprogramowania na temat ich zalecanej infrastruktury do wdrażania konkretnej aplikacji. Aplikacja potrzebuje dwóch serwerów: serwera aplikacji dla stron internetowych serwera (.NET, Windows) oraz bazy danych (SQL Server). Sprzedawca twierdził, że te dwa serwery musiały mieć „bit parzystości”. Rozumieli przez to, że jeśli serwer aplikacji był 32-bitowy, SQL Server powinien być 32-bitowy lub jeśli aplikacja ma 64-bitowy, to SQL Server jest 64-bitowy. W przeciwnym razie pogorszy się wydajność.
To wydaje mi się śmieszne. Serwery są niezależne i komunikują się tylko przez sieć. Protokoły sieciowe nie mają nic wspólnego z „bitowością” procesora na obu serwerach.
Czy się mylę? Czy istnieje powód, dla którego niedopasowanie może negatywnie wpłynąć na wydajność?
UWAGA: Wiem, że niektóre aplikacje mogą działać szybciej lub wolniej w wersji 32-bitowej w porównaniu do 64-bitowej. Ale sprzedawca powiedział, że niedopasowanie między serwerem WWW a serwerem DB powoduje problem. To stwierdzenie, które kwestionuję.
Odpowiedzi:
Przypuszczam, że możliwe jest , że znają jakąś konkretną interakcję między tymi dwoma produktami, która powoduje problem w przypadku niedopasowania (ale naprawdę w to wątpię - postawiłbym około 10: 1, że sprzedawca jest tego pełen).
Być może będziesz chciał sprawdzić na serwerze, czy masz pytania dotyczące skutków takich niedopasowań, ale wątpię, czy znajdziesz wiele, ponieważ wątpię, czy istnieje jakiś prawdziwy problem ...
źródło
Poproś o dowód. Złożył wątpliwe oświadczenie, że (źle) sprzedaje ci rzeczy, albo powinien to zrobić, albo cofnąć. Oszczędź sobie pracy nóg.
źródło
Różnica między 32-bitowymi i 64-bitowymi parami serwerów najprawdopodobniej nie spowoduje żadnych różnic. To, co zrobi różnicę, to endianizm różnych procesów, które sprzedawca mógł pomylić jako „bit parzystości”.
źródło
Krótko mówiąc, powiedziałbym, że żadna parzystość bitowa nie ma znaczenia. SQL Server nie ma osobnego protokołu 64-bitowego i 32-bitowego.
Jednak zalecam zmianę serwerów na 64-bitową niezależnie. SQL Server jest dostępny tylko w wersji 64-bitowej i uważam, że Windows Server również zmierza w tym kierunku.
źródło
Cóż, jeśli wspomniany sprzedawca ściśle odnosi się do wydajności, może być w tym trochę prawdy. Z pewnością nie ma niezgodności między systemami x86 i amd64, ponieważ protokół sieciowy powinien to ukryć.
Jednak wewnętrzna reprezentacja wartości musi zostać przekształcona podczas przesyłania. Więc jakaś forma
pack/unpack
będzie tego częścią. Zakładam jednak, że protokół sieciowy nie definiuje dwóch odmian i jest zoptymalizowany dla 64-bitowej sieci lub 32-bitowej wartości. Może więc wystąpić konwersja, a może być nawet mierzalna. Ale to prawdopodobnie nie jest znaczące.źródło
Technicznie połączenie z serwerem SQL jest zwykle kanałem binarnym (teraz nie znam tego systemu, może to być kanał tekstowy), więc po pobraniu wyników zapytania nastąpi konwersja na końcu docelowym.
To prowadzi do dwóch pytań:
Czy ta konwersja jest wykonywana tylko na 32x64
Może być tak, że kanał binarny jest niezależny od systemu (dzięki czemu może obsługiwać 32x64 oraz 32x32 i 64x64), a konwersja nastąpi mimo to w systemie 32x32.
Jaki jest koszt konwersji.
Nie wyobrażam sobie, żeby to miało na ciebie wpływ. Koszt konwersji binarnej na binarną jest niewielki i stały.
Jest jeszcze jedno pytanie, które musisz zadać:
Czy koszt posiadania parzystości bitów jest wyższy? Jeśli nie, to po co zadzierać z konsultantami. Jeśli istnieje znacząca różnica kosztów, jaki jest rzeczywisty spadek wydajności, a co najważniejsze , spadek wydajności obniża wydajność serwera internetowego poniżej akceptowalnego progu.
tzn. jeśli serwer wymaga serwera 200 stron na sekundę. System 32x32 może dostarczyć 202, 32x64 może dostarczyć 200, a 64x64 może dostarczyć 210. W tej sytuacji nie ma znaczenia, jaki system posiadasz (wszystkie spełniają kryteria), ale to dodatkowy koszt warty dodatkowych 10 stron na sekundę .
W końcu nawet jeśli wiąże się to z niewielkimi dodatkowymi kosztami (wątpię). Czy ten koszt jest znaczący czy mierzalny w porównaniu z innymi kosztami naliczonymi przez WebServer. tzn. Patrząc na skrajny przykład: jeśli koszt budowy strony wynosi 100ms, z czego 15ms to WebServer. Jeśli wersja z bitową parzystością jest o 33% droższa (20 ms), to parapet podnosi jedynie koszt budowy strony do 105 ms, a wzrost tylko o 5%.
źródło