In looking at the performance of the Citrix Storefront Server, one of the thing I want is to understand what Storefront is doing at each stage of a session life cycle. There are two session-types that I’m curious about, a web browser based connection and a PNA connection. I’m going to examine a PNA based connection in this post. See this post for a browser based examination.
Using my powershell script to simulate a user connection I put ‘pauses’ between each stage. I then setup Perfmon to capture counters from the following objects:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
Citrix Dazzle Resources Controller\Image Response Whole Body Calls / second Citrix Dazzle Resources Controller\Image Response Whole Body Average Time (Microseconds) Citrix Dazzle Resources Controller\List Sessions Whole Body Calls / second Citrix Dazzle Resources Controller\List Sessions Whole Body Average Time (Microseconds) Citrix Dazzle Resources Controller\List Whole Body Calls / second Citrix Dazzle Resources Controller\List Whole Body Average Time (Microseconds) Citrix Dazzle Resources Controller\ListWithoutAutoProvision Whole Body Calls / second Citrix Dazzle Resources Controller\ListWithoutAutoProvision Whole Body Average Time (Microseconds) Citrix Dazzle Resources Controller\Update Resources Image Cache Calls / second Citrix Dazzle Resources Controller\Update Resources Image Cache Average Time (Microseconds) Citrix Delegated Explicit Authentication\Authenticate Calls / second Citrix Delegated Explicit Authentication\Authenticate Average Time (Microseconds) Citrix Delegated Kerberos Authentication\Authenticate Calls / second Citrix Delegated Kerberos Authentication\Authenticate Average Time (Microseconds) Citrix Delivery Services Web Application(authservice:tokenservices:post:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(authservice:tokenservices:post:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(citrixfederationauthentication:authenticate:post:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(citrixfederationauthentication:authenticate:post:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(dazzleresources:launchica:post:_citrix_store)\Controller Action Calls / second Citrix Delivery Services Web Application(dazzleresources:launchica:post:_citrix_store)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(dazzleresources:list:get:_citrix_store)\Controller Action Calls / second Citrix Delivery Services Web Application(dazzleresources:list:get:_citrix_store)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(endpoints:endpoints:get:_agservices)\Controller Action Calls / second Citrix Delivery Services Web Application(endpoints:endpoints:get:_agservices)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_configuration)\Controller Action Calls / second Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_configuration)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_roaming)\Controller Action Calls / second Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_roaming)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_store)\Controller Action Calls / second Citrix Delivery Services Web Application(endpoints:endpoints:get:_citrix_store)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(protocols:choices:post:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(protocols:choices:post:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(selfserviceaccountmanagement:allowselfserviceaccountmanagement:get:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(selfserviceaccountmanagement:allowselfserviceaccountmanagement:get:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Delivery Services Web Application(tokenvalidation:tokenvalidation:get:_citrix_authentication)\Controller Action Calls / second Citrix Delivery Services Web Application(tokenvalidation:tokenvalidation:get:_citrix_authentication)\Controller Action Average Time (Microseconds) Citrix Receiver for Web\Get Ica file Calls / second Citrix Receiver for Web\Get Ica file Average Time (Microseconds) Citrix Receiver for Web\Get icon Calls / second Citrix Receiver for Web\Get icon Average Time (Microseconds) Citrix Receiver for Web\Get launch status Calls / second Citrix Receiver for Web\Get launch status Average Time (Microseconds) Citrix Receiver for Web\List resources Calls / second Citrix Receiver for Web\List resources Average Time (Microseconds) Citrix Receiver for Web\Login attempts Calls / second Citrix Receiver for Web\Login attempts Average Time (Microseconds) Citrix Resource Subscription\Dispose Calls / second Citrix Resource Subscription\Dispose Average Time (Microseconds) Citrix Resources Common\Find all resources Calls / second Citrix Resources Common\Find all resources Average Time (Microseconds) Citrix Resources Common\Find resource by id Calls / second Citrix Resources Common\Find resource by id Average Time (Microseconds) Citrix Resources Common\ICA Launch Calls / second Citrix Resources Common\ICA Launch Average Time (Microseconds) Citrix Xml Service Communication(10.10.10.11)\Network Traffic Calls / second Citrix Xml Service Communication(10.10.10.11)\Network Traffic Average Time (Microseconds) Citrix Xml Service Communication(10.10.10.12)\Network Traffic Calls / second Citrix Xml Service Communication(10.10.10.12)\Network Traffic Average Time (Microseconds) Citrix Xml Service Communication(10.10.10.13)\Network Traffic Calls / second Citrix Xml Service Communication(10.10.10.13)\Network Traffic Average Time (Microseconds) Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Calls / second Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Average Time (Microseconds) Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Calls / second Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Average Time (Microseconds) |
$stage = “Client Configuration”
$store + “config.xml”
So for a web browser based connection, I ‘connected’ to the site and saw nothing in the perf counters. Storefront does very little work for the initial connection.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd"> <NFuseProtocol version="4.6"> <RequestAppData> <Scope traverse="onelevel" type="PNFolder">$PRELAUNCH$</Scope> <DesiredDetails>permissions</DesiredDetails> <DesiredDetails>icon-info</DesiredDetails> <DesiredDetails>all</DesiredDetails> <ServerType>x</ServerType> <ServerType>win32</ServerType> <ClientType>ica30</ClientType> <ClientType>content</ClientType> <ClientName>PSStressTest</ClientName> <ClientAddress>10.10.10.10</ClientAddress> </RequestAppData> </NFuseProtocol> |
1 2 3 4 5 6 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd"> <NFuseProtocol version="5.8"> <ResponseAppData> </ResponseAppData> </NFuseProtocol> |
However, we do get perfmon counter data with this request:
Citrix Resource Subscription\Dispose Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Average Time (Microseconds) : 95,392
Citrix Resources Common\Find all resources Average Time (Microseconds) : 57,277
Citrix Resources Common\Find all resources Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Average Time (Microseconds) : 36,383
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 47,260
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 60,759
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Average Time (Microseconds) : 30,730
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Average Time (Microseconds) : 44,155
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version="1.0" encoding="UTF-8"?> <NFuseProtocol version="4.6"> <RequestAppData> <Scope traverse="onelevel" type="PNFolder" /> <DesiredDetails>permissions</DesiredDetails> <DesiredDetails>icon-info</DesiredDetails> <DesiredDetails>all</DesiredDetails> <ServerType>x</ServerType> <ServerType>win32</ServerType> <ClientType>ica30</ClientType> <ClientType>content</ClientType> <ClientName>PSStressTest</ClientName> <ClientAddress>10.10.10.10</ClientAddress> </RequestAppData> </NFuseProtocol> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd"> <NFuseProtocol version="5.8"> <ResponseAppData> <AppDataSet> <Scope traverse="onelevel" type="PNFolder"></Scope> <AppData type="app"> <InName>CTX:Microsoft Office - Word</InName> <FName>Microsoft Office - Word</FName> <Details> <Settings appisdisabled="false" appisdesktop="false"> <Folder>Office\Analyst</Folder> <Description>Microsoft Office - Word</Description> <WinWidth>0</WinWidth> <WinHeight>0</WinHeight> <WinColor>8</WinColor> <WinType>percent</WinType> <WinScale>95</WinScale> <SoundType minimum="false">none</SoundType> <VideoType minimum="false">none</VideoType> <Encryption minimum="false">basic</Encryption> <AppOnDesktop value="false"> </AppOnDesktop> <AppInStartmenu value="false"></AppInStartmenu> <PublisherName>CTX</PublisherName> <SSLEnabled>false</SSLEnabled> <RemoteAccessEnabled>false</RemoteAccessEnabled> </Settings> <Icon>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAEAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPPPPPIPPPPPPPPPPPPPPPPPPPPPPPPIIPPPPIHIIIIIPPPPPPPPPPPPPPPPPPPIIPPPPHHHIHIHIHIIIIIPPPPPPPPPPPPIIPPPPHHIIIIIIPIIIIIHIIIIIPPPPPPIIPPPIHHHIIIIIIPPPPPPIIIIHIPIPPPIIPPPIHHHIHIHIIPPPPIPPPPIPPPIPPPIIPPPIHHHIHIIIIPIPIPIIIPIIPIIPPPIIPPPIHHHIIHHHIIPIPIPIIIIIPIPPPPIIPPPIHHHHHIHHIIIIIIIIIPIIIIPPPPIIPPPIHHGHHHHHIIIIIIIIIIIIPIPPPPIIPPIHHHHGGGHHHHIIHIIHHIHHPIPPPPIIPPIHHHGHGGGHHHHHHHHHHHIHIIPPPPIIPPIHGHHGGGGGHHHHHHHHHHHHPIPPPPIIPPIEHGHGGGGGGEGGHHGHGHHIIIPPPPIIPPIBEEGEEEGGBBGGGGGGGHGIIIPPPPIIPPHEEEBGEEEBJEGGGGGGHGHIIPPPPPIIPPIHGEEEEEAJJEGGGGGGGGGIIIPPPPIIPIHIIIHHHEBJJEGGGGGGGHGIIPPPPPIIPPPIIIIIIBJJJAGGEGGGGGGAIPPPPPIIPPPPPPIIIHAJJJBHIHHGGGGBIIPPPPIIPPPPPPPPPIBJJJJBHIIIIIHBIIIPPPIIPPPPPPPPPIBJJJJJJBBBIBIBJIIHPPIIPPPPPPPPIIHAJJJJJJJJJJJJJJIIHPIIPPPPPPPIIIIIAJJJJJJJJJJJJJJIIHIIPPPPPPPIIIIPIBAJJJJJJJJJJJJJJBIIPPPPPPPIIIIIPPIBBBBJJJJJJJJJBIIIPPPPPPPPIIPPIPPPIIBHBHHBJJJBIPIIPPPPPPPPPPIIPIIIIIIIPPPBJBBPPPIIPPPPPPPPPPPPPPPPPPPPPPPBBHPPPPIIPPPPPPPPPPPPPPPPPPPPPPPAIPPPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII</Icon> <IconInfo> <IconType size="32" bpp="32" format="raw"> </IconType> <IconType size="16" bpp="32" format="raw"> </IconType> <IconType size="32" bpp="4" format="raw"> </IconType> </IconInfo> </Details> <SeqNo>1490021516</SeqNo> <ServerType>win32</ServerType> <ClientType>ica30</ClientType> </AppData> </AppDataSet> </ResponseAppData> </NFuseProtocol> |
Citrix Resource Subscription\Dispose Average Time (Microseconds) : 1
Citrix Resource Subscription\Dispose Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Average Time (Microseconds) : 88,473
Citrix Resources Common\Find all resources Average Time (Microseconds) : 6,314,583
Citrix Resources Common\Find all resources Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Average Time (Microseconds) : 42,697
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 37,653
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 64,622
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Average Time (Microseconds) : 125,629
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Average Time (Microseconds) : 191,408
POST data:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="UTF-8"?> <NFuseProtocol version="4.6"> <RequestAppData> <Scope traverse="onelevel" type="PNFolder" /> <DesiredDetails>icon-info</DesiredDetails> <ServerType>all</ServerType> <ClientType>ica30</ClientType> <ClientType>rade</ClientType> <ClientType>content</ClientType> <ClientName>PSStressTest</ClientName> <ClientAddress>10.10.10.10</ClientAddress> <Credentials> <UserName>trententtye</UserName> <Password encoding="ctx1">JJJHFTEBJKAKLSNVYRHABEHBDHBTTEJWUDBJLOLEO</Password> <Domain type="NT">BOTTHEORY.LOCAL</Domain></Credentials> <DesiredIconData size="32" bpp="4" format="raw" /> <DesiredIconData size="48" bpp="32" format="raw" /> <DesiredIconData size="32" bpp="32" format="raw" /> <DesiredIconData size="16" bpp="32" format="raw" /> <AppName>CTX:Microsoft Office - Word</AppName> </RequestAppData> </NFuseProtocol> |
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd"> <NFuseProtocol version="5.8"> <ResponseAppData> <AppDataSet> <Scope traverse="onelevel" type="PNFolder"></Scope> <AppData type="app"> <InName>CTX:Microsoft Office - Word</InName> <FName>Microsoft Office - Word</FName> <Details> <Settings appisdisabled="false" appisdesktop="false"> <Description>Microsoft Office - Word</Description> <WinWidth>0</WinWidth> <WinHeight>0</WinHeight> <WinColor>0</WinColor> <WinScale>0</WinScale> <VideoType minimum="false">none</VideoType> <AppOnDesktop value="false"> </AppOnDesktop> <AppInStartmenu value="false"></AppInStartmenu> <SSLEnabled>false</SSLEnabled> <RemoteAccessEnabled>false</RemoteAccessEnabled> </Settings> <IconInfo> <IconType size="32" bpp="4" format="raw"> </IconType> <IconType size="48" bpp="32" format="raw"> </IconType> <IconType size="32" bpp="32" format="raw"> </IconType> <IconType size="16" bpp="32" format="raw"> </IconType> </IconInfo> </Details> <IconData size="32" bpp="4" format="raw">////////////////AAAAAwAA3cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</IconData> <IconData size="48" bpp="32" format="raw">////////AAD///////8AAP///////wAA////////AAD///////8AAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</IconData> <IconData size="32" bpp="32" format="raw">////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</IconData> <IconData size="16" bpp="32" format="raw">//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</IconData> <SeqNo>1408469520</SeqNo> <ClientType>ica30</ClientType> </AppData> </AppDataSet> </ResponseAppData> </NFuseProtocol> |
And the Perfmon counter data:
Citrix Resource Subscription\Dispose Average Time (Microseconds) : 0.5
Citrix Resource Subscription\Dispose Calls / second : 2
Citrix Delegated Explicit Authentication\Authenticate Calls / second : 2
Citrix Delegated Explicit Authentication\Authenticate Average Time (Microseconds) : 140,062
Citrix Resources Common\Find all resources Average Time (Microseconds) : 219,619
Citrix Resources Common\Find all resources Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Calls / second : 1
Citrix Xml Service Communication(10.10.10.13)\Network Traffic Average Time (Microseconds) : 44,896
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 40,508
Citrix Xml Service Communication(10.10.10.14)\Network Traffic Average Time (Microseconds) : 36,124
Citrix Xml Service Communication(xenapp5.bottheory.local)\Network Traffic Average Time (Microseconds) : 127,686
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Average Time (Microseconds) : 165,869
I feel like I’m detecting a theme here…
Citrix Resource Subscription\Dispose Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Calls / second : 1
Citrix Delegated Explicit Authentication\Authenticate Average Time (Microseconds) : 88,206
Citrix Resources Common\Find resource by id Average Time (Microseconds) : 217,447
Citrix Xml Service Communication(xenapp65t.bottheory.local)\Network Traffic Average Time (Microseconds) : 142,010