We have been working on testing the performance of our Microsoft CRM 2016 installation. To test, we are using a simple client written in .NET using the .NET SDK to query for a single entity. The entity in our case is a custom entity. There are only 2 rows in our custom entity table. the point of the test is not to retrieve the entity, but to test the response time and number of concurrent calls. Therefore, our query always fetches where entity.Id == Gud.Empty. Our test is pretty simple:
- start with one thread, querying where entity.Id == Guid.Empty, in a loop.
- every N units of time (ie 3-5 minutes), add another thread
We use explicit new threads on the client to avoid issues with the thread pool. As we add client threads, the response time stays flat and the requests per second increase until we hit about 10 clients. After that, the requests per second goes flat (is stays at the same rate) and the average query time increases linearly with the number of clients. I would think Microsoft CRM should be able to support more than 10 concurrent requests.
It really sounds like a request thread pool issue on CRM. Trial and error doesn't seem like a good option as our CRM developers have said that we are not that free to change defaults on the server without contacting Microsoft support before hand.
- Microsoft CRM 2016
- 2 front end CRM servers behind a load balancer
*This post is locked for comments