Socket Pooling.
In StoreFront we need to configgure socket polling in the config files, while in Web Interface we could configure this in the console.
Storefront maintaines a pool of sockets instead of creating a socket each time a new user connects, when enabled it will give a better performance for SSL traffic.
To change this, edit C:inetpubwwwrootCitrix<STORE>web.config (as Administrator) and find:
pooledSockets="off"
Change “off” to “on”.
When finished, save and reset IIS.
IISReset
NOTE: Make sure you change this on the “primary” StoreFront Member and replicate changes.
http://support.citrix.com/proddocs/topic/dws-storefront-26/dws-configure-conf-socket.html
Application Initialization
In IIS 8 and up (Windows Server 2012) there is a feature called “AlwaysRunning” on the application pools. When active an application pool is loaded after a restart, before it was loaded when the first user tried to login. This could take a long time. This option can be set in the IIS GUI, default application pool settings..
For IIS 7.5 (Server 2008 R2) is this setting also available (not in the GUI) but only after applying an update. You need to change the config files manually to enable the “AlwaysRunning” function.
Before continuing make sure you have a backup copy of all the files edited in this article.
Download and install the update from: http://www.iis.net/downloads/microsoft/application-initialization. Make sure to reboot after installation to continue.
open the file C:WindowsSystem32inetsrvconfigapplicationHost.config (as Administrator)
Find the following location: configuration / system.applicationHost / applicationPools
Add the following to each applicationpool:
startMode="AlwaysRunning"
- Citrix Delivery Services
- Citrix Delivery Services Authentication
- Citrix Delivery Services Resources
- Citrix Receiver for Web
Example:
<system.applicationHost> <applicationPools> <add name="DefaultAppPool" /> <add name="Classic .NET AppPool" managedPipelineMode="Classic" /> <add name="ASP.NET v4.0" managedRuntimeVersion="v4.0" /> <add name="ASP.NET v4.0 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" /> <add name="Citrix Delivery Services Authentication" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning"> <processModel identityType="ApplicationPoolIdentity" idleTimeout="00:00:00" /> <cpu limit="0" action="NoAction" resetInterval="00:00:00" /> </add> <add name="Citrix Delivery Services Resources" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning"> <processModel identityType="ApplicationPoolIdentity" idleTimeout="00:00:00" /> <cpu limit="0" action="NoAction" resetInterval="00:00:00" /> </add> <add name="Citrix Receiver for Web" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning"> <processModel identityType="ApplicationPoolIdentity" idleTimeout="00:00:00" /> <cpu limit="0" action="NoAction" resetInterval="00:00:00" /> <recycling> <periodicRestart time="00:00:00"> <schedule> <add value="02:00:00" /> </schedule> </periodicRestart> </recycling> </add>
Now find the following location: configuration / system.applicationHost / sites
Add the following to each site:
preloadEnabled="true"
- /AGServices (ony when NetScaler Gateway is configured)
- /Citrix/Authentication
- /Citrix/Roaming
- /Citrix/<STORE>
- /Citrix/<STORE>Web
- /Citrix/PNAgent
Example:
<sites> <site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%inetpubwwwroot" /> </application> <application path="/Citrix/Authentication" applicationPool="Citrix Delivery Services Authentication" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootCitrixAuthentication" /> </application> <application path="/Citrix/Roaming" applicationPool="Citrix Delivery Services Resources" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootCitrixRoaming" /> </application> <application path="/AGServices" applicationPool="Citrix Delivery Services Resources" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootAGServices" /> </application> <application path="/Citrix/Store" applicationPool="Citrix Delivery Services Resources" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootCitrixStore" /> </application> <application path="/Citrix/PNAgent" applicationPool="Citrix Delivery Services Resources" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootCitrixPNAgent" /> </application> <application path="/Citrix/StoreWeb" applicationPool="Citrix Receiver for Web" preloadEnabled="true"> <virtualDirectory path="/" physicalPath="C:inetpubwwwrootCitrixStoreWeb" /> <virtualDirectory path="/clients" physicalPath="C:Program FilesCitrixReceiver StoreFrontReceiver Clients" /> </application>
When finished, save and reset IIS, make sure the service is started and no errors are visible in the Windows Event Viewer.
IISReset
NOTE: Make sure you change this on each StoreFront Member.
Only edit the following on the primary StoreFront server!
Now edit each of the following web.config-files:
- C:inetpubwwwrootAGServicesweb.config
- C:inetpubwwwrootCitrixAuthenticationweb.config
- C:inetpubwwwrootCitrixPNAgentweb.config
- C:inetpubwwwrootCitrixRoamingweb.config
- C:inetpubwwwrootCitrix<STORE>web.config
Add to the section: / configuration / system.webServer
<applicationInitialization skipManagedModules="true"> <add initializationPage="/endpoints/v1"/> </applicationInitialization>
Edit each “StoreWeb” web.config-file
- C:inetpubwwwrootCitrix<STORE>Webweb.config
Add to the section: / configuration / system.webServer
<applicationInitialization skipManagedModules="true"> <add initializationPage="/Home/Index" /> </applicationInitialization>
When finished, test it before you propagate the changes to the other member(s).
NOTE: Don’t forget to propagate the changes when finished!
http://support.citrix.com/article/CTX137400
Disable CRL Check
CRL checking can add an extra delay while loading StoreFront to disable this edit the following files:
32-bit & 64-bit:
- C:WindowsMicrosoft.NETFrameworkv2.0.50727Aspnet.config
- C:WindowsMicrosoft.NETFrameworkv4.0.30319Aspnet.config
64-bit only:
- C:WindowsMicrosoft.NETFramework64v2.0.50727\Aspnet.config
- C:WindowsMicrosoft.NETFrameworkv4.0.30319Aspnet.config
Add to the section: / configuration / runtime
<generatePublisherEvidence enabled="false"/>
Example:
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <runtime> <legacyUnhandledExceptionPolicy enabled="false" /> <legacyImpersonationPolicy enabled="true"/> <alwaysFlowImpersonationPolicy enabled="false"/> <SymbolReadingPolicy enabled="1" /> <generatePublisherEvidence enabled="false"/> </runtime> </configuration>
When finished, save and reset IIS.
IISReset
NOTE: Make sure you change this on each StoreFront Member.
http://support.citrix.com/article/CTX139486
Good luck!