OS family 4 Azure Worker Role - wcf

My application is hosted in Azure Web Role, whereas WCF services are hosted on Worker role, these services are using TCP protocol. I am migrating all of these from OS family 2 to OS family 4 and from SDK 1.7 to SDK 2.3.
However, when I say Instance count as 2 for Worker Role, my application gets very slow or even stops responding. Sometimes even the default page doesn't load, but with Instance count as 1, the application works completely fine with no issues and good performance.
Note: Application is hosted on 2 Instances all the time.
What am I missing? Do I need to tweak any settings to make this work on 2 instances?

Related

Do IIS Web Applications that use the same App Pool share DLLs in memory?

I inherited a large web site. To the user, it consists of 20 "modules" with different functionality. Each module can be accessed via a menu from each other module.
Each module has been implemented as a separate Web Application in IIS, all sitting under the Default Web Site. They all use the same App Pool. All implemented in ASP.NET Core (net5).
The modules share about 70% of their code. This library code sits in several projects. The web application projects all have References to the library DLLs. After everything has been built, the bin folder of each web application project has a copy of the library DLLs (so there are then 20 copies of each library DLL on disk).
Assuming that web application 1 is receiving requests and has been loaded into server memory. If web application 2 then gets loaded into server memory, will the library DLLs then be loaded into memory again for web application 2? Or will web application 2 use the library DLLs that have already been loaded into memory for web application 1? As in, after web applications 1 and 2 have been loaded in memory, will there be 1 copy of the library cod in memory or 2 copies?
Reason behind the question is that I need to reduce memory usage on the web server. There are no operational benefits to having separate web applications. They are all deployed together in one go. We never start or stop just one of them, it is always all or nothing. Wondering if I can save memory by having 1 big web application instead of 20 smaller web applications.
Your ASP.NET Core web apps in the same application pool are configured to use out-of-process hosting, so all their assemblies/libraries are loaded into individual .NET Core processes (Kestrel based) (dotnet.exe usually, or your own executable when self contained deployment is used).
Diagrams in that Microsoft article make it super easy to understand the relationship among the runtime processes.
In that mode, IIS worker process(es) w3wp.exe only loads the ASP.NET Core module to work as reverse proxy.
Combining the two above, the answer to your question Do IIS Web Applications that use the same App Pool share DLLs in memory? is rather clear that nothing is shared and you cannot share anything either due to the process boundary.

How do you setup a load balanced environment with ASP.Net 5 (vNext) while using the DNX environment?

Description
I am curious about how a DNX load balanced setup will work. I am accustomed to working with an ARR (Application Request Routing)/Server Farm setup with IIS like this. Typically there is nothing done on the code side with the ARR/Server Farm setup. However, with the cross platform support that DNX provides, while getting rid of IIS, this sort of load balanced setup seems like it will now need to be handled in the code. Or at least in my case I would be responsible for code deploys as opposed to a Network Admin that would install updates. The closest that I could find is session management. Can you do load balancing with this, potentially, I just do not see it there yet.
Functional Impact
Decide to download a third party ARR, use MS ARR, or Role your own ARR?
What I need
I would like to keep this from "I like this best" responses as much as possible and see responses that are "Here is why you need this" or "Here is why I found this to work well". I know that dnx is a new environment, but the experience of setting up LB servers in OSX and Linux is not. With the move to cross platform, I do not expect that the MS ARR will work on OSX or Linux. I am not very familiar with those OS's so I do not know where to begin.
Question(s)
1) Is the https://github.com/aspnet/Session/ project (or another project) expected to contain an ARR?
If no on 1
2) Is there an ARR that is cross platform (Windows, OSX, Linux)?
There's no out-of-the-box load balancer for ASP.NET 5.
Your solution is the right one, add a load balancer in front of DNX. On Windows you can use IIS, on cross plat you can use something like ngnix
No changes and no support for in-app.
ASP.NET 5 is not where this should be going. IIS will still exist and the ARR module is a part of IIS itself. Not the app.
On the page itself it says:
Works With: IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10
As for supporting different kind of servers? I don't see why not since the ARR module is basically just a reverse-proxy.
Nothing need to change. You can even compile to CoreCLR and have it hosted on a farm of Linux machines with Apache but have an IIS server with the ARR Module set in Reverse-Proxy to forward load balance the requests.

Windows Store Application unable to access localhost WCF service and throws EndpoingNotFoundException

I have a solution which basically contains three components:
• WCF Service that is hosted locally having a back-end SQL Server Express DB and this WCF service is hosted from a Windows Service
• A console application
• A Windows Store Application
This is what they are meant to do:
• WCF service his hosted locally and is used by the console app and the store app for communicating with the database
• The console app adds an image for processing to the database by contacting the WCF service
• The store app will at regular time look for unprocessed images in database via the WCF service and will process them
Now, the difficulty is:
• The WCF service is hosted successfully and is working absolutely fine and I can check that by hitting its URL http://localhost:8081/XYZ
• The console app is also able to submit images to the WCF service and add their local paths to the database
• The store app however always throws the EndpointNotFoundException when accessing the service at that same localhost path
What have I tried:
• I have tried almost everything from searching through stackoverflow to googling and haven't found a solution yet
• I was thinking that it might be a port issue and so I turned off the firewall to check this, but it did not work, and the store app kept throwing the EndpointNotFoundException
What have worked:
• The complete set-up has, however, worked perfectly on my machine. It is strange that its not working on my client's Windows 8 machine.
Point to be noted:
• The complete solution has been developed in Visual Studio 2013 and the App is for Windows 8.1
• I am not sure, but it seems my client has a Windows 8 machine and we are installing the app on that. (Possibly, that might be a problem. But I'll check)
If there is any help someone could provide me, I'll be really greatful. Thanks in advance!
This is expected. Windows Store apps cannot connect back to the local system in production. This loopback prohibition is disabled for debugging.
See How to enable loopback and troubleshoot network isolation
If your app is to be side-loaded rather than deployed through the store then see Using network loopback in side-loaded Windows Store apps

Multiple azure windows virtual machines communications

I need you to solve big problem of mine. I've created an IIS smooth streaming application to deliver the media content.
I'm using azure windows virtual machine, small instance (CUP 1 Core), as a media server. I installed IIS Media Services on vm(Virtual Machine) and I'm creating publish points on it.
The number of users are too many and load on vm will be increase. So, I decided to go with the Load Balancing/Auto Scaling options. Well I'm doing this first time.
Here is my media server architecture:
I want to implement 3-tier architecture, like I'll create 3 virtual machines and want them communicate each other to balance the load. I mean if load increase on vm-1 then load will be balance with vm-2 and/or vm-3. Also I want to auto scaling of vms.
How can I do this?
Thanks in advance
Devendra
to do so you can create an availability set where you can join the 3 VMs , here are some resources I think they will be very beneficial
"managing the availability of the Virtual Machines" http://www.windowsazure.com/en-us/manage/windows/common-tasks/manage-vm-availability/
here is a second one for the load balancing I think it is a bit like the first one: http://www.windowsazure.com/en-us/manage/windows/common-tasks/how-to-load-balance-virtual-machines/
for the scaling I think it is still in the preview, you can test it by adding this feature to your account. after that you will be able to access it in your cloud service after creating the Virtual Machines required.

Uploading data when internet is available Compact Framework

I have an application that uses cellphone data connection to communicate with a remote server over web services. However, due to the unreliability of the cell phone network the application doesn't work for as long as the cell network is down. So what I want to do is change the application to process orders directly on the device and upload the orders in the background (like a windows service) when internet is available.
Here's what I'm thinking:
2 Applications
App #1: Change the order taking application to connect to internet at application load to get all settings and save to a sdf DB. Once settings are saved locally the user can process orders and save to database.
App #2: Runs in the background constantly checking db (say every 3-5 mins) for orders and upload to remote server via WCF web service. Additionally after upload is completed updated settings are downloaded back to the device.
App #2 is what I need guidance on. On a desktop I could run a windows service however compact framework of windows mobiles doesn't appear to have a windows service type support.
Any advice?
Why run it as a separate app? In that case you'll have to do cross-process synchronization of data access to make sure that simultaneous access from both processes doesn't cause a problem. Why not create a background "service" thread inside the app itself to do data forwarding to the enterprise?