processone / tsung

Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.
http://www.process-one.net/en/tsung/
GNU General Public License v2.0
2.52k stars 404 forks source link

The load is not generated from mulitple client instances as expected in distributed environment #381

Closed MoorthiRaj closed 3 years ago

MoorthiRaj commented 3 years ago

Hello,

I am using Tsung tool to perform XMPP load testing in distributed environment and I am not getting the load from each client properly.

I have three client machines and I increased the open files, max user process and the file max values already. Also I can able to run like 30k concurrent users from single machine.

Below is the client configuration which I given in my script,

    <client host="localhost" maxusers="64000" use_controller_vm="true">
    <ip value="10.xxx.x.xx"/>
    </client>

    <client host="tsung1" maxusers="64000" use_controller_vm="true">
    <ip value="10.xxx.x.xx"/>
    </client>

    <client host="tsung2" maxusers="64000" use_controller_vm="true">
    <ip value="10.xxx.x.xx"/>
    </client>

The load progressed as,

 <load>
<arrivalphase phase="1" duration="10" unit="second">
    <users maxnumber="60000" arrivalrate="100" unit="second"/>
</arrivalphase>
</load>

The jabber details,

I get the username and password from a CSV file to login to the application using .

   <setdynvars sourcetype="file" fileid="users" delimiter="," order="iter">
       <var name="username"/>
       <var name="password"/>
     </setdynvars>

Environment Details:

Following is the tsung controller log,

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_mon:(5:<0.102.0>) Starting tsung clients on hosts: [tsung2, tsung1, localhost]

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_config_server:(5:<0.101.0>) Start a launcher on the controller beam localhost

=INFO REPORT==== 23-Sep-2020::14:40:53 === alarm_handler: {set,{{disk_almost_full,"/snap/core18/1885"},[]}}

=INFO REPORT==== 23-Sep-2020::14:40:53 === alarm_handler: {set,{{disk_almost_full,"/snap/google-cloud-sdk/151"},[]}}

=INFO REPORT==== 23-Sep-2020::14:40:53 === alarm_handler: {set,{{disk_almost_full,"/snap/snapd/8790"},[]}}

=INFO REPORT==== 23-Sep-2020::14:40:53 === alarm_handler: {set,{{disk_almost_full,"/snap/google-cloud-sdk/150"},[]}}

=INFO REPORT==== 23-Sep-2020::14:40:53 === alarm_handler: {set,{{disk_almost_full,"/snap/snapd/9279"},[]}}

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_launcher_static:(5:<0.156.0>) Launch msg receive ("localhost")

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_launcher:(5:<0.157.0>) Launch msg receive ("localhost")

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_user_server:(5:<0.116.0>) Reset offline and online lists (maxid=60000)

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_config_server:(5:<0.158.0>) Remote beam started on node tsung1@tsung2

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_config_server:(5:<0.159.0>) Remote beam started on node tsung2@tsung1

=INFO REPORT==== 23-Sep-2020::14:40:53 === ts_config_server:(5:<0.101.0>) All remote beams started, syncing

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_config_server:(5:<0.101.0>) Undefined ports_range config

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_config_server:(5:<0.101.0>) New arrival phase 1 for client "localhost" (last ? false): will start 333 users

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_launcher:(5:<0.157.0>) Expected duration of first phase: 10.0 sec (333 users)

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_config_server:(5:<0.101.0>) New arrival phase 1 for client "tsung2" (last ? false): will start 333 users

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_launcher:(5:<0.157.0>) Activate launcher (333 users) in 1000 msec

=INFO REPORT==== 23-Sep-2020::14:40:54 === ts_config_server:(5:<0.101.0>) New arrival phase 1 for client "tsung1" (last ? true): will start 333 users

=INFO REPORT==== 23-Sep-2020::14:41:05 === ts_launcher:(5:<0.157.0>) This was the last phase, wait for connected users to finish their session

Can anyone please look into this issue and help on the same.

Note: Last year December, I achieved the distribution load testing with 100k users in CentOS.

MoorthiRaj commented 3 years ago

Hi,

I found the issue why the load not created properly in each client. It is because in the script I have provided the duration of the load incorrectly.

If you see below, the duration is '10' but the unit is 'second'. So Tsung cannot able to create much load in 10seconds.

So I am closing this issue. :-)