01.04.2011, 13:11 | #1 |
Участник
|
axinthefield: Optimizing AX Batch Performance - Batch Group Configuration
Источник: http://blogs.msdn.com/b/axinthefield...gurations.aspx
============== Are you pushing lots of transactions through the AX batch framework? Are you wondering if you've optimized the system for your workload? We recently did some testing in our lab to illustrate some of the performance and concurrency characteristics of the AX 2009 batch framework. Our goal was to show the impact of two commonly overlooked configuration options (batch groups & batch threads) that can greatly impact the throughput of your system. In this post we'll address the topic of batch groups. We'll cover the topic of batch thread configuration in a subsequent post. Now to the details... Test Environment In our AX 2009 test environment we have 1 SQL Server hosting the AX database and 2 AOS servers configured for batch processing. 2 separate companies were created within AX and each has 10,000 orders that need to be invoiced. A separate invoicing batch job was setup for each company to process the orders. To illustrate how batch groups affect batch job concurrency we ran 2 different tests. In scenario 1, a single batch group exists and all batch activity is configured to use it. Both AOS instances are assigned to this batch group and both are using the default of 8 batch threads. In scenario 2, 2 batch groups exist. Company A is configured to use batch group A and Company B is configured to use batch group B. 1 AOS instance is assigned only to batch group A and the other AOS instance is assigned only to batch group B. Both AOS instances are using the default of 8 batch threads. Test Results Scenario 1: The red line represents the number of invoicing batch tasks completed each minute for company A. The blue line represents the number of invoicing batch tasks completed each minute for company B. Both jobs were started at the same time. Scenario 2: The red line represents the number of invoicing batch tasks completed each minute for company A. The blue line represents the number of invoicing batch tasks completed each minute for company B. Both jobs were started at the same time.
Based on what we saw in the test results, I think you'll agree it's important to consider the different workloads you have and how they interact. If all of your batch jobs have the same priority and it's acceptable for any of those jobs to queue up behind another one for a while, then a single pool of batch resources (single batch group) will likely meet your needs. But, if you have a time sensitive batch job mixed in with everything else, you can't guarantee that job will execute when you have it scheduled because it doesn't have dedicated resources. We have observed the job queuing behaviour exhibited in scenario 1 a number of times with different customers - a large multi-threaded batch job consumes all available batch threads across all AOS instances for many hours while a small but time sensitive job sits there waiting to run until after the other one is complete. This can be a frustrating situation, but the good news is there's a simple solution - move the time sensitive job to a separate batch group to ensure resources are available when it needs to execute. Then you can rest easy knowing that it will execute on schedule regardless of the other activity on the system. In the next post on batch performance we'll discuss the topic of batch threads. Stay tuned... Источник: http://blogs.msdn.com/b/axinthefield...gurations.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|