2015-07-28 13 views
1

Я тестирую Tigase с помощью Tsung.Испытание нагрузки Tigase с помощью Tsung. Конфликт регистрации 409

Мой первый тестовый скрипт будет регистрировать пользователей только на сервере Tigase. Но у меня есть странная проблема тиражирования запросов Tigase для некоторых идентификаторов пользователей.

Посмотрите на файл tsung.dump ниже.

Запрос регистра пользователя пользователя 43-tsung-user-2 повторяется дважды. В первый раз это успешно, во второй раз Tigase возвращает ошибку конфликта 409, то есть пользователь уже зарегистрирован.

NewClient:1438077277.663192:1 
load:1 
Send:1438077277.703507:<0.89.0>:<?xml version='1.0'?><stream:stream id='1' to='ubuntu' xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams'> 
Recv:1438077277.71206:<0.89.0>:<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='ubuntu' id='93e35376-1be1-413c-9285-2aa9558798d4' version='1.0' xml:lang='en'> 
Recv:1438077277.717071:<0.89.0>:<stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression></stream:features> 
Send:1438077280.718581:<0.89.0>:<iq id='2' type='set' ><query xmlns='jabber:iq:register'><username>43-tsung-user1</username><resource>tsung</resource><password>pass1</password></query></iq> 
Recv:1438077280.726568:<0.89.0>:<iq xmlns="jabber:client" type="result" id="2"/> 
Send:1438077282.719153:<0.89.0>:</stream:stream> 
EndClient:1438077282.719198:1 
load:0 
NewClient:1438077293.46312:1 
load:1 
Send:1438077293.4815:<0.94.0>:<?xml version='1.0'?><stream:stream id='3' to='ubuntu' xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams'> 
Recv:1438077293.484589:<0.94.0>:<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='ubuntu' id='4edaf8c7-72a5-48a0-99dc-33e6a348b838' version='1.0' xml:lang='en'> 
Recv:1438077293.488533:<0.94.0>:<stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression></stream:features> 
Send:1438077296.490041:<0.94.0>:<iq id='4' type='set' ><query xmlns='jabber:iq:register'><username>43-tsung-user2</username><resource>tsung</resource><password>pass2</password></query></iq> 
Recv:1438077296.502307:<0.94.0>:<iq xmlns="jabber:client" type="result" id="4"/> 
Send:1438077298.496102:<0.94.0>:</stream:stream> 
EndClient:1438077298.496152:2 
load:0 
NewClient:1438077303.492718:1 
load:1 
Send:1438077303.502446:<0.96.0>:<?xml version='1.0'?><stream:stream id='5' to='ubuntu' xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams'> 
Recv:1438077303.511868:<0.96.0>:<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='ubuntu' id='e3f918bc-e45d-4bb2-918d-62d85b93cec7' version='1.0' xml:lang='en'> 
Recv:1438077303.515748:<0.96.0>:<stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression></stream:features> 
Send:1438077306.517646:<0.96.0>:<iq id='6' type='set' ><query xmlns='jabber:iq:register'><username>43-tsung-user2</username><resource>tsung</resource><password>pass2</password></query></iq> 
Recv:1438077306.524358:<0.96.0>:<iq xmlns="jabber:client" type="error" id="6"><query xmlns="jabber:iq:register"><username>43-tsung-user2</username><resource>tsung</resource><password>pass2</password></query><error type="cancel" code="409"><conflict xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Unsuccessful registration attempt</text></error></iq> 
Send:1438077308.520858:<0.96.0>:</stream:stream> 
EndClient:1438077308.52091:3 
load:0 

Мой тест должен занять 30 секунд, при этом пользователи будут переключаться через 10 секунд. Поэтому в базе данных должно быть создано 3 пользователя. После окончания тестирования я могу видеть только 2 пользователя, что также говорит о том, что tsung.dump говорит alredy.

Почему tsung повторяет запрос для некоторых пользователей? Tsung ведет себя аналогично независимо от нагрузки. Если я подниму номера нагрузки, я получу подобное поведение. В большинстве случаев количество успешно зарегистрированных пользователей будет составлять около половины числа пользователей, сгенерированных tsung.

Ниже мой tsung.xml

<?xml version="1.0"?> 
<!DOCTYPE tsung SYSTEM "/usr/local/Cellar/tsung/1.5.1/share/tsung/tsung-1.0.dtd”>  
<tsung loglevel="debug" version="1.0" dumptraffic="true"> 
     <clients> 
      <client host="localhost" use_controller_vm="true" maxusers="100000"></client> 
     </clients> 
     <servers> 
      <server host="192.168.100.133" port="5222" type="tcp" weight="1"></server> 
     </servers> 
    <load> 
     <arrivalphase phase="1" duration="30" unit="second"> 
      <users maxnumber="100000" interarrival="10" unit="second"></users> 
     </arrivalphase> 
    </load> 
    <options> 
     <option type="ts_jabber" name="global_number" value="100000"></option> 
     <option type="ts_jabber" name="userid_max" value="100000" /> 
     <option type="ts_jabber" name="domain" value="ubuntu"></option> 
     <option type="ts_jabber" name="username" value="43-tsung-user"></option> 
     <option type="ts_jabber" name="passwd" value="pass"></option> 
    </options> 
    <sessions> 
     <session probability="100" name="jabber-example" type="ts_jabber"> 

     <request> 
      <jabber type="connect" ack="local"></jabber> 
     </request> 

     <thinktime value="3" random="false"></thinktime> 

     <request> 
      <jabber type="register" ack="no_ack" id="new"></jabber> 
     </request> 

     <thinktime value="2" random="false"></thinktime> 

     <request> 
      <jabber type="close" ack="no_ack"></jabber> 
     </request> 

     </session> 
    </sessions> 
    </tsung> 

ответ

1

Цзун играет сценарий случайным образом и будет повторно использовать некоторые идентификаторы пользователей. Это означает, что каждый раз, когда пользователь выбирается для воспроизведения сценария, существует риск конфликта, если это второй раз, когда пользовательский идентификатор используется Tsung.

Если вы специально не загрузите тест на регистрацию клиента, я бы рекомендовал предварительно создать вашу пользовательскую базу непосредственно в Tigase. Таким образом, вы можете удалить регистрационную часть из сценария и избежать конфликтов регистрации.

+0

Ничего себе. Я бы никогда не закончил это с чтения документов tsung http://tsung.erlang-projects.org/user_manual/conf-options.html#xmpp-jabber-options. Большое спасибо. – Goran

+0

Есть ли какое-либо временное решение для сценариев регистрации пользователей при тестировании нагрузки? – Goran

+0

Также эта ссылка указывает, что проблема уже была исправлена ​​ProcessOne: https://support.process-one.net/browse/TSUN-50. Я немного смущен. – Goran

 Смежные вопросы

  • Нет связанных вопросов^_^