I have a SOAP web service that is running on Windows 2008 R2, IIS7, ASP, and .net v2 framework. The service connects to a 32-bit dll that performs an operation that typically takes 15ms to complete. I have a requirement to manage 100 simultaneous requests per second originating from a single IP address.
Having followed many threads in this forum and the Microsoft site I have been able to tune my service to achive up to 50 simultaneous requests, using soap-ui and load-ui as a test harness.
I think that my only option is now to load balance several servers. Having read about load balancing and tried a virtual application from loadbalancers.org I'm not sure how to load balance the SOAP requests from a single IP, they only seem to balance based by IP address. Is this possible?
Regards, Mark.
If you have Windows Server with Network Load Balancing this is absolutely possible.
Check out http://technet.microsoft.com/en-us/library/cc725691.aspx for more information on it.
It should be standard with your server install.
There are other options but this will be your fastest and easiest since it seems you already have the necessary components.
Related
For years I always use IIS Looging always active on my sites. I currently use Windows Server 2008 R2 and Windows Server 2012. The official information I follow is this:
https://learn.microsoft.com/en-us/windows/desktop/http/iis-logging
I have looked for official information from Microsoft asking if it is recommended to always use this feature active or it is better to enable it only when you want to trace a problem.
Do you know if there is any official information?
Is there any study that says how much is the degradation of the
response times or general speed of the site to be active?
If I use an architecture with a Load Balancer F5 or A10 or Apache
that connect to my nodes, is it recommended to use Logging in the
Load Balancer always if it is deactivated in the nodes?
thanks!
IIS logging is processed on separate threads from the gateway services and app pools. Which means that it will not degrade performance.
Don't just take my word for it. If you want to confirm this, you can use a capacity testing tool (not recommended on your prod server, of course). Test your capacity with logging turned-on and logging turned-off. You will see that they are comparable.
I am running WEB.API backend with Angular front end, using SignalR (2.2.0) with almost constant data changes.
My problem is that I am able to connect only 4 clients, 5th client would not connect. It will load all web page data, but SignalR won't connect. As soon as I disconnt
one of the 4 already connected clients, the 5th one would connect with not problems.
This is running on Windows 8.1 with IIS 8.5 on separate LAN.
IIS settings is default. Where shall I start looking to solve this?
Thank you.
update: in addition to below link provide by #thab, here is another one with concurent connection limits in IIS per Windows version: http://jpelectron.com/sample/WWW%20and%20HTML/IIS-%20OS%20Version%20Limits.htm
I think it's because you're using Windows 8.1 - there's a limit to the number of simultaneous connections that IIS supports on non-server versions of Windows:
http://weblogs.asp.net/owscott/windows-8-iis-8-concurrent-requests-limit
The problem relates to how SignalR holds a persistent connection (whether Forever Frames, Server Sent Events or Web Sockets) and if the limit is 10 connections, then you'll only be able to get a few users online at once...
I have setup and Azure VM and installed a monitoring service that reaches out to various endpoints to verify a 200 response. The service is set to cycle through about 8 URL endpoints every 5 minutes or so.
We have run this service from multiple other servers outside of Azure, including virtual machines that are cheap, low end offerings.
While this machine is running on the lowest A0, it isn't doing anything else other than to run this service and call out to the various endpoints.
We are getting intermittent periods where one of the calls out of the list will fail for different periods that span 10-40 minutes at random periods several times a day.
The site or sites that fail are totally random and there is no down time from other monitor locations. We are sure that the connection problem is between Azure and the endpoints outside of Azure. There is no problem from anywhere outside of Azure.
I'm trying to figure out what could be causing this issue. It concerns me because we will be adding more services to Azure soon that use outside HTTP calls for credit card authorization and other API's.
Is this a known issue where outbound calls just don't function reliably at periods, or am I missing something in the setup or security settings?
Obviously, if the call makes it out and the response doesn't make it back, that is even worse as credit card charges would end up being pushed and the application would not register the proper response.
Anyone with some experience or insight would be greatly appreciated.
Thanks!
I find that very disturbing and hard to believe since, among a lot of other stuff, I run a service like that too... In my case I reach out to several (today, about 70) external addresses on both IPV4 and IPV6. I don't run A0s, and most of my machines are A3. I'll start a A0 to test it... if anything turns out <terminator>i'll be back</terminator> to report...
I know that there are several limitations regarding network traffic but i don't think you can reach them the way you're reporting...
My suggestion is to report that problem directly to MS via support ticket... most likely the problem is on the other side...
I am willing to host an application in a single machine with out any fail-over or load balancing at the hardware level as per my budget.
But, to my knowledge, as the no of hits increases to the tomcat, it has a drawback of going down. So, to get rid of that I want to go with multiple instances for the same application. So to do so, which load balancer would be better either mod_jk or mod_proxy. You can even suggest any other open source tool that helps me in load balancing the application hits.
My application contains structs and not even springs and my OS is rhel 6.x. Please suggest according to the good performance also.
Thanks in advance.
Running multiple instances of one application on the same machine only leads to the application sharing the resources - minus the overhead for the additional Tomcat instances and the loadbalancer.
This is pretty much the same as dividing cargo on individual tires because a car gets slow when it is too loaded. Staying in the picture: what you want is a turbocharger.
Translated that would be a reverse proxy cache.
I'd suggest using varnish. You can configure it to serve static resources like images and stylesheets from RAM after they were delivered the first time, reducing the requests passed to your application drastically.
It may be configured as a classical load balancer, too.
I have an Windows Azure app (Asp Net Mvc 4).
And there is some ajax in this app. Some requests with simple in-memory server logic (no sql, no external web services).
When I run it locally in debug mode, it takes about 900 ms for ajax request to get a response.
Locally in release mode, it takes about 30 ms (It`s OK).
When I publish app to Azure it takes 450 ms for request to get a response. I try both debug mode and release, also cloud and local service configuration. In all cases it takes 450 ms.
Question: is there something that I did not take into account?
To properly diagnose the performance of your ASP.NET MVC application, you need to take in consideration:
The latency between your client computer and the server. Use the ping utility to measure that.
The time it takes to establish the HTTP and/or HTTPS connection.
The time spent waiting for other concurrent requests your browser may be issuing.
Data transfer time, both to send the request and to retrieve the response.
Queueing on the web server due to overload.
Time spent on the server actually processing the request. You can measure this with the StopwatchAttribute described in this article. Use the current code from GitHub though, because the code in the article is not compatible with ASP.NET MVC 3.
Tools like Chrome's and Internet Explorer's Developer Tools, Firefox's Firebug and Yahoo's YSlow can give you a greater insight on your application's performance.