This document replaces the outdated article with the ID 5265B and the title "Definition of the "wastatistics" Monitor Page Response Items".
The Intershop Webadapter (WA) provides runtime read access to most of its internal state information. If configured, it is delivered as a text page in response to a request http://<host>/INTERSHOP/wastatistics to the Intershop HTTP Server. The content of the generated page is explained in detail here.
SERVER_SOFTWARE:
Information to identify the hosting HTTP server.
CFLAGS:
The compiler flags used for building the WA. Provides detailed version and platform information.
IP:
An interface address of the HTTP server host and the port/protocol information. When sending the wastatistics request through a load-balancer, this allows to identify the WA, which actually generated the response.
PID:
Process-ID of the hosting webserver process. When running multiple HTTP server instances at one machine, this allows to correlate the "wastatistics" output with the correct per-process monitoring information from the OS.
RUNTIMEID:
The runtime ID identifies a shared configuration of webserver/webadapter processes/threads. This value helps to track restarts of the HTTP server and WA (runtime ID changes). It also helps to distinguish two or more webadapters using the same instance-id.
INITIALIZATION_TIME:
The time of the last HTTP server restart (runtime ID change).
SERVER_SOFTWARE=Apache/2 CFLAGS=-Wall -m64 -fPIC -D_REENTRANT -DLINUX -DIS_VERSION="1.0.17.1" -DIS_DATE="2020-07-02" -O -g IP=10.0.77.165:80 (http) PID=23532 RUNTIMEID=GEbBMTCQ2Qo/3DCkjbnURQ== INITIALIZATION_TIME=2020-11-16 10:54:34 CET
configID:
configuration version identifier; sent with all configuration service polling requests; evaluated by configuration service to respond either "unchanged" or the new configuration, including the new configID
poll:
seconds since last configuration service request
update:
seconds since last real configuration update (the configuration service really returned new data instead of the normal "unchanged" code)
CSPollError/propReadError:
Flags that an error occurred during the last attempt to poll the configuration service and/or to read the local property file.
In such an insane state, the WA will not process any request - configuration service and/or property file must be fixed. In parenthesis: the number of such total failure periods since last HTTP server startup.
polling: configID:1605520696114 poll:1169 update:54040 CSPollError:0 (0) propReadError:0 (0)
List of the configured configuration services (cs.url.#= properties). The currently used service is indicated by an asterisk.
configuration services: 0 10.0.77.165:10064/servlet/ConfigurationServlet * 1 10.0.77.165:10054/servlet/ConfigurationServlet
This is a list of all registered Intershop application servers (AS) with usage and load-balancing statistics. WA implements separate load-balancing for session-bound and session-less (single) requests. Each AS serves both types. Thus, there are two tables listing the same servers with separate statistics.
server
Host/port of the application server.
hash
CRC checksum of the server host/port string. This value is incorporated into session IDs to realize the session/server affinity.
tries
Number of quality registrations for this server. The counter is incremented whenever the server was chosen to process a request and a connect/read/write fails ("error penalty" registration) or a "200 OK, no X-Error" response is received (normal response time registration).
resp
Number of regular response time measure registrations for this server. (The total number of requests successfully responded by the server. Difference to "tries" is the number of failed attempts to communicate with the server.)
uptime
Seconds of uninterrupted registration of the server within the WA. The counter is reset when a server has disappeared from the configuration and appears again. It is also reset on Webserver/Webadapter restart.
last
Seconds since last response was successfully received from the server.
ms_s
Response time measures are averaged over few seconds before the average is used as filter input to compute the smoothed server response time ms_f. ms_s is the current average value in milliseconds. In normal operation, it is a quick and noisy indicator of the current server speed. Very large values (>10000) indicate that some connect/write/read "error penalties" were registered - normally due to server/network failure/overload.
ms_f
Smoothed server response time after applying the configured low pass filtering. This is the server quality indicator to be used for the load balancing algorithm. Very large values (>10000) indicate that some connect/write/read "error penalties" were registered - normally due to server/network failure/overload.
weight
Factor for each application server, used for weight based load balancing. More details can be found in Guide - Web Adapter Settings
WFS BOS JOB ...
One column for each server group of the cluster. Indicates the usage probability for the server within this server group. The probabilities are derived directly from the quality indicators ms_f according to the specification.
session: server hash tries resp uptime last ms_s ms_f weight BOS JOB WFS 0 10.0.77.165:10054 a73d16d8 1147 1147 83046 1169 18 1633 1 0.8217 0.8217 0.8217 1 10.0.77.165:10064 489d74fa 972 972 83080 2717 113 7524 1 0.1783 0.1783 0.1783 single: server hash tries resp uptime last ms_s ms_f weight BOS JOB WFS 0 10.0.77.165:10054 a73d16d8 1021 1021 83046 2383 2 2 1 0.4646 0.4646 0.4646 1 10.0.77.165:10064 489d74fa 1283 1283 83080 2383 1 2 1 0.5354 0.5354 0.5354
This is a list of all sites currently known to the WA, including current cache setup and usage statistics.
site
site name
status
site status
pipelineCacheID
currently used directory for the pipeline response cache of this site; changes when a "invalidate complete cache" is performed
on
flags whether the site's pipeline response cache is enabled(1) or disabled(0); set via SMC and/or channel preferences
requests
total number of pipeline requests for this site
hits
number of cache responses to pipeline requests
staticCacheID
currently used directory for the static file cache of this site; changes when a "invalidate complete cache" is performed
interval
cache lifetime for all static files of the site in seconds (0 for disabled); set via SMC and/or channel preferences
requests
total number of static requests for this site
hits
number of cache responses to static requests
sites: site status pipelineCacheID on requests hits staticCacheID interval requests hits 0 ContactCenter live 1601282082571 1 0 0 1601282082571 86400 0 0 1 Myers-ShoppingLive-Site live 1601282164883 1 0 0 1601282164883 86400 0 0 2 SLDSystem live 1604637140495 1 376 0 1604637140495 86400 57 35 3 SMC live 1604637154821 1 9 0 1604637154821 86400 80 61 4 TestEnterprise-Site live 1601282101262 1 0 0 1601282101262 86400 0 0 5 TestEnterprise-TestPartnerChannel-Site live 1601282125982 1 0 0 1601282125982 86400 0 0 6 TestEnterprise-TestSalesChannel-Site live 1601282117561 1 0 0 1601282117561 86400 0 0 7 TestEnterprise-TestSalesChannelWithBusinessStorefront-Site live 1601282125263 1 0 0 1601282125263 86400 0 0 8 TestSLDSystem live 1601281732567 1 0 0 1601281732567 86400 0 0 9 eTest live 1601281727782 1 0 0 1601281727782 86400 0 0 10 inSPIRED-ResellerChannel-Site live 1601282164209 1 0 0 1601282164209 86400 0 0 11 inSPIRED-Site live 1604637159659 1 1428 536 1604637159659 86400 1870 1256 12 inSPIRED-inTRONICS-Site live 1604312454599 1 705 265 1604312454600 86400 529 250 13 inSPIRED-inTRONICS_Business-Site live 1605549735432 0 403 0 1605549735432 0 1416 0 14 root live 1604637166641 1 0 0 1604637166641 86400 0 0
Global cache performance overview. Different cache operations are accounted (count) and the average duration of the last 10 such operations is measured (ms):
hit
response was searched in the cache, found and returned to client
miss
response was searched in the cache and not found
write
a cacheable response was received from AS and written into the cache.
remove
a non-cacheable response was received from AS and there are chances that a previous, cacheable version is still in the cache
pipeline response cache: count ms hit 802 3 miss 3358 0 write 277 0 remove 269 0 static file cache: count ms hit 1601 2 miss 932 0 write 886 0 remove 0 0
Counts how many requests were forwarded to the ASs in the last 1/10/60/1440 minutes and within the HTTP server uptime:
currently waiting
total number of requests currently blocked in an AS connect attempt or in the sleep interval between multiple attempts
without waiting
first connect attempt to the AS succeeded
given up's
no successful connect to an AS after as.maxtries attempts within as.maxwait seconds
waitings
second or later connect attempt to an AS succeeded
error responses
number of AS responses with:
socket I/O problems when sending the request or receiving the response (e.g. as.socket.timeout exceeded)
HTTP status code >= 400 (e.g. "404 Not Found" responses to INTERSHOP/static requests)
an "X-IS-Error" response header set (error pages from the Intershop platform)
mean number of retries
with "waitings" above > 0; the average number of connect attempts (without the first one) until success
request queue: currently waiting: 0 AS requests in the last minutes: minutes 1 10 60 1440 overall without waiting 0 0 299 4470 4470 given up's 0 0 0 0 0 waitings 0 0 0 0 0 error responses 0 0 0 47 47 mean number of retries n/a n/a n/a n/a n/a
Lists the current, effective property values as received from the configuration service, read from the local property file or set as fallback default.
properties: wastatus.defaultResponse=200 wsrp.initialSite=root vanity.pathinfo=/WFS/SLDSystem/-/-/-/URLMapping-Resolve servlet.allow.0=/SOAP servlet.allow.1=/WebService servlet.allow.2=/Axis2 servlet.allow.3=/broker requestlog.dir=/home/intershop1/a_responsive_1/eserver1/local/webadapter/log requestlog.instance.id= requestlog.enabled=true requestlog.flushinterval=10 requestlog.switchinterval=3600 requestlog.buffersize=500000 requestlog.includes=true requestlog.binary=true requestlog.sparse=true pagecache.static.enabled=true pagecache.pipeline.enabled=true pagecache.dir=/home/intershop1/a_responsive_1/eserver1/local/webadapter/pagecache pagecache.directoryTree=xx/xx/ pagecache.ignoreGetCacheControlHeaders=true pagecache.ignorePostCacheControlHeaders=true pagecache.pageRegenerationPhase=30 pagecache.pageRegenerationMaxage=300 pagecache.allowAuthorization=true pagecache.monitor=true cs.poll.interval=10 cs.poll.maxwait=60 cs.poll.maxtries=5 cs.connect.timeout=15 cs.socket.timeout=15 as.maxwait=120 as.maxtries=40 as.connect.keepalive=false as.connect.timeout=10 as.socket.timeout=300 as.hash.key=42 as.monitor=false session.skipForUserAgent.0=intershop webadapter agent session.skipByRedirect=false request.remoteAddrHeader=X-Forwarded-For sslbox.webserver.port= sslbox.public.port=443 include.maxdepth=16 stream.buffersize=100000 post.maxsize=0 post.cachesize=16000 cicevent.enabled=false cicevent.removeTags=true session.ttl=21600 session.bindToUserAgent=false session.forwardInUrl=false session.tracking.mode=CookieOnly session.SIDCookie=Set-Cookie: sid=%v; Path=/; Version=1; HttpOnly session.PGIDCookie=Set-Cookie: pgid-%s=%v; Path=/; Version=1; HttpOnly ctl.commandPrefix=wa_ ctl.trace.markupStyle=text-align:left; margin-left:1ex; font-family:Lucidatypewriter,Fixed,monospace; font-size:small; word-wrap:normal; session.lb.filterperiod=120 (samplePeriod=15 filterCoeff=0.157) session.lb.qualityweight=1 request.lb.filterperiod=30 (samplePeriod=3 filterCoeff=0.129) request.lb.qualityweight=1 lb.initialTimeFactor=5.0 lb.connectPenaltyFactor=1.5 monitor.instance.id=10.0.77.165 monitor.pushinterval=0 monitor.propertyInterval=600 monitor.pathinfo=/BOS/SMC/-/-/-/WebadapterStatistics-Push errorpage.dir=/home/intershop1/a_responsive_1/eserver1/local/webadapter/public errorlog.file=/home/intershop1/a_responsive_1/eserver1/local/webadapter/log/webadapter.log errorlog.level.log=INFO errorlog.level.fileutils=INFO errorlog.level.utils=INFO errorlog.level.socket=INFO errorlog.level.response=INFO errorlog.level.webserver=INFO errorlog.level.httpexternal=INFO errorlog.level.httpinternal=INFO errorlog.level.main=INFO errorlog.level.request=INFO errorlog.level.properties=INFO errorlog.level.session=INFO errorlog.level.pagecache=INFO errorlog.level.postprocess=INFO errorlog.level.config=INFO intershop.urlmapping.pipeline.webadapter=/INTERSHOP/web intershop.urlmapping.pipeline.appserver=/servlet/Beehive intershop.urlmapping.static.webadapter=/INTERSHOP/static intershop.urlmapping.static.appserver=/servlet/Resource intershop.urlmapping.servlet.webadapter=/INTERSHOP/servlet intershop.urlmapping.servlet.appserver=/servlet intershop.urlmapping.rest.webadapter=/INTERSHOP/rest intershop.urlmapping.rest.appserver=/servlet/REST intershop.urlmapping.dist.webadapter=/INTERSHOP/dist intershop.urlmapping.dist.appserver=/servlet/Dist intershop.urlmapping.wsrp.webadapter=/wsrp intershop.urlmapping.wsrp.appserver=/servlet/WSRP intershop.urlmapping.wastatus.webadapter=/INTERSHOP/wastatus intershop.urlmapping.wastatistics.webadapter=/INTERSHOP/wastatistics intershop.urlmapping.csrf.appserver=/servlet/CSRF webadapterAgent.pageCache.keywords.inSPIRED-inTRONICS-Site.enabled=true
This section lists all pending AS requests with some state information. This is only available when "as.monitor = true" is configured and when there are requests that are currently processed.
total/connect/process/sleep:
When forwarding requests, WA tries to connect to the AS and processes the request (send request/receive response) on success or sleeps for a while and tries the connect again on error.
These values counts how many requests are waiting in total and how many in which state.
id
some "uniqe request id"; used to track a particular request in the list
tot
total number of seconds since arrival of the request
try
number of attempts
state
see above
sec
number of seconds since "state" was reached
request
indicates the server and the URL; URL is truncated to about 200 characters
Responses can be read as follows:
000101 2 1 connect 2 10.0.77.165:10064/servlet/Beehive/...
Request came in 2 seconds ago; is still in its first connect attempt
000102 90 8 sleep 1 10.0.77.165:10054/servlet/Beehive/...
Request came in 90 seconds ago; failed 7 times to connect and sleeps since 1 second (before doing its next configuration query and connect attempt, possibly to some other fail-over server then)
000103 65 5 process 7 10.0.77.165:10064/servlet/Beehive/...
Request came in 65 seconds ago; managed to get an AS connection in the 5th attempt 7 seconds ago; WA waits for respose
pending AS requests: total: 2 connect: 0 process: 2 sleep: 0 id tot try state sec request 000101 2 1 process 2 10.0.77.165:10064/servlet/Beehive/WFS/inSPIRED-inTRONICS-Site/en_US/-/USD/Default-Start 000102 1 1 process 1 10.0.77.165:10054/servlet/Beehive/WFS/inSPIRED-inTRONICS-Site/en_US/-/USD/Default-Start
There are several limitations in the request registration to keep the implementation simple and local to the main queuing loop:
• "streamed" AS responses are unregistered once the response headers were received, not after finishing the request.
• Requests could be blocked in configuration service polling. This state is not explicitly indicated in the list. They are not present (first configuration query) or listed as "sleep" (configuration query within a retry).
• "process" gives no indication whether WA is sending the request or awaiting or reading the response.
Recent Intershop versions are already prepared to show the wastatistics monitor, but the access is restricted by IP. It can be reached only locally. The IP range can be changed in the $IS_HOME/webadapter/httpd-webadatper.conf file.
<LocationMatch /wastatistics> Require ip 127.0.0.1/32 </LocationMatch>
The wastatistics monitor URL is:
http://<host>/INTERSHOP/wastatistics[?<auto-refresh-seconds>]
To enable detailed request queue monitoring, set as.monitor = true
in webadapter.properties.
When using this feature with an Apache HTTP Server with > 1000 processes or if shared memory problems are reported in <eserver>/webadapter/log/webadapter.log, increase shm.size in <eserver>/webadapter/webadapter.properties.
To disable detailed page cache monitoring, set pagecache.monitor = false
in webadapter.properties.
The cache request/hit counters are no longer incremented then. The reduced self-monitoring overhead may improve the throughput under very special and extreme conditions.