2014-02-18 4 views
3

У меня есть ASP.NET 4.5, chatty, веб-приложение, которое размещено на одной большой (4 ядра 7GB) Azure VM. Приложение WEB слабо связано с уровнем данных через специальную службу WCF. База данных приложений размещается специальным экземпляром SQL Server на другой большой (4 ядра 7GB) Azure VM. Конечная точка WCF связывается с виртуальной машиной DB через строку соединения ASP.NET, которая использует общедоступное DNS-имя базы данных БД - например, xyz.cloudapp.net.Задержка между двумя Azure VM

Как виртуальные машины WEB, так и DB работают в другой подсети, но оба находятся в одном и том же местоположении Azure; отличающихся вторым и последующим октетными значениями.

При запуске одного и того же решения на одном носителе (2 ядра 3,5 ГБ) Azure VM, проблемы с задержкой значительно ниже.

Я ищу предложения о том, как максимально уменьшить задержку между WEB и DB.

ответ

2

Если у вас есть две виртуальные машины в одном центре обработки данных, которые должны взаимодействовать друг с другом, не используйте их общедоступный DNS. Создайте группу Affinity, создайте виртуальную сеть в этой группе аффинити, а затем разместите обе виртуальные машины в виртуальной сети (вам может потребоваться закрыть их, удалить их, не удаляя их VHD, а затем создать их с дисков данных в новом VNET). Доступ к виртуальным машинам через DNS (таким образом, через Azure LB) добавляет около 0,5 мс латентности к каждому запросу - не рекомендуется для чат-приложения.

3

Похоже, что у вас две виртуальные машины работают в двух отдельных облачных сервисах. Могу ли я предложить разместить обе машины в одном облачном сервисе? Это должно позволить вам получить доступ к серверу базы данных из веб-уровня с помощью короткого имени DNS (также называемого именем сервера). Это должно помочь не только защитить сервер базы данных, разрешив вам удалить любые конечные точки ввода, которые вы объявили на нем, но и уменьшить задержку, так как вызовы будут выполняться непосредственно с одной виртуальной машины на другую и не будут проходить через балансировщик нагрузки Azure Fabric (который какие фронты всех вызовов поступают на URL облачной службы).