<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3973073625377724620</id><updated>2012-01-26T12:36:22.994-08:00</updated><category term='project ArcGIS Server performance coordinate system'/><category term='ArcGIS Server Virtual VM Virtualization'/><category term='http://www.blogger.com/img/blank.gif'/><title type='text'>The GISTom blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-7125292144584061909</id><published>2012-01-06T07:05:00.001-08:00</published><updated>2012-01-06T12:18:29.425-08:00</updated><title type='text'>Tips for caching with ArcGIS Server 10</title><content type='html'>I recently received a request for best practices for map caching. Below was my response.&lt;br /&gt;&lt;br /&gt;First, read the help. The &lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/0093/00930000006n000000.htm"&gt;help &lt;/a&gt;has really improved on caching so it is well worth the read even if you have read it all before.&lt;br /&gt;&lt;br /&gt;Here are a couple of my additional suggestions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For basemaps you should use Mixed for the format. This will allow your basemap to overlay other basemaps. Try out different compression values before you build your cache. With Imagery I’ve found 55 is good but for vector basemaps 90 is better. As the number decreases the quality decreases but the speed increases.&lt;/li&gt;&lt;li&gt;Use MSD based services for caching whenever you can. If you have aerial imagery in a mosaic dataset you might find that the MSD service applies a stretch to the imagery. This is documented in &lt;a href="http://support.esri.com/en/bugs/nimbus/role/beta10_1/TklNMDcwODU4"&gt;NIM-070858&lt;/a&gt;. There is a workaround in that bug description that you can use if you run into this. This is fixed in 10.1.&lt;/li&gt;&lt;li&gt;Use WGS 1984 Web Mercator (Auxiliary Sphere) as your coordinate system and use the standard Esri/Google/Bing tiling scheme. This is the standard for the web. There is no reason to use anything else. If you have 6 inch resolution imagery you can build your cache down to 576 but I wouldn’t go any further than that. Also don’t remove any scales from the tiling scheme. If you don’t want a scale just don’t build it but leave the scale in your tiling scheme. I know I am taking an extreme position on using the standard CS and tiling scheme but if we all do this we will contribute to the same web GIS platform instead of our own web GIS silo.&lt;/li&gt;&lt;li&gt;Always test your cache settings before building a cache. I like to use on demand caching to get a quick visual of what the cache will look like before I build. If you want to get an idea of how big the cache will be and how long it will take to build, build 5% of your cache using cache by feature class. When evaluating the cache using a tool like Fiddler or Firebug to inspect the tiles. If they are bigger than 50 KB you probably need to change your image format or compression.&lt;/li&gt;&lt;li&gt;Always use compact cache. It is faster to build and the same speed for delivering tiles.&lt;/li&gt;&lt;li&gt;Build your cache with a staging server. You should never build cache directly on a production system. It can also be handy to have a big physical box somewhere for building cache. If you store your cache on a storage device like a SAN you can have your big cache builder machine build the cache in the same server directory as the production system. The easiest way to do this is to copy the configuration file (.cfg) from your production system to your cache building / staging system.&lt;/li&gt;&lt;li&gt;If you are dealing with vector data, project it all to WGS 1984 Web Mercator (Auxiliary Sphere) in a local (absolute path on the SOC machine) file geodatabase and use an MSD based map service.&lt;/li&gt;&lt;li&gt;Use on-demand caching very sparingly. It is rarely useful outside of testing.&lt;/li&gt;&lt;li&gt;After the cache is built you can change the map document used by the service. This is useful for reducing the amount of RAM used on the production system and removing a dependency on the source data. Once the cache is built, the content of the map document is only used for queries so it makes sense to simplify that map for just those items that will be queried.&lt;/li&gt;&lt;li&gt;If you are using cache by feature class make your features REALLY BIG. The help says this too. For a state like California I might only use 15 or 20 features. For a small city or county you probably don’t even need to do cache by feature class.&lt;/li&gt;&lt;li&gt;Read all of the help. There is a lot of great stuff in there.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://blogs.esri.com/Dev/blogs/arcgisserver/archive/tags/Map+Cache/default.aspx"&gt;ArcGIS Server Blog &lt;/a&gt;also has some great content on map caching.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Caching will change with 10.1 as well so make sure to read the updated help when you start with 10.1. This was humbling for me. I've read the help many times but I found it incredibly useful to start at the beginning of the new 10.1 help and read it all again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-7125292144584061909?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/7125292144584061909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2012/01/tips-for-caching-with-arcgis-server-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/7125292144584061909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/7125292144584061909'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2012/01/tips-for-caching-with-arcgis-server-10.html' title='Tips for caching with ArcGIS Server 10'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-1498643244937803491</id><published>2011-10-14T07:56:00.000-07:00</published><updated>2011-10-14T08:58:33.908-07:00</updated><title type='text'>Update all ArcGIS Server Service properties at once</title><content type='html'>One question I have heard a lot for ArcGIS Server is how do I modify the configuration settings for all of my services at once. For example, let’s say I wanted to change my MinInstances across the board to 0. Or better yet set my MaxInstances for all services to 50. The solution I found for this is PowerShell (Windows only, sorry my Linux friends). I’m using the XML editing capabilities of PowerShell to find the right configuration node and change it. This works recursively on a folder for all files with the extension “.cfg”&lt;br /&gt;&lt;br /&gt;Here is the PowerShell script:&lt;br /&gt;&lt;code&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;$cfgProperty = "MaxInstances"&lt;br /&gt;$newVal = 50&lt;br /&gt;$folder = "C:\Program Files\ArcGIS\Server10.0\server\user\cfg"&lt;br /&gt;$files = Get-childItem –filter *.cfg -path $folder -recurse&lt;br /&gt;&lt;br /&gt;foreach($file in $files)&lt;br /&gt;{&lt;br /&gt;$xmldata = [xml](Get-Content $file.fullname)&lt;br /&gt;$node = $xmldata.SelectSingleNode("ServerObjectConfiguration/" + $cfgProperty)&lt;br /&gt;if($node -ne $null) { $node.set_InnerText($newVal) }&lt;br /&gt;$xmldata.Save($file.FullName)&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;All you need to do is change the first three lines for your system. Set as follows.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;$cfgProperty&lt;/span&gt; – Set this to the exact configuration name that you want to change. This is case sensitive. I recommend opening one of your cfg files and doing a Copy/Paste.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;$newVal&lt;/span&gt; – Set this to whatever you want the value for the target property to be.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;$folder &lt;/span&gt;– Set this to the location of your .cfg files.&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;I just modify the script and copy and paste it into the Windows PowerShell command prompt. Once you execute the code just restart the SOM service (ArcGIS Server Object Manager) and all your settings will be applied.&lt;br /&gt;&lt;br /&gt;Hey Linux people. Feel free to add your own script to do this as a comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-1498643244937803491?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/1498643244937803491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/10/update-all-arcgis-server-service.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1498643244937803491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1498643244937803491'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/10/update-all-arcgis-server-service.html' title='Update all ArcGIS Server Service properties at once'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-8735862579128575346</id><published>2011-10-11T07:48:00.000-07:00</published><updated>2011-10-11T07:57:51.671-07:00</updated><title type='text'>Max instances = a really big number (Update)</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:donotshowrevisions/&gt;   &lt;w:donotprintrevisions/&gt;   &lt;w:donotshowmarkup/&gt;   &lt;w:donotshowcomments/&gt;   &lt;w:donotshowinsertionsanddeletions/&gt;   &lt;w:donotshowpropertychanges/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;I am really glad I wrote the &lt;a href="http://gistom.blogspot.com/2011/02/max-instances-really-big-number.html"&gt;Max instances = a really big number&lt;/a&gt; blog post back in February. One great thing about it is that it started some really good discussions on this topic. I had some friends call me crazy but when we sat down and really talked through different scenarios with max instances set really high, my recommendations held up. However those discussions also revealed a couple of recommendations that I would like to change (aka. I was wrong). The two changes I would like to make are:&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin"&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Set idle timeout much lower than 86400&lt;/li&gt;&lt;li&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin"&gt;&lt;span style="mso-list:Ignore"&gt;&lt;/span&gt;&lt;/span&gt;Avoid using capacity on SOC machines&lt;/li&gt;&lt;/ol&gt;    &lt;p class="MsoNormal"&gt;First let’s discuss why I changed my mind on the idle timeout (max time an idle instance can be kept running). If you need a refresher on this setting their online help is a good article on &lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/0093/009300000069000000.htm"&gt;Tuning and configuring services &lt;/a&gt;in the online help. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;I said that I set my idle timeout to 86,400 seconds or one day. I did this so I could set the min instances to 0 but still avoid slow responses when people hit the service first thing in the morning. The trouble is an idle timeout of 86,400 ends up wasting a lot of RAM on the server because unused instance are not cleaned up fast enough. So I have changed my thinking on this and now I think setting min instances to 1 is the best way to avoid those early morning slow responses. Then you can just take the default for idle timeout. Now if you have a service where you want to set the min instances to 0 (maybe it is used very infrequently), then set your idle timeout higher for that service. For example, you might set the idle timeout for these services to 4 hours or (14,400). I wouldn’t go over 8 hours (18,800) for the idle timeout because unused instances just don’t get cleaned up fast enough.&lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;SOC Capacity is the other recommendation that I would change. Again if you need a refresher on this setting their online help is a good article on &lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#/Tuning_and_configuring_services/009300000069000000/GUID-4E117B9A-9FBD-45B2-A9A6-0FE071155AC5/"&gt;Limiting the load on the server with the Capacity property&lt;/a&gt; &lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#/Tuning_and_configuring_services/009300000069000000/GUID-4E117B9A-9FBD-45B2-A9A6-0FE071155AC5/"&gt;&lt;/a&gt;in the online help. &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;In my &lt;a href="http://gistom.blogspot.com/2011/02/max-instances-really-big-number.html"&gt;original post&lt;/a&gt; I said that you have to set your SOC capacity when setting your max instances to a large number. Now I say, leave your SOC capacity set to unlimited unless you have SOC machines with different levels of capacity. So if one SOC machine has half the CPU and RAM as another SOC machine, I would set the capacity on the smaller SOC machine to avoid outstripping its resources. In most circumstances your SOC machines should be identical. This is another benefit of virtualization where SOC VM’s can be cloned making them identical. &lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;When your SOCs have the same hardware capacity, you should not set the capacity property. When the capacity property is set, pool shrinking occurs when the capacity property is reached. Pool shrinking itself puts a significant load on the system because instances must be destroyed and created to move the instances around. So the act of pool shrinking will itself reduce the throughput of your server. This is the point that I missed in my first post. I didn’t account for the overhead of pool shrinking. &lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;Setting capacity is still a necessary evil in the unbalanced SOC case that I mentioned above and in the case where you don’t have enough RAM on your SOC machines. But in the case where you don’t have enough RAM I say “BUY MORE RAM!” Memory is incredibly cheap and it just doesn’t make sense to try to work around a problem that is so easily fixed with an inexpensive hardware change.&lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;I stick by my recommendation to make the max instances a really big number (like 10,000,000). I even have more reasons why this is good. Take an example where you have a two tier system: web and SOM on tier 1 and SOC on tier 2. This is usually the best configuration for production systems because it allows you scale out your SOC tier without taking the system down. In this case, if you set your max instances based on the number of cores on the system (the most popular calculations are 1xCores for file geodatabase data and 2.5xCores for enterprise geodatabase data) you would have to update every service because the number of cores has changed. So in this scenario you have to have an outage just to update the max instances. &lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;If you can’t scale the system for cost reasons, you could set max instances for a service to keep the system from reaching capacity. But in this case you are avoiding the main problem and you are passing along poor performance to your users. I could see using max instances in this case as a stop gap measure until you have a chance to scale your system but once you scale up the system, make sure to set your max instances back to a big number. &lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:328.15pt"&gt;It is important to understand that there are rarely any absolutes when it comes to optimizing your system. You always have to consider the landscape to make a good choice. I just hope this gives you some more information to make the best choice. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-8735862579128575346?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/8735862579128575346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/10/max-instances-really-big-number-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8735862579128575346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8735862579128575346'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/10/max-instances-really-big-number-update.html' title='Max instances = a really big number (Update)'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-8416332435034626232</id><published>2011-06-22T20:19:00.000-07:00</published><updated>2011-06-22T20:27:38.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http://www.blogger.com/img/blank.gif'/><title type='text'>CSV files + ArcGIS.com</title><content type='html'>ArcGIS.com is getting pretty cool. Presentations, built-in queries for use in mobile apps, creating editable layers, and configurable pop-ups are all awesome. But my new favorite thing is leveraging ArcGIS.com with the samples in the JavaScript API. The neat thing about some of these samples is you can completely configure them using their URL. For example, let’s say you want an interactive map of the tornadoes that just hit the US on 6/20. You could go to NOAA here: &lt;a href="http://www.spc.noaa.gov/climo/reports/110620_rpts.html"&gt;http://www.spc.noaa.gov/climo/reports/110620_rpts.html&lt;/a&gt; and see a nice list of tornadoes and a map. Unfortunately the map is not interactive so there is no way to tie an item from the list to a point in the map. I could also download a CSV file of the tornadoes by clicking the &lt;a href="http://www.spc.noaa.gov/climo/reports/110620_rpts_torn.csv"&gt;CSV link &lt;/a&gt;on the page. But then I just have a table of coordinates and values with no map. To solve this problem I go to the &lt;a href="http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm"&gt;JavaScript samples&lt;/a&gt;, expand the ArcGIS.com samples, and select the &lt;a href="http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples/ags_mapwithtable.html"&gt;CSV Data&lt;/a&gt; help topic. If you read this sample it tells you that it takes several arguments in the URL to configure the application. In our case, the NOAA CSV file is publicly accessible, so we can display those points by plugging that URL as an argument to the URL for this sample. We also need to download the CSV to look at the different field names to tell the sample app what column names stores the Latitude, Longitude, and primary Display name. The result is a URL that looks like this:&lt;br /&gt;&lt;a href="http://servicesbeta.esri.com/demos/ags/ags_MapwithTable.html?webmap=d5e02a0c1f2b4ec399823fdd3c2fdebd&amp;amp;dataUrl=http://www.spc.noaa.gov/climo/reports/110620_rpts_torn.csv&amp;amp;displayField=Location&amp;amp;title=Tornadoes&amp;amp;subTitle=6-20-2011&amp;amp;latitudeField=Lat&amp;amp;longitudeField=Lon"&gt;http://servicesbeta.esri.com/demos/ags/ags_MapwithTable.html?webmap=d5e02a0c1f2b4ec399823fdd3c2fdebd&amp;amp;dataUrl=http://www.spc.noaa.gov/climo/reports/110620_rpts_torn.csv&amp;amp;displayField=Location&amp;amp;title=Tornadoes&amp;amp;subTitle=6-20-2011&amp;amp;latitudeField=Lat&amp;amp;longitudeField=Lon  &lt;/a&gt;&lt;br /&gt;Notice, the first configuration setting is the webmap that these points are going to overlay. To display the same points on top of the current weather warnings web map you would use a URL like this:&lt;br /&gt;&lt;a href="http://servicesbeta.esri.com/demos/ags/ags_MapwithTable.html?webmap=a03a49082c1c4e869c6349d9cdccf2a3&amp;amp;dataUrl=http://www.spc.noaa.gov/climo/reports/110620_rpts_torn.csv&amp;amp;displayField=Location&amp;amp;title=Tornadoes&amp;amp;subTitle=6-20-2011&amp;amp;latitudeField=Lat&amp;amp;longitudeField=Lon"&gt;http://servicesbeta.esri.com/demos/ags/ags_MapwithTable.html?webmap=a03a49082c1c4e869c6349d9cdccf2a3&amp;amp;dataUrl=http://www.spc.noaa.gov/climo/reports/110620_rpts_torn.csv&amp;amp;displayField=Location&amp;amp;title=Tornadoes&amp;amp;subTitle=6-20-2011&amp;amp;latitudeField=Lat&amp;amp;longitudeField=Lon&lt;/a&gt;&lt;br /&gt;So by simply changing a URL I can mashup and CSV file with Latitude and Longitude data on the web with any web map on ArcGIS.com all for free. Not bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-8416332435034626232?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/8416332435034626232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/06/csv-files-arcgiscom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8416332435034626232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8416332435034626232'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/06/csv-files-arcgiscom.html' title='CSV files + ArcGIS.com'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-418769362497491426</id><published>2011-05-06T06:51:00.001-07:00</published><updated>2011-05-06T07:00:32.089-07:00</updated><title type='text'></title><content type='html'>Popups in ArcGIS.com are pretty cool and easy to create. Here is a map I just made for stream gauges and weather stations. It is a copy of the USGS map with popups enabled. Just click the points in the map to get more information.&lt;br /&gt;&lt;iframe width="525" height="600" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://www.arcgis.com/home/webmap/embedViewer.html?webmap=0cb9e8d001cb432698fb449cec2d6223&amp;amp;zoom=true&amp;amp;scale=true"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://www.arcgis.com/home/webmap/viewer.html?webmap=0cb9e8d001cb432698fb449cec2d6223" style="color:#0000FF;text-align:left" target="_blank"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-418769362497491426?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/418769362497491426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/05/popups-in-arcgis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/418769362497491426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/418769362497491426'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/05/popups-in-arcgis.html' title=''/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-2058000110101197387</id><published>2011-04-28T05:21:00.000-07:00</published><updated>2011-04-28T07:34:10.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http://www.blogger.com/img/blank.gif'/><title type='text'>IGIC Webinar - GIS In the cloud follow up</title><content type='html'>In my presentation today for IGIC I discussed three aspects of GIS in the cloud.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using ArcGIS.com entirely to share maps&lt;/li&gt;&lt;li&gt;Using ArcGIS Online to make you more productive with ArcGIS Desktop&lt;/li&gt;&lt;li&gt;Building an ArcGIS Server system in the cloud using Amazon EC2&lt;/li&gt;&lt;/ul&gt;Below is supporting information in each of these three categories.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Using ArcGIS.com entirely to share maps&lt;/span&gt;&lt;br /&gt;The web map that I created in the presentation is accessible here: &lt;a href="http://www.arcgis.com/home/webmap/viewer.html?webmap=b825be4db4ae40e6ad7b16629a5fb672"&gt;http://www.arcgis.com/home/webmap/viewer.html?webmap=b825be4db4ae40e6ad7b16629a5fb672&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ArcGIS.com documentation:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisonline/help/index.html#//010q00000002000000.htm"&gt;http://help.arcgis.com/en/arcgisonline/help/index.html#//010q00000002000000.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I didn’t even get into ArcGIS Explorer online and making presentations. That is an incredibly powerful concept.  ArcGIS Explorer online has its own help pages available here: &lt;a href="http://help.arcgis.com/en/arcgisexplorer/help/"&gt;http://help.arcgis.com/en/arcgisexplorer/help/ &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These web maps that you create in ArcGIS.com can also be used in an iPhone or Windows Phone 7 as well.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Using ArcGIS Online to make you more productive with ArcGIS Desktop&lt;/span&gt;&lt;br /&gt;Desktop documentation for working with ArcGIS online:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Adding_data_from_ArcGIS_online/006600000441000000/"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Adding_data_from_ArcGIS_online/006600000441000000/&lt;/a&gt;&lt;br /&gt;and:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Adding_data_from_ArcGIS_online/006600000441000000/"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/00sp/00sp0000001z000000.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I showed downloading a layer package(Earthquake epicenters and Indiana Big Trees) from ArcGIS.com.  There is more information on layer packages here:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/00s5/00s500000013000000.htm"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/00s5/00s500000013000000.htm&lt;/a&gt;&lt;br /&gt;and creating a map packages here:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Creating_a_map_package/006600000403000000/"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Creating_a_map_package/006600000403000000/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The drive time analysis Geoprocessing tool that I used in the presentation is available here:&lt;br /&gt;&lt;a href="http://www.arcgis.com/home/item.html?id=16f372f4d05d40c3ab6040a98dbcae7d"&gt;http://www.arcgis.com/home/item.html?id=16f372f4d05d40c3ab6040a98dbcae7d&lt;/a&gt;&lt;br /&gt;Connecting to the server from ArcGIS Desktop can be done with this URL:&lt;br /&gt;http://sampleserver1.arcgisonline.com/ArcGIS/Services&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Building an ArcGIS Server system in the cloud using Amazon EC2&lt;/span&gt;&lt;br /&gt;The resource center gallery for local government where I downloaded the Citizen Service Request Template is here:&lt;br /&gt;&lt;a href="http://localgovtemplates2.esri.com/gallery/gallery.html"&gt;http://localgovtemplates2.esri.com/gallery/gallery.html&lt;/a&gt;&lt;br /&gt;And you can access the template directly here:&lt;br /&gt;&lt;a href="http://www.arcgis.com/home/item.html?id=cf64d38f5d1d4b34867a59073f5cd0b6"&gt;http://www.arcgis.com/home/item.html?id=cf64d38f5d1d4b34867a59073f5cd0b6&lt;/a&gt;&lt;br /&gt;Documentation for working with ArcGIS Server on Amazon EC2 is available here:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_on_amazon_ec2/index.html"&gt;http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_on_amazon_ec2/index.html&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class="" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I worked through a replication workflow with the cloud.  The ArcGIS Server on Amazon EC2 documentation has more information on this here:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_on_amazon_ec2/index.html#/Replication_to_an_Amazon_EC2_instance_using_geodata_services/00rq0000000p000000/"&gt;http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_on_amazon_ec2/index.html#/Replication_to_an_Amazon_EC2_instance_using_geodata_services/00rq0000000p000000/&lt;/a&gt;&lt;br /&gt;and replication documentation in the ArcGIS Desktop Help:&lt;br /&gt;&lt;a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/0027/002700000020000000.htm"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/0027/002700000020000000.htm &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope everyone found the webinar useful. If you haven't taken 5 minutes to fill out the survey yet, please click &lt;a href="http://www.surveymonkey.com/s/CT57QVK"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-2058000110101197387?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/2058000110101197387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/04/igic-webinar-gis-in-cloud-follow-up.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/2058000110101197387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/2058000110101197387'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/04/igic-webinar-gis-in-cloud-follow-up.html' title='IGIC Webinar - GIS In the cloud follow up'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-7901826397202590834</id><published>2011-02-02T06:43:00.000-08:00</published><updated>2011-02-02T07:22:56.207-08:00</updated><title type='text'>Max instances = a really big number</title><content type='html'>First off, sorry for the long delays between posts.  This year I plan to be more active.&lt;br /&gt;So recently I got asked about the max instances used in ArcGIS Server.  What should I set it to?  How does this relate to capacity?  &lt;br /&gt;Max instances is the total number of map workers processes that can respond to a map request.  so if a map service has more of these then it has more capacity to respond to requests.  I use the term processes here loosely.  They are actually only separate processes (ArcSOC.exe) when your service is set to high-isolation.  when in low isolation the instances are worker threads inside of an ArcSOC.exe processes.  Rarely is it a good idea to use low-isolation so lets just stick with the default high-isolation.&lt;br /&gt;&lt;br /&gt;So back to the question.    What should I set max instances to for a service.  My recommendation is 1000000 or 10000000 or something ridiculously big like that. However, if you do this, you MUST also set capacity on each SOC machine. Capacity is the total number of instances that a SOC machine will support.  If you don't have a good idea of what to set this to, guess (maybe 50).  Then monitor your system.  Its really difficult to get this number right out of the gate so system monitoring is really important.  If you find yourself at max instance but the machine still has capacity then up the number accordingly.  It is probably better to guess on the low side and adjust up then the other way around.  25 or 50 is a good place to start.&lt;br /&gt;Now back to that ridiculously big max instance number.  The reason I like to set this number so high is it lets ArcGIS Server adjust the instance to the popular services as it sees fit.&lt;br /&gt;&lt;br /&gt;Lets say the capacity on your system is 10 and you have two map services A and B.  &lt;br /&gt;Scenario 1:  Both A and B have max instances set to 5.  Let’s say service A becomes wildly popular but nobody is interested in service B. The best you can do is use half the capacity of your system (5 instance).&lt;br /&gt;Scenario 2: Both A and B have max instances set to 1,000,000.  Again service A becomes wildly popular but nobody is interested in service B. Now the system can focus all of its capacity where it is needed, on service A.  The total number of instances used will only ever equal your capacity.&lt;br /&gt;&lt;br /&gt;So I generally recommend this ridiculously high maximum approach.  Mostly because it is extremely difficult to figure out up front, what the overall usage is going to be for a service.  This will increase the amount of instance destruction and creation (which is costly) but I think it is worth it to fully utilize your system.  You can also adjust your idle timeout to a longer interval to reduce the amount of instance turnover.  I like to set my min instances to 0 and max instances to 1000000 and set my idle timeout to about a day (86400).  That way you won't dip to 0 instances for a service unless it has gone unused for a day.  This could lead to a Monday morning groggy server problem but that could be mitigated with scripts or if you notice the services that are always hit Monday morning, set their minimums to 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-7901826397202590834?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/7901826397202590834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2011/02/max-instances-really-big-number.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/7901826397202590834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/7901826397202590834'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2011/02/max-instances-really-big-number.html' title='Max instances = a really big number'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-8226775657168631102</id><published>2010-02-01T18:14:00.000-08:00</published><updated>2010-02-01T18:34:45.257-08:00</updated><title type='text'>ArcGIS Server Security and Windows 7</title><content type='html'>So I got this new fancy machine with Windows 7 installed. Let me tell you, it is a breath of fresh air after all those years of XP. Anyway, I was setting up a demo for ArcGIS Server security and I noticed that after I configured ArcGIS server to use SQL users and groups I got an error when I tried to create any users. At the bottom of manager I got the following error:&lt;br /&gt;&lt;em&gt;Unable to connect to SQL Server. Possible reasons include SQL Server not running, network problems, and permission denied for the account used to access SQL Server. See ArcGIS Server Help for more information.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The reason for this is IIS uses an ApplicationPoolIdentity instead of the Network Service. You can read more about this ApplicationPoolIdentity in the blog &lt;a href="http://blogs.msdn.com/vijaysk/archive/2009/02/13/goodbye-network-service.aspx"&gt;Goodbye Network Service&lt;/a&gt;. ArcGIS server is setup to grant access to the SQL Data base for Network Service but not for this new application pool identity. So after you run through the wizard to setup SQL for users and roles you need to run this little SQL script to grant the ApplicationPoolIdentity access to the database. You will need SQL Server Management Studio to run this script.&lt;br /&gt;&lt;br /&gt;The following script creates a new login in SQL server for the DefaultAppPool. It then creates a user in aspnetdb database and grants it appropriate permission to manage the membership and role tables. If you named your database something other than aspnetdb you will need to change this script according.&lt;br /&gt;&lt;br /&gt;CREATE LOGIN [IIS APPPOOL\DefaultAppPool]&lt;br /&gt;FROM WINDOWS WITH DEFAULT_DATABASE=[aspnetdb]&lt;br /&gt;&lt;br /&gt;USE [aspnetdb]&lt;br /&gt;CREATE USER [IIS APPPOOL\DefaultAppPool]&lt;br /&gt;FOR LOGIN [IIS APPPOOL\DefaultAppPool]&lt;br /&gt;&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Membership_FullAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Roles_ReportingAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Membership_BasicAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Membership_ReportingAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Roles_BasicAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;EXEC sp_addrolemember N'aspnet_Roles_FullAccess', N'IIS APPPOOL\DefaultAppPool'&lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-8226775657168631102?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/8226775657168631102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2010/02/arcgis-server-security-and-windows-7.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8226775657168631102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/8226775657168631102'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2010/02/arcgis-server-security-and-windows-7.html' title='ArcGIS Server Security and Windows 7'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-1522504279927131995</id><published>2009-12-08T06:06:00.000-08:00</published><updated>2009-12-08T09:31:37.560-08:00</updated><title type='text'>Silverlight Combobox with keyboard input</title><content type='html'>Recently I had to create some comboboxes in a silverlight app that contained quite a few items.  Scrolling through so many items in the list made it difficult to find what you want.  I wanted the combo to respond to keyboard input such that I could press a key and have it jump to the first item in the list that started with that letter.  I was kind of surprised not to find this as a standard property of the silverlight combo.&lt;br /&gt;&lt;br /&gt;The solution I came up with uses the KeyUp event to select the appropriate item in the list.  The trick is, you need to handle the KeyUp event for the Combo as well as the ItemsPanel of the combo. Once you start scrolling or interact with the list, you are interacting with the ItemsPanel of the combo, so you need to handle the events there if you want to allow keyboard input multiple times.  The XAML looks like this:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&amp;lt;ComboBox&lt;br /&gt;&amp;nbsp;&amp;nbsp;Width="50"&lt;br /&gt;&amp;nbsp;&amp;nbsp;Height="20"&lt;br /&gt;&amp;nbsp;&amp;nbsp;x:Name="cboSimple"&lt;br /&gt;&amp;nbsp;&amp;nbsp;KeyUp="cboSimple_KeyUp" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBox.ItemsPanel&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;StackPanel KeyUp="cboSimple_KeyUp"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/ComboBox.ItemsPanel&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBoxItem Content="A" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBoxItem Content="B" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBoxItem Content="C" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBoxItem Content="D" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ComboBoxItem Content="E" /&amp;gt;&lt;br /&gt;&amp;lt;/ComboBox&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now when you handle the event you to select the item in the combo. So instead of working with the sender for the event, you will work with the combo by name.  LINQ can be used for finding all the items that start with the letter selected on the keyboard.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;private void cboSimple_KeyUp(object sender, KeyEventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;SelectItemInCombo(cboSimple, string.Format("{0}",  Convert.ToChar(e.PlatformKeyCode)));&lt;br /&gt;}&lt;br /&gt;private void SelectItemInCombo(ComboBox cBox, string keyLetter)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;object&amp;gt; itemsWithStartcChar =&lt;br /&gt;&amp;nbsp;&amp;nbsp;cBox.Items.Where(c =&gt; ((ComboBoxItem)c).Content.ToString().StartsWith(keyLetter));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (itemsWithStartcChar.Count() &gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cBox.SelectedItem = itemsWithStartcChar.First();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;No&lt;/span&gt;tice that first I do a select so I can get a count of the items that start with the letter that was pressed.  Without this you get an exception on the First function if the list is empty.&lt;br /&gt;&lt;br /&gt;This is also a very simple list.  If your combo contains more than simple strings you will need to find the string within the ComboBoxItem that you are sorting by.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-1522504279927131995?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/1522504279927131995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2009/12/silverlight-combobox-with-keyboard.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1522504279927131995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1522504279927131995'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2009/12/silverlight-combobox-with-keyboard.html' title='Silverlight Combobox with keyboard input'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-224898019931053333</id><published>2009-12-01T07:26:00.000-08:00</published><updated>2009-12-01T07:55:19.376-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ArcGIS Server Virtual VM Virtualization'/><title type='text'>ArcGIS Server and Virtualization</title><content type='html'>I've gotten several questions lately regarding virtualization and capacity planning with regard to ArcGIS Server.  Below are my answers to some of these questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: What is ESRI’s official supportability of virtualization of ArcGIS Server?  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A: &lt;/span&gt;ArcGIS Server is supported in a virtualized system.  See: &lt;a href="http://www.esri.com/software/arcgis/arcgisserver/common-questions.html"&gt;http://www.esri.com/software/arcgis/arcgisserver/common-questions.html&lt;/a&gt;.  Go down to Standards | Interoperability | IT | Security.  The third question down deals with virtualization. Basically, virtual systems are treated the same as physical systems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: What versions of Microsoft Windows are supportable deployments?  32 or 64bit support?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A: &lt;/span&gt;The same as support for physical systems. &lt;a href="http://wikis.esri.com/wiki/display/ag93bsr/Web+ADF+for+the+Microsoft+.NET+Framework"&gt;http://wikis.esri.com/wiki/display/ag93bsr/Web+ADF+for+the+Microsoft+.NET+Framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: What kind of resources (RAM / CPU / Disk) do I need to allocate to ArcGIS Server?   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A: &lt;/span&gt;It all depends on the services that you are using, the applications that consume those services (desktop, web/server, web/browser), and the number of users that will be interacting with the system. The book Building a GIS discusses how to use the Capacity Planning Tool that you can use to estimate capacity.  You can find info on that here:  &lt;a href="http://esripress.esri.com/display/index.cfm?fuseaction=display&amp;amp;websiteID=141&amp;amp;moduleID=27"&gt;http://esripress.esri.com/display/index.cfm?fuseaction=display&amp;amp;websiteID=141&amp;amp;moduleID=27&lt;/a&gt;.  To get a more exact picture of performance and scalability you should test an application in a configuration to see how many users it will support.  There is information on how to do this here:   &lt;a href="http://resources.esri.com/arcgisserver/adf/dotnet/index.cfm?fa=mediaGalleryDetails&amp;amp;mediaID=6D73B2DB-1422-2418-344143680A5154BA"&gt;http://resources.esri.com/arcgisserver/adf/dotnet/index.cfm?fa=mediaGalleryDetails&amp;amp;mediaID=6D73B2DB-1422-2418-344143680A5154BA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Q: Are there any special considerations for virtual systems?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A: &lt;/span&gt;The one performance issue that usually plagues VM’s is disk IO.  ArcGIS Server tends to do a lot of disk IO.  Geoprocessing services do the most disk IO but even a simple dynamic map request involves a write to disk. So improving the performance and scalability of your disk IO will have a significant impact on system performance.  For this reason, I prefer to put my ArcGIS Server, server directories on a SAN.  I’m not talking about a virtual disk on a SAN, I mean the SAN is attached directly to the VM. This way, you get the fast disk IO from your SAN without the dealing with the disk IO of the virtual machine.  This also makes it easier to allocate space for the machine and it makes it easy to share the same server directories between VMs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-224898019931053333?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/224898019931053333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2009/12/arcgis-server-and-virtualization.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/224898019931053333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/224898019931053333'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2009/12/arcgis-server-and-virtualization.html' title='ArcGIS Server and Virtualization'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-3476371202515535387</id><published>2009-08-13T10:48:00.000-07:00</published><updated>2009-08-13T10:54:45.944-07:00</updated><title type='text'>ArcGIS Server installed on a domain controller</title><content type='html'>Several folks have asked me if it is ok to install ArcGIS Server on a domain controller.  The simple answer is no.  The main reason is the GIS server uses local groups to control access and a domain controller does not allow for local groups. Another really good reason is that Microsoft says that you shouldn't use a domain controller as a server for IIS or otherwise.&lt;br /&gt;See:&lt;br /&gt;&lt;a href="http://www.microsoft.com/windows/windows2000/en/server/iis/htm/core/iisckl.htm"&gt;http://www.microsoft.com/windows/windows2000/en/server/iis/htm/core/iisckl.htm&lt;/a&gt; (under specifically Do not use PDC as a server)&lt;br /&gt;And&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/3a0742c4-f45a-4504-a232-83dd085bcfb3.mspx?mfr=true"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/3a0742c4-f45a-4504-a232-83dd085bcfb3.mspx?mfr=true&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-3476371202515535387?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/3476371202515535387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2009/08/arcgis-server-installed-on-domain.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/3476371202515535387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/3476371202515535387'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2009/08/arcgis-server-installed-on-domain.html' title='ArcGIS Server installed on a domain controller'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-2383080042958709068</id><published>2009-07-07T09:26:00.000-07:00</published><updated>2009-07-07T13:41:18.106-07:00</updated><title type='text'>Image compression for Ortho map cache</title><content type='html'>I took a minute today to analyze how much JPEG compression is appropriate for cached map services (ArcGIS Server) that are displaying an aerial photo. With JPEG compression you can set the quality between 1 and 100.  100 is more quality but less compression.  Wikipedia actually has a great &lt;a href="http://en.wikipedia.org/wiki/JPEG#Sample_photographs"&gt;example of this&lt;/a&gt;. All of this stuff also applies to creating a map cache for imagery. So I set up a little test to see what the difference is between JPEG 90 and JPEG 55.  I used 2008 orthophotography imagery for Hamilton county Indiana.  I cached the map using the Bing Maps / Google Maps tiling scheme.  Then I added a scale (1:575) on the bottom to build the cache down to the resolution of the 6 inch imagery.  I figure this is what most people would do to get their full raster resolution in the map cache.  The cache took a little over 9 hours to create for both services (2x3.59 Ghz CPU's).  The first big difference was the size:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JPEG 90: 32.8 GB&lt;/li&gt;&lt;li&gt;JPEG 55: 15.1 GB&lt;/li&gt;&lt;/ul&gt;So JPEG 55 is about half the size of JPEG 90.  That means that it will download about twice as fast in a web browser.  Of course this is only part of the overall performance of the application but still it is pretty significant.  Now what about the quality?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 90 at small scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_l9L13sbF6Sw/SlOsOqUuQvI/AAAAAAAAABQ/zuS6b62sIio/s320/SmallScale90.jpg" alt="" id="BLOGGER_PHOTO_ID_5355813749753004786" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 55 at small scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_l9L13sbF6Sw/SlOtHI7zXII/AAAAAAAAABY/p4540deUJE8/s320/SmallScale55.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 90 at medium scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_l9L13sbF6Sw/SlOtzyvVpvI/AAAAAAAAABg/A-Y7WckrvZg/s320/MiddleScale90.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 55 at medium scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_l9L13sbF6Sw/SlOuHOMBcoI/AAAAAAAAABo/I7zQPvA_NX8/s320/MiddleScale55.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 90 at large scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_l9L13sbF6Sw/SlOuRSHhTnI/AAAAAAAAABw/OvlHM_FiDLw/s320/LargeScale90.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JPEG 55 at large scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_l9L13sbF6Sw/SlOuZbNu4TI/AAAAAAAAAB4/qfvExlNogek/s320/LargeScale55.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For my money the decision is pretty easy. JPEG 55 is half the size and very close on quality.  You should certainly test this out when building your own cache though.  Also, this is assuming there is no vector data in the map.  When you have vectors in your map you need to go with JPEG 90 to keep the lines crisp.  Or a better option would be to seperate the vectors into their own service and draw them on top of the ortho.  This way you could use PNG 8 for the vector and JPEG 55 for the raster and get the best of both worlds.  You can see that google maps is even doing this with their image service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-2383080042958709068?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/2383080042958709068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2009/07/image-compression-for-ortho-map-cache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/2383080042958709068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/2383080042958709068'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2009/07/image-compression-for-ortho-map-cache.html' title='Image compression for Ortho map cache'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_l9L13sbF6Sw/SlOsOqUuQvI/AAAAAAAAABQ/zuS6b62sIio/s72-c/SmallScale90.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973073625377724620.post-1524041248530036684</id><published>2009-07-01T08:03:00.000-07:00</published><updated>2009-07-01T08:36:46.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project ArcGIS Server performance coordinate system'/><title type='text'>ArcGIS Server and map service projection on the fly</title><content type='html'>With ArcGIS 9.3.1 and the "Analyze Map" tool on the Map Service Publishing toolbar folks are realizing that projection on the fly can have a huge impact on map service performance. This leads people to think that maybe they need to project all of their data to WGS 84 or WGS 84 Web Mercator to get the best performance in their map services. This blog discusses projection on the fly as it pertains to performance for MXD or MSD based map services.&lt;br /&gt;&lt;br /&gt;As a general rule I don’t think you need to projecting everything to WGS84 (or whatever coordinate system you are mashing up with). Map services do perform best when there is no projection on the fly happening in the MXD / MSD. But there are two places that projection on the fly can happen: within the MXD/MSD and within the map service. When you do projection on the fly within the MXD/MSD you are doing this projection on every layer in the map on every map service request. This is a lot of work and this can have a big impact on performance. When you do projection on the fly in the map service you are projecting the resulting map. This projection happens once for the entire map per request and is therefore much faster than the MXD/MSD projection on the fly.&lt;br /&gt;&lt;br /&gt;When you have a dynamic map service who's map is using UTM (or some other local CS), it will automatically project on the fly to other map services in your application. So if you are using a WGS 84 base map from ArcGIS Online, your dynamic UTM service will overlay just fine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance tip: with dynamic services, set the projection of your map to the same projection as your data.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This map service projection on the fly, does not work with cached map services. So for those map services that you are going to cache (all base maps and some of your operational layers), you need to change the projection of the map to the projection of the other services you are going to mash up with (e.g. WGS 84 or WGS 84 web mercator). In this case you would pay the price for projecting on the fly within the MXD/MSD. This would slow down your cache creation but you would get the great performance of a cached map service on each map service request. If you are building a very large cached map service, you should probably consider extracting your data to a file geodatabase just for the cache creation. A local (to the GIS server) file geodatabase is going to give you your best performance for cache creation. When you create this copy of the data for cache creation, you can project it to the coordinate system of your map service (e.g. WGS 84). The best tool for doing this is the Extract Data Wizard. Check out “Copying a geodatabase using the Extract Data Wizard in ArcMap” here: &lt;a href="http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Methods_for_copying_geodatabases"&gt;http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Methods_for_copying_geodatabases&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is info on extracting data to a different coordinate system.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.esri.com/index.cfm?fa=knowledgebase.techArticles.articleShow&amp;amp;d=34129"&gt;http://support.esri.com/index.cfm?fa=knowledgebase.techArticles.articleShow&amp;amp;d=34129&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Extract Data wizard is a great tool for this because it can create a copy of your map document that uses the extracted data.&lt;br /&gt;&lt;br /&gt;In summary, store your data in the coordinate system that makes the most sense for your data maintenance, management, and analysis. Your map services can use this data to make fast maps in any coordinate system. One final curve ball is that ArcGIS Online will be moving to WGS 84 Web Mercator later in 2009 (see the &lt;a href="http://blogs.esri.com/Support/blogs/arcgisonline/archive/2009/05/06/arcgis-online-map-services-migrating-to-microsoft-virtual-earth-google-maps-tiling-scheme.aspx"&gt;ArcGIS Online blog &lt;/a&gt;for more information ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973073625377724620-1524041248530036684?l=gistom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gistom.blogspot.com/feeds/1524041248530036684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gistom.blogspot.com/2009/07/arcgis-server-and-map-service.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1524041248530036684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973073625377724620/posts/default/1524041248530036684'/><link rel='alternate' type='text/html' href='http://gistom.blogspot.com/2009/07/arcgis-server-and-map-service.html' title='ArcGIS Server and map service projection on the fly'/><author><name>Tom Brenneman</name><uri>http://www.blogger.com/profile/07545519806709338135</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_l9L13sbF6Sw/SkuFpWNWOnI/AAAAAAAAAAM/2FkGTnglKic/S220/DSC03713.JPG'/></author><thr:total>14</thr:total></entry></feed>
