When is loading too much for IIS7?

At our client, candidates pass tests with our software. If their test is completed, some calculations are performed on the server. Now, sometimes, 200 candidates can complete their test at the same time, so 200 calculations are performed simultaneously. All calculations look good, but some calls to the IIS7 server return an http error ...

In Flex, this is an error:

code = "NetConnection.Call.Failed" description = "HTTP: Status 200" details = "http://servername/weborb.aspx" level = "error" 

No status 200 OK? So what's wrong here? Is this even an IIS7 problem? Of the 200 candidates, 20 received this message. When restarting the test, everything worked well.

I found this one on this issue, but I wonder if this has anything to do with my problem (next week our client will do some stresstests, and I will ask them to test the test if the solution in this post works).

Some questions:

  • Could it be that IIS7 blocks certain HTTP calls when the load is significant?
  • How do you know that IIS7 blocked these calls due to too much workload?
  • Can I customize these things?

Technically, in the future I would like to queue the calculations, but so far there is no time and budget for this.

Application: Flex, WebORB, ASP.NET, IIS7 en SQLSERVER2008. Server is Windows Server 2008.

+5
flex iis-7 windows-server-2008
source share
4 answers

This problem seems very familiar to me. We have a bunch of flexible widgets that are connected to the same server side, and sometimes also returns "Netconnection.Call.Failed". It seems to us that IIS (and MSSql behind) cannot handle all requests in a timely manner, so some of them time out. Try to check how long each request / all requests take, and then check the timeout settings.

+1
source share

There are many things you can do to fine-tune the performance of your server and IIS .

To answer your questions:

The maximum restriction on concurrent connections (plus other settings) in IIS 7 can be configured by selecting your site in IIS Manager and selecting "Advanced Settings" in the action panel on the right. Although by default this number is much higher than 200.

The IIS log files , in particular return status codes, may give you an indication of what went wrong. At the same time, the Windows event log should also inform you of any exceptions that have occurred.

+1
source share

I suggest you turn on load balancing between IIS instances or consider using nginx for load balancing.

also sets a limit of 200 users above. Since in IIS each user connects to your application, 1 user instance is considered, at some point you will use up to 200 user slots. This is the default value, and you can set it to a much larger number.

Also set the wait time to a larger number.

Also look at the comet if you are trying to trigger a consistent result, for example, real-time data (stocks, weather, chat, shoutbox)

+1
source share

Technically, in the future I would like to queue the calculations, but so far there is no time and budget for this.

A queue is not so difficult to combine with a batch script that runs scheduled Windows tasks. Just dump the results in SQL DB, or if you are really lazy, insert the rows in SQL with a serialized array, and then ask them to "return" to see their results. "Wait, your results are still being processed."

It will take less time than waiting on SO for a silver bullet answer, in my opinion.

0
source share

All Articles