DescartesResearch / TeaStore

A micro-service reference test application for model extraction, cloud management, energy efficiency, power prediction, single- and multi-tier auto-scaling
https://se.informatik.uni-wuerzburg.de
Apache License 2.0
119 stars 141 forks source link

Greater number of logged requests in Kieker Logs than actually sent #244

Open jtpgames opened 1 year ago

jtpgames commented 1 year ago

Dear Developers,

as part of my research, I am using the TeaStore as one of my case study applications. The logs generated by TeaStore play a critical role in my experiments. However, I have encountered inconsistent behavior in the logs, which has become a challenge for my research. I kindly seek assistance to address this issue.

I have observed that the number of two specific log entries IndexServlet.handleGETRequest and LoginServlet.handleGETRequest are greater than the number of requests I actually send via a load testing tool. However, this behavior only occurs, when I use a load intensity (I refer to the *.csv files you provide in your examples) greater than the low intensity load profile. I use locust and based on your example locustfile, have built my own version of it. You can find it here.

In the following I will show you log outputs to illustrate the issue:

Low intensity load profile

The load tester generates the following number of requests:

2464 total requests send,
200 GET index requests,
200 GET login page requests,
200 POST login requests,
200 POST login (logout) requests,
488 GET category requests,
488 GET product requests,
488 POST add to cart requests,
200 GET profile requests.

In the kieker logs, I find the following numbers of requests (I only show the relevant requests):

600 IndexServlet.handleGETRequest (three times the number of actually sent requests)
200 LoginServlet.handleGETRequest (correct; same amount as sent requests)
400 LoginActionServlet.handlePOSTRequest (this is fine, because login and logout use the same endpoint)

Summary: Number of IndexServlet.handleGETRequest is greater than the number of actually sent requests.

Medium load intensity load profile

The load tester generates the following number of requests:

25027 total requests send,
2000 GET index requests,
2000 GET login page requests,
2000 POST login requests,
2000 POST login (logout) requests,
5009 GET category requests,
5009 GET product requests,
5009 POST add to cart requests,
2000 GET profile requests.

In the kieker logs, I find the following numbers of requests (I only show the relevant requests):

6000 IndexServlet.handleGETRequest (three times the number of actually sent requests)
3800 LoginServlet.handleGETRequest (1800 requests more than actually sent requests)
4000 LoginActionServlet.handlePOSTRequest (this is fine, because login and logout use the same endpoint)

Summary

The number of IndexServlet.handleGETRequest is three times greater than the number of actually sent requests for both load intensity profiles. Although the number is too high, the behavior seems to be consistent.

However, the number of LoginServlet.handleGETRequest is almost twice the amount for the medium load intensity profile.

These observations, for both load intensity profiles, stay consistent between subsequent executions of the load test.

Misc

I use the following Vim Search Commands to count the number of log entries in the kieker logs.

%s/IndexServlet.handleGETRequest//gn
%s/LoginServlet.handleGETRequest//gn
%s/LoginActionServlet.handlePOSTRequest//gn

Attached, you find the respective log files. Logs.zip