ThinkGeo.com    |     Documentation    |     Premium Support

Slow when deployed

When I deploy my release mode application to my test environment, it runs considerably (unacceptably) slower than on my laptop in debug mode.  I have tried setting up my test environment with a single server (both IIS and SQL Server 2008) and using separate servers for each.  In both cases the database appears to slam the dB server CPU when the map is drawing.  I have tried running my laptop in release mode with no noticable change in speed.  There is no code difference between debug and release mode other than that added by the IDE.  I am at a loss at to how to troubleshoot this problem.


Any ideas?


Charles



 


Charles,
Thanks for your information and efforts on the clean machine. This is a weird thing, I think, because the map suite just uses the SQL Server2008 built-in SQL Script to fetch or filter the features from DB.  To make the things clear, several items need to be confirmed:
1.       Is there any custom SQL Script used in your application? Or is there any complex store-process in your application?
2.       Can you give us a brief description about how your application works with SQL Server 2008?
3.       Which Spatial type you are using, Geometry or geography?
4.       Which version of Map suite you are using?
5.       Can you let us know the detail of your test environment? Including IIS version, X86 or X64 OS etc.
If a sample code is available, it will be very helpful.
Thanks,
 Johnny

There is no custom database script running in my application.  My application uses the ajax control tool kit 3.5.40412.2, which includes custom java script, and telerik radcontrols for asp.net ajax q2 2010.  I am running mapsuite core 4.0.40.0, and web edition 4.0.40.0. 



My app is opening individual tables as MSSqlFeatureLayers.  All of my spatial tables use the same schema: 



Location           geometry          Allow Nulls = True   (There are no Null Location fields)  

ID                     int                    Allow Nulls = False   Primary key 

FeatureId         int                    Allow Nulls = True   Links spatial table to attribute table 

FeatureType    nvarchar(50)   Allow Nulls = True   Well known type name 

MapName          nvarchar(50)   Allow Nulls = True   Not used 

Layer                int                    Allow Nulls = True   Used to determine if a layer is displayed. 

Angle                float                 Allow Nulls = True   Used to draw point/text features 

FeatureText    nvarchar(MAX) Allow Nulls = True   Used to draw point/text features 

RScale             float                  Allow Nulls = True   Used to draw point/text features 

DBText            int                      Allow Nulls = True   Used to draw point/text features 

LineStart         int                      Allow Nulls = True   Used to draw point/text features 

LineEnd           int                      Allow Nulls = True   Used to draw point/text features 

PSymbol          int                      Allow Nulls = True   Used to draw point/text features 

TextJust         int                      Allow Nulls = True   Used to draw point/text features 



The only fields that will contain Nulls are those that are used to draw point/text features, 



The App is not using views or ad-hoc queries.  All of the spatial tables have a spatial index.  All spatial features are geometry type.  SRID = 0 because I am using a custom projection string with Proj4Projection.  I am using a custom style to draw everything, but it is the same on my computer and the server.  I have 56 layers showing in my test although not all are visible all of the time and there is no reason a customer couldn't have more.. 



My test environment is Windows Server 2008 R2 (64-bit) running 64-bit SQL 2008 Standard and IIS 7 for the single server version.  When I use 2 servers the database is moved to Windows Server 2008 (64-bit) running 64-bit SQL 2008 Standard.  



Drawing times are much longer at all zoom levels when compared to my laptop. 



Charles



 


Charles,
As far as I know from your description, there isn’t custom setting. I did a simple test with IIS7, but works fine, I also experienced several customers who used the SQL Server as the data source. Can you give a simple demo to us for test on the same environment to yours?
Thanks,
Johnny

Johnny, 
  
 I don’t know how I could give you a sample project to test.  In order to do a reasonable test I’d have to give you most of my code and all of my data.  The database is right at 4G and my backup file is over 2G, and that is only one backup (we overwrite every time).  I really just wanted to know if anyone else had been experiencing similar problems.  I’ll throw this back to my IT guys and see what they can determine. 
  
 Charles

 


Charles,
Thanks for your information. In that case, we will prepare a similar environment for test. Can you do some time to find which part costs the major time, query the data or drawing the feature? Here are some ways that maybe can help you.
1.       Create an instance of MSSql2008FeatureSource and get all features in your map’s current Extent and write down the time.
2.       Create an instance of InMemoryFeatureLayer and add all features queried in first step into InMemoryFeatureLayer to render them with your map’s current extent, and record the time.
 
Repeat the two steps on your development machine, and then find out which part consumes longer time. Any results please let us know.
 
Thanks,
Johnny