Several factors affect Client Web Service, CWS, performance in addition to the provider scripts themselves.
Make sure that
- The server running the Client Web Service web requires a minimum of two virtual CPUs, but we recommend a lot more, especially for busy stores.
- The service account for the application pool used for Client Web Service should not be a member of Local Admins, since that will slow PowerShell down considerably.
- The Client Web Service DLLs should not be unloaded when the application pool is refreshed (see below).
Configure Application Initialization for Client Web Service
There is a feature for IIS in Windows Server 2012 and later that keeps all DLLs loaded and the worker process active, so the first user in the morning or after lunch won't get the loading penalty.
- Install the "Application Initialization" feature for IIS 8 (Windows Server 2012) or higher.
- Make sure you're using a separate application pool for the ZervicePoint Client Web Service site.
- Start IIS Manager, click
<ServerName>at the top of the tree and then Configuration Editor.
- Choose section "system.applicationHost/applicationPools" and click "(Collection)"/"..." to get a list of application pools. Choose the application pool for Client Web Service.
- Set "startMode" to "AlwaysRunning" and close the window and click "Apply"
- Now w3wp.exe should always be started.
- In IIS Manager, click
<ServerName>again and the Configuration Editor.
- Choose section "system.applicationHost/sites and click "(Collection"/"..." to get a list of sites. Choose the ZervicePoint Client Web Service site and click the "(Collection"/"...") property.
- Click on the only item in the list and set "preloadEnabled" to "True", "path" to "/" and "enabledProtocols" to "https". Close the window and click "Apply".
- This makes sure all needed DLLs are compiled and preloaded.