tsungを使用して、websocket サーバーの負荷テストを行っています。私は と が初めてtsung
ですerlang
。
ユーザーとキーのリストを .csv ファイルにエクスポートしています。実行するために、csv ファイルを次のように縮小しました。
1;2
ファイルの最後に空行がありません。
これは私のtsung
設定のスニペットです(それ以外の場合は正常に動作します):
<options>
<option name="file_server" id="users" value="PATH_TO_MY_CSV/users.csv"/>
</options>
[...]
<setdynvars sourcetype="erlang" callback="loadusers:user">
<var name="connection_url" />
</setdynvars>
[...]
<request subst="true">
<websocket type="connect" path="/?%%_connection_url%%"/>
</request>
ts_file_server tsung モジュールloadusers.erl
を使用する私の は次のとおりです。
-module(loadusers).
-export([user/1]).
user({Pid,DynVar})->
{ok,Line} = ts_file_server:get_next_line(),
[Username, Passwd] = string:tokens(Line,";"),
"username=" ++ Username ++"&password=" ++ Passwd.
erlang のエラー スタックは次のとおりです。
** State machine <0.90.0> terminating
** Last message in was {timeout,#Ref<0.0.0.414>,end_thinktime}
** When State == think
** Data == {state_rcv,none,
{{0,0,0,0},0},
undefined,0,10000,"192.168.59.103",443,ts_tcp,
{proto_opts,negociate,"/http-bind/","/chat","binary",10,
600000,infinity,32768,32768,undefined,undefined,[]},
true,1,undefined,true,undefined,
{1431,872144,388666},
6,6,false,undefined,0,[],<<>>,
{websocket_session,undefined,undefined},
0,2,524288,524288,
[{tsung_userid,2}],
ts_websocket,[],undefined,none}
** Reason for termination =
** {{badarg,[{dict,fetch,
[default,
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],
[[users|{file,{<<"1;2">>},1,-1}]],
[],[],[],[],[],[],[],[],[],[],[],[]}}}],
[{file,"dict.erl"},{line,130}]},
{ts_file_server,handle_call,3,
[{file,"src/tsung_controller/ts_file_server.erl"},
{line,159}]},
{gen_server,try_handle_call,4,
[{file,"gen_server.erl"},{line,607}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,639}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]},
{gen_server,call,[{global,ts_file_server},{get_next_line,default}]}}
tsung configdynvars
から直接プルできることはわかっていますが、後でデータを動的に操作する必要があるため、スクリプトでそれを行う必要があります。重要: 同じ csv ファイルの読み取りは正常に機能するため、スクリプトに問題があるようです。
誰かがここでerlangが何について不平を言っているのか説明できますか?