2016-08-11 3 views
1

Я пытаюсь точно настроить производительность моего набора приемочных испытаний. Я обнаружил, что большая часть узкого места производительности связана с тем, что файлы хранилища MSMQ находятся на медленном диске VM IO. Я попытался переместить папку MSMQ Storage в RAM DISK, но по какой-то причудливой причине MSMQ выдает ошибку устройства ввода-вывода при попытке создать приватную очередь с помощью «Управление компьютером» в Windows Server 2012 R2. Он отлично работает в Windows 7,8 и 10. Поэтому я действительно не знаю, что проблема с RAM DISKS, MSMQ и Windows 2012 R2.MSMQ экземпляр в памяти

В качестве альтернативы я думал вместо того, чтобы беспокоиться о хранении файлов MSMQ на быстром диске или даже в RAM DISK, почему бы просто не создать новый экземпляр MSMQ в памяти, а затем все мои очереди в памяти ,

Обратите внимание, что этот код будет использоваться только для повышения производительности моего набора тестов приемника nunit. ATM, требуется 2,5 часа (4000 тестов, используя NServiceBUS, MSMQ и RavenDB). Мне удалось переместить все компоненты в RAMDISK, и это сократило время выполнения почти на 40%. То, когда я тестирую его на Windows 7,8,10, используя MSMQ на RAMDISK. Когда я делаю то же самое в Windows 2012 R2, я могу переместить все на RAM-диск, и он отлично работает, но я не могу заставить MSMQ работать с RAMDISK. И как ни странно, я потерял все преимущества производительности, когда MSMQ не находится в RAMDISK. Я думаю, что узкое место ввода-вывода действительно плохое!

Любые советы?

+0

Купите SSD! Чего же ты ждешь? ;) –

+0

Очереди MSMQ * НЕ * постоянны по умолчанию. По умолчанию используется память. Вы должны явно сделать их постоянными при их создании. Не надо –

+0

@ MatíasFidemraizer: Это не так просто. Я работаю в крупной компании, мы используем экземпляры сервера AWS для размещения нашей среды. Команда City размещается на виртуальной машине AWS, и, как уже упоминалось, тестовый пакет работает 2,5 часа. Диски на этой виртуальной машине читают/записывают со скоростью 150 Мбайт/с, с диском на этом сервере, я получаю 5000 МБ/с. – FaNIX

ответ

1

Я понял. Драйвер ramdisk, который я использовал, не поддерживает Win 2012 R2 с хранилищами. Он отлично работает для всего остального, но по какой-то причине MSMQ ему это не понравилось. Поэтому я попробовал другой драйвер ramdisk (Primo Ramdisk Server Edition), и msmq, наконец, работал.

Я использовал следующее, чтобы переместить расположение файлов MSMQ:

$MSMQStoragePath = "P:\MSMQ" 
$MessageFilePath = "$MSMQStoragePath\MessageFiles" 
$XactLogsPath = "$MSMQStoragePath\XactLogs" 
$StoragePath = "$MSMQStoragePath\Storage" 
Write-Host "$MessageFilePath - $XactLogsPath - $StoragePath" 
$MSMQPath = Split-Path -Path $MessageFilePath -Parent 
New-Item -ItemType Directory -Force -Path "$MessageFilePath\LQS" -Verbose 
New-Item -ItemType Directory -Force -Path $XactLogsPath -Verbose 
New-Item -ItemType Directory -Force -Path $StoragePath -Verbose 
icacls $MSMQPath /grant "NT SERVICE\MSMQ:(OI)(F)" 
icacls "$MessageFilePath\LQS" /grant "NT SERVICE\MSMQ:(OI)(F)" 
Set-MsmqQueueManager -MessageQuota 10485760 -JournalQuota 10485760 -MsgStore $MessageFilePath -MsgLogStore $XactLogsPath -TransactionLogStore $StoragePath -Verbose -Confirm:$false 
Start-Service MSMQ -Verbose 

Запуск мой тестовый набор теперь занимает 67min, по сравнению с 150 мин!

 Смежные вопросы

  • Нет связанных вопросов^_^