2

Here is performance under load graph (each virtual user performs the same set of operations/transactions):

enter image description here

From 5th minute (about 30 Vusers) number of transactions stops to grow (but number of users continues growing). Transaction response time increases from that moment.

I want to prove that the transaction time increases because of server limitations but not because of network bandwidth.

So I made this test from 3 machines with 90 users (30 users/PC) and with 60 users (20 users/PC). The breaking point was the same - 30 users overall. Is it sufficient technique to prove that limitation is on the server side?

It is supposed that 20 users (on each machine) does not exceed (hypothetical) channel bandwidth limit of 30 users.

  • To me that would be enough to provide server side limitations, simply because you are seeing the same result with a difference in threads. Have you ever looking into a server monitoring service? like Nagios? it can be quite helpful so you can collect the data you need to prove things like this. – DEnumber50 Nov 30 '16 at 16:40
  • It's hard to say without knowing the exact architecture. If you want to exclude the network and any layer in between, then setup a simple http server without any logic and run a load test. If the result shows a linear relationship between the response time and the number of users, then you can reliably assume that the network is not involved in the limitation. – Florent B. Nov 30 '16 at 17:15
  • @DEnumber50, you are right, as a prove there is an error like Please see the server log entries at that time for more details. with greater quantity of Vusers. – Ivan Gerasimenko Dec 2 '16 at 8:10
  • @FlorentB., saying a simple http server without any logic do you mean set up http server on local machine where I execute load tests? – Ivan Gerasimenko Dec 2 '16 at 8:11
  • @Ivan Gerasimenko, I was referring to the machine hosting the app (not the local machine). This way you'll be able to see how the network behave under load and it will give you a baseline for the results. Here's a simple example with nodejs: nodejs.org/en/about – Florent B. Dec 2 '16 at 16:00
1

Client side performance compared with server side performance is the best way to do this. It may take more time, but if you utilize a client side performance tool and prove that the application is loading and functioning in short timeframe and that the majority of the wait time is waiting on server side communications then it proves that it's server side and not client side. If you are trying to isolate network vs. server you take the similar approach and monitor the server itself to get server processing metrics. The leftover after the client/server metrics points to the network itself instead of the application. There are various tools for this that will work. I assume you are utilizing a tool to capture what you have for the server part already. Here are a few sites that list some other tools for various types of capturing:

http://taligarsiel.com/ClientSidePerformance.html

https://samsaffron.com/archive/2012/03/23/sam-s-ultimate-web-performance-tools-and-resources

1

I'd say no; you've shown that the issue isn't related to the client machine specifically, but that doesn't eliminate the network. There may be a bottleneck between the client and the server, such as a congested switch port. You really need to control all parts of your test environment, and isolate them from the rest of the world. It isn't clear to me you've done this.

  • Good idea about congested switch port. As I see there is only one way to eliminate network - to run load tests right on the server. – Ivan Gerasimenko Mar 7 '17 at 7:09
  • If you can run them directly on the server to eliminate the network, then I'd still suggest doing the client side performance analysis to subtract from your overall server side numbers. That will show exact client/server breakdown. Then you can still project the network numbers by just running it over the network and getting the difference from the 2 runs. – mutt Mar 7 '17 at 15:27
  • That's assuming that the server can handle the load of the server and the clients. You'd need to measure CPU utilization, I/O usage, and so on. If the server is virtualized, things will get more complicated, but then again, you could set up clients on the underlying hardware. – Kevin McKenzie Mar 8 '17 at 16:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.