Может ли отсутствие «битовой четности» между веб-сервером и сервером БД влиять на производительность?


10

Сегодня у меня была встреча с поставщиком программного обеспечения по поводу рекомендованной им инфраструктуры для развертывания конкретного приложения. Приложению требуется два сервера: сервер приложений для серверных веб-страниц (.NET, Windows) и база данных (SQL Server). Производитель заявил, что эти два сервера должны иметь «битовую четность». Под этим они понимали, что если сервер приложений был 32-разрядным, то SQL-сервер должен быть 32-разрядным или если приложение 64-разрядное, SQL-сервер 64-разрядный. В противном случае на производительность будет оказано негативное влияние.

Это кажется смешным для меня. Серверы независимы и общаются только по сети. Сетевые протоколы не имеют ничего общего с «разрядностью» процессора на любом из серверов.

Я ошибаюсь? Есть ли причина, по которой несоответствие может негативно повлиять на производительность?

ПРИМЕЧАНИЕ. Я знаю, что некоторые приложения могут работать быстрее или медленнее в 32-битной и 64-битной версиях. Но производитель говорил, что несоответствие между веб-сервером и сервером БД вызывает проблемы. Это утверждение я ставлю под сомнение.


При прочих равных условиях он думает, что 32 и 32 работают быстрее, чем 32 и 64?
JeffO

Это то, что требовал продавец, да. Производительность 32,32 или 64,64 выше, чем 32,64 или 64,32.
RationalGeek

Получите их, чтобы настроить два варианта системы. Затем стресс-тест их. Купите самую дешевую версию, которая соответствует вашим требованиям.
Мартин Йорк

Ответы:


10

Я предполагаю, что, возможно , они знают о каком-то конкретном взаимодействии между этими двумя продуктами, которое вызывает проблему, когда есть несоответствие (но я действительно сомневаюсь в этом - я бы поставил шансы 10: 1, что у продавца полно этого).

Возможно, вы захотите посмотреть на serverfault для вопросов о последствиях таких несоответствий, но я сомневаюсь, что вы найдете много, потому что я сомневаюсь, что есть какие-то реальные проблемы, чтобы найти


1
+1, я думаю, ты прав. Вполне возможно, что существуют соображения производительности для каждого отдельного устройства, но по сети, неважно, 32-разрядный или 64-разрядный тип.
Moo-Juice

1
Является ли это возможным? Я не могу придумать один сценарий, где это физическая возможность. Я также склоняюсь к варианту «продавца полно». :-)
RationalGeek

@jkolhepp: я могу придумать несколько способов, которыми это было бы возможно , но я сомневаюсь, что любой из них применим. Только для одной отдаленной возможности рассмотрим сервер, отправляющий данные быстрее, чем получатель может их обработать, поэтому данные отбрасываются и должны быть переданы повторно. Это действительно маловероятно, но едва ли возможно.
Джерри Коффин

Это было бы возможно, только если бы они использовали низкоуровневые сетевые протоколы, которые допускали подобные вещи. Использование «нормального» TCP / IP или чего-либо другого предотвращает подобные проблемы. И скорость отправки по сравнению со скоростью приема не имеет ничего общего с "битностью" сервера.
RationalGeek

3
Я видел проблемы, возникающие из-за лжи поставщика, например, выставление поля в сетевом сообщении, которое различается по размеру в зависимости от «разрядности» приложения, не предоставляя способ определить, какой размер поля вы должны отправить / ожидать.
Джеффри Хантин

6

Спросите доказательства. Он сделал сомнительное заявление, он (неправильно) продает вам вещи, либо он должен это подкрепить, либо отозвать. Спаси себя от работы.


Это хорошая идея. Я планирую сделать это. Смысл этого вопроса состоял в том, чтобы убедиться, что я не сошел с ума, прежде чем я это сделал. :-)
RationalGeek

4

Разница между 32-битными и 64-битными парами серверов, по всей вероятности, не будет иметь никакого значения. Что будет делать различие является порядком байт различных процессов, которые человек продаж может быть спутать как «биты четности».


2
Даже это зависит от протокола (и я признаю, что понятия не имею, как работают БД). Если сервер / клиент объявляет свой порядок байтов, а другой адаптируется к нему, то вы абсолютно правы; но традиционно сетевые протоколы были с прямым порядком байтов, и в этих обстоятельствах два блока с прямым порядком байтов должны были бы оба конвертироваться, что ставило бы их в более невыгодное положение, чем пара LE / BE.
ijw

3

Короче говоря, я бы сказал, что битовый паритет не имеет значения. SQL Server не имеет отдельного 64-битного и 32-битного протокола.

Тем не менее, я бы порекомендовал вам переключать серверы на 64 бит независимо SQL Server поставляется только в 64-разрядной версии, и я считаю, что Windows Server также движется в этом направлении.


Я согласен, что 64 бит это будущее. Но дело не в этом. Я подвергаю сомнению мнение поставщиков о том, что битовая четность является действительным требованием, которое они нам предъявляют. У нас есть существующие фермы серверов, которые мы хотим использовать, которые не находятся в паритете.
RationalGeek

2

Что ж, если поставщик говорит о производительности, в этом может быть доля правды. Несомненно, между системами x86 и amd64 несовместимости нет, поскольку сетевой протокол должен это скрывать.

Однако внутреннее представление значений должно быть преобразовано во время передачи. Таким образом, некоторая форма pack/unpackбудет частью этого. Однако я бы предположил, что сетевой протокол не определяет два варианта и оптимизирован для 64-битных сетевых или 32-битных значений. Таким образом, может быть вовлечено обращение, и оно может быть даже измеримым. Но это скорее всего не важно.


1

Технически соединение с сервером SQL обычно представляет собой двоичный канал (теперь я не знаю этой системы, в частности, это может быть текстовый канал), поэтому при получении результатов запроса произойдет некоторое преобразование в конечной точке.

Это приводит к двум вопросам:

  1. Это преобразование выполняется только в 32x64?
    Возможно, двоичный канал не зависит от системы (так что он может поддерживать 32x64, 32x32 и 64x64), и преобразование произойдет в любом случае в системе 32x32.

  2. Какова стоимость конвертации.
    Я не могу представить, что это повлияет на вас. Стоимость двоичного преобразования в двоичное невелика и постоянна.

Есть еще один вопрос, который вам нужно задать:

Является ли стоимость наличия битового паритета выше? Если нет, то зачем связываться с консультантами. Если существует значительная разница в стоимости, то каково реальное снижение производительности и, что наиболее важно , снижает ли производительность производительность веб-сервера ниже вашего порогового значения?

т.е. если вашему серверу нужно сервер 200 страниц в секунду. Система 32x32 может доставить 202, 32x64 может доставить 200, а 64x64 может доставить 210. Тогда в этой ситуации не имеет значения, какая у вас система (все они соответствуют планке), но это дополнительная стоимость, которая стоит дополнительных 10 страниц в секунду ,

В конце концов, даже если есть небольшая дополнительная стоимость (в этом я сомневаюсь). Является ли эта стоимость значительной или измеримой по сравнению с другими затратами, накопленными WebServer. т.е. рассматривая крайний пример: если стоимость создания страницы составляет 100 мс, из которых 15 мс - это WebServer. Если версия без битовой четности на 33% дороже (20 мс), то этот подоконник только увеличивает стоимость создания страницы до 105 мс, увеличившись всего на 5%.


Это интересно, Мартин. Есть ли справочная страница для этого преобразования двоичного канала?
RationalGeek

@jkohlhepp: Вам необходимо узнать подробности реализации «SQL Server». По-видимому, он использует собственный протокол Tabular Data Stream. Я ничего не знаю об этом, но согласно этой странице MS опубликовала протокол.
Мартин Йорк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.