私は受け入れテストスイートのパフォーマンスを微調整しようとしています。パフォーマンスのボトルネックの大部分は、MSMQストレージファイルが低速のIO VMディスク上にあることが原因であることがわかりました。 MSMQ StorageフォルダをRAMディスクに移動しようとしましたが、Windows Server 2012 R2の "コンピュータの管理"を使用してプライベートキューを作成しようとすると、奇妙な理由でI/Oデバイスのエラーが発生します。それはWindows 7,8と10でうまく動作します。だから、私は実際にRAMディスク、MSMQ、Windows 2012 R2の問題を知りません。メモリ内のMSMQインスタンス
代わりに、MSMQファイルを高速ディスクまたはRAMディスクに保存することを心配するのではなく、新しいメモリ内MSMQコンポーネントインスタンスを作成し、メモリ内にすべてのキュー。
このコードは、受諾可能なnunitテストスイートのパフォーマンスを向上させる目的でのみ使用されることに注意してください。 ATMでは、完了までに2.5時間かかります(NServiceBUS、MSMQ、RavenDBを使用して4000回テスト)。私はすべてのコンポーネントをRAMDISKに移動することができましたが、これによりランタイムがほぼ40%減少しました。 RAMDISKでMSMQを使用してWindows 7,8,10でテストするとどうなるでしょうか。 Windows 2012 R2でも同じことをすると、すべてをRAMディスクに移動しても問題ありませんが、MSMQがRAMDISKで動作するようになります。奇妙なことに、MSMQがRAMDISKにないときにすべてのパフォーマンスが失われました。私はI/Oボトルネックが本当に悪いと思う!
アドバイスはありますか?
SSDを購入!何を待っていますか? ;) –
MSMQキューは、デフォルトでは* NOT *永続的です。デフォルトのオプションはメモリストレージです。作成時に明示的に永続化する必要があります。 –
@MatíasFidemraizer:それほど簡単ではありません。私は大企業で働き、AWSサーバーインスタンスを使用して環境をホストしています。 Team CityはAWS VMでホストされており、前述のように、テストスイートは2.5時間実行されます。このVM上のディスクは150MB/sで読み書きできますが、このサーバー上のRAMディスクでは5000MB/sが得られます – FaNIX