ThinkGeo.com    |     Documentation    |     Premium Support

Recommended WMS Server hardware requirements

Hi ThinkGeo,


Can you please suggest the hardware requirements (RAM/CPU/Disk space required ( CacheFolder etc) ) for WMS server deployment so as to see performance as comparabe to maps.thinkgeo.com?


Currently we have started  deploymnt with one server but the performance for WPF client app is not satisfactory. Ok for MapsSuite Web app.


Regards,


Anil



 


Hi Anil,
As far as I know, the server for maps.thinkgeo.com uses Microsoft Cloud server for deployment, I have forwarded your question to the guy who is in charge of server, I think he can give some suggestions.
Additionally, to improve the performance, I strongly recommend you to deploy the WMS to several servers. In that way, different tiles will request different servers, and we can balance the time between client display and image requests. Here as following is the sample code about using multiply servers.
            Collection<Uri> wmsUris = new Collection<Uri>();
            wmsUris.Add("server 1");
            wmsUris.Add("server 2");
            wmsUris.Add("server 3");
            TiledWmsOverlay overlay = new TiledWmsOverlay(wmsUris);
 
Thanks,
Johnny

Actually maps.thinkgeo.com is hosted on the Amazon Web Services Cloud at this time. In the interest of full disclosure we do not receive any compensation from Amazon.


Johnny is correct about the multiple servers. With Amazon Web Services you can setup multiple servers/load balancers that can allow you to have a multi-homed map service. As far a specific hardware requirements this is going to change depending on the type of load that you need to serve. One advantage we have see with utilizing a cloud based service is that we can easily upgrade our 'hardware' to include additional processors, memory, or storage depending on the load.



Hello,


 


Question 1 ) For suppose,if i added below URL on WPF Code , so how you guys are deciding to pick which server??Is this random??or based on load of server resources ??


Question 2 ) What happen's, If Server 2 is down, do you guys take care of Fault Tolerence to redirect maps request to Server 3 instead of server2?


Collection<Uri> wmsUris = new Collection<Uri>();


            wmsUris.Add("server 1");
            wmsUris.Add("server 2");
            wmsUris.Add("server 3");

 


Hi Srikanth,
Welcome to Map Suite Discussion forum. Here are the answers:
1.       Yes, the tiles will select the free URL randomly to request the image. Normally, we are unable to get the server information, such as server resources, configuration etc.
2.       Currently, there is no tolerance to redirect maps request to another server, the tile will run into error and show exception if the request server is down. Thanks for your idea, I will talk to our Wpf team about it.
Any other questions please let us know.
Thanks,
Johnny
 



Johnny, 



Thanks. 



I hope, if you guys can implement "Fault Tolerance" feature, definitely that will be value added to your product. 



Since our APP is running on WPF, if some server is down, we can’t ask customer’s to install new package. So my plan to maintain this is to load URL’s from Database table, if some server is down, we can easily control by flags. Please let us know if you have any other suggestions to control this. 



Hi Srikanth,



I think it's possible to change the Uri when one server is down. My suggestion is to create a new WmsOverlay which inherits from our current WmsOverlay and override GetRequestUriCore method which can replace the Uri to the new one. Here is the code, please see the commends of the code. Please feel free to let us know if you have any more queries.

public class UriFaultListenedWmsOverlay : WmsOverlay
{
    public UriFaultListenedWmsOverlay()
        : this(new Collection<Uri>())
    { }

    public UriFaultListenedWmsOverlay(IEnumerable<Uri> uris)
        : base(uris)
    { }

    protected override Uri GetRequestUriCore(Uri serverUri, RectangleShape targetExtent)
    {
        if (CheckIfServerIsDown(serverUri))
        {
            serverUri = ChooseAnotherServerUri();
        }

        return base.GetRequestUriCore(serverUri, targetExtent);
    }

    private Uri ChooseAnotherServerUri()
    {
        return new Uri("[Another Uri which is not down]");
    }

    private bool CheckIfServerIsDown(Uri serverUri)
    {
        // check if server is down here.
        return false;
    }
}



Thanks,

Howard



Posted By Howard on 09-29-2010 08:41 PM 

Hi Srikanth,



I think it’s possible to change the Uri when one server is down.



 


Howard,


I love this feature.Right now we don’t have environment to test this.We will set-up and let you know how this went.


Thanks again.


 


 


 



Hi, Srikanth 
  
 Thanks for your information about this post. 
  
 We are looking forward to your feedback about your test result. 
  
 If you have addtional questions, pleaset let us know. 
  
 Thanks, 
  
 Khalil