IIS Workers CPU usage on Windows Server 2016 - iis

I have been trying to increase max allowed CPU usage by IIS Application on my Windows Server.
Here's the thing :
When I launch my webapi on Visual Studio IIS the request is proceed within 1,7 sec.
When I launch webapi on my PC's IIS the request is proceed within 3,5 sec.
And finally when I launch webapi on my other machine which has WS 2016 the request is proceed within 10 secs.
CPU usage on VS IIS - can reach 90%.
CPU usage on my PC IIS - can reach 35%.
CPU usage on WS 2016 IIS - can reach max 10%.
My question is, how can I increase max cpu usage on IIS process workers? I have been trying everything :
changing limits in Application Pool settings
changed process priority in Task Manager to "Real Time" and cpu usage increased from 3% to 10% but still it's not enough.

Related

Jmeter : IIS server stops responding

I am learning jmeter to check perform of the web application. This web application is hosted on IIS server and built in php. For testing we use windows 10 PC with 4GB RAM.
I am checking load testing with jmeter where I am sending 10 login request to IIS server with ramp-up periods 3 sec , IIS server stops responding and I have to restart IIS service. If I set ramp-up period 4 SEC then it is working fine.
I m expecting IIS should handle 10 request in 2 sec. For this what configuration should I change in IIS ?
My expectation is that you're hitting IIS concurrent connections limit:
Single JMeter virtual user can open up to 7 connections to the server when retrieving embedded resources so I think you can only do some functional testing using JMeter, but not the load testing.
If you want to identify the limits of your application and conduct some load testing you should consider upgrading to Windows Server operating system which doesn't have this limits.
Alternative solution is migrating from IIS to i.e. Apache which is capable of hosting PHP applications, in this case you will have much more concurrent connections allowed

IIS application pool setting Throttle under load

One of our customers has set the application pool to throttle under load at 35%, and at times they noticed the following event
Event ID: 5210
CPU time for application pool 'abc' has been throttled.
They noticed such events show up in the event viewer log, even though the CPU utilization on the web server is not pegged high, for example < 60%
Would like to know:
• Under what condition does the event id 5210 get generated?
• How does IIS detect contention on the CPU? Is it based on a performance counter etc?
The cause of the issue is there is something misconfiguration with your Application Pool.
open iis manager.
Right-click on the appropriate Application Pool and click Advanced Settings.
Set the Limit to 0 and Limit Action value to NoAction.
IIS 8.0 CPU Throttling: Sand-boxing Sites and Applications
This is strange question: you said you had set AppPool to ThrottleUnderLoad and set Limit to 35%. Why do you wonder when it hits the limit and generates a log record? The most common value for the throttle limit is 80%, which allows to throttle the load a little when there are too many requests and the CPU resources are not enough. I don't see sense to set the limit to 35%, this will slow web responses from your server when it has plenty of CPU time.
I suggest increasing the value. This would decrease the number of 5210 warnings.

IIS 8, Out of memory , MVC Web site

We have an issue on Live site (MVC .Net).
Max users 25
After every 2-3 hours IIS memory usage peak to Max memory
And All users get a exception saying "System Out Memory"
We then need to restart IIS and All work Well.
Let me know if any solution to fix this.
You should check your application if there is no memory leaks. Also IIS has this behavioir during DOS attack.
Also you can set automatic IIS reset after memory usage increased some amount

How to prevent IIS from shutting down Web Site when not in use?

I have a web application hosted under IIS. It is a data warehouse, and during its startup process it requires instantiating a large set of items in memory (takes roughly ~20 minutes to fully set up). Because this website is critical to our company, this system must be online 100% during the daytime, and only can be restarted during off-work hours.
For some reason, this web application seems to be "offline" when there is no usage for some time. I know this because the cache is not fully instantiated when the website is visited. This is unacceptable.
It is not clear to me why the website is shut off. The application pool is only set to recycle daily at 4:00 AM (it is 11 AM now).
Are there other settings which I'm not aware of on the IIS part that causes it to shut down the website automatically?
Addl Note: The website does not shut off automatically when running in IISExpress in Visual Studio. Only the production version hosted on IIS shuts off.
Here's a screen of the Advanced Settings for the Application Pool the web site is running under. (Not sure if it's useful.)
I'm on IIS 7.5, Server 2008 R2. It is an ASP.NET 5 Web App.
Check Idle Time-out settings under process model in screenshot. That setting is causing app pool shutting down when remain idle for 20 mins. You can set it to 0 to keep it running all time even when its idle i.e. not processing any requests.
Note: Keeping app pool running all time will consume server's precious memory. It may become critical especially if application is leaking memory.

Application pool private memory limit is 0

I'm new to IIS. I have several questions about recycling application pool:
Private memory limit and Vitual memory limit are all 0 by default. I read the official document of IIS 7.0 (We are using IIS 8.0 and Windows Server 2012 but I think they should be the same in this respect). So there is really no limit for the memory usage? It's just waiting 1740 minutes (by default) for the application to recycle? It won't recycle even if the total memory usage is very high until 1740 minutes later? I searched very hard for the answers but couldn't find any...
I read an article which said application pool should never be recycled. So what is the mechanism of memory management for IIS? When would the memory not being used be released? Is it similar to Java? I think no one said that full GC in Java is no good practice...
Thanks.

Resources