Либа для кроля
https://github.com/kakaranet/white_rabbit.
Таймеры:
1. Время инциализации для пользователя
{T, _}= timer:tc(nsm_users,init_mq, [Me#user.username, Groups]),
?INFO("Init: ~p~n", [T])
1.1 Время открытия
{T1,{ok, Channel}} = timer:tc(nsm_mq,open, [[]]),
?INFO("Opened: ~p", [T1])
1.2 Время создания ексченжа
{T3, ok} =timer:tc(nsm_mq_channel,create_exchange, [Channel, UserExchange,ExchangeOptions]),
?INFO("Created OK, ~p", [T3])
1.3 Время бинда по ключам
[begin
{T2,_} = timer:tc(nsm_users, bind_user_exchange, [Channel, User, RK]),
?INFO("Exchange binded: ~p ~p", [T2, RK])
end
|| RK <- [rk([feed, delete, User])|Relations]]
2. Общее время создания 2048 юзеров
{Time, _} = timer:tc(nsm_db, create_tour_users , [1,2048,["kakaranet"]]),
?INFO("Total: ~p~n", [Time])
Копипаста лога для среднестатистического юзера:
{rabbit,"RabbitMQ","2.7.1"}
INIT MQ: "ezgi_mestafa" ["kakaranet"]
Opened: 1567
Cration Exchange: {<0.18332.4>,<<"user_exchange.ezgi_mestafa.fanout">>,[{type,<<"fanout">>},durable,{auto_delete,false}]}, Created OK, 588
Exchange binded: 1388 <<"feed.delete.ezgi_mestafa">>
Exchange binded: 1966 <<"feed.user.ezgi_mestafa.*.*.*">>
Exchange binded: 1173 <<"db.user.ezgi_mestafa.put">>
Exchange binded: 1076 <<"subscription.user.ezgi_mestafa.add_to_group">>
Exchange binded: 966 <<"subscription.user.ezgi_mestafa.remove_from_group">>
Exchange binded: 977 <<"subscription.user.ezgi_mestafa.invite_to_group">>
Exchange binded: 1015 <<"subscription.user.ezgi_mestafa.reject_invite_to_group">>
Exchange binded: 1048 <<"subscription.user.ezgi_mestafa.leave_group">>
Exchange binded: 1063 <<"login.user.ezgi_mestafa.update_after_login">>
Exchange binded: 1013 <<"profile.user.ezgi_mestafa.add_twitter">>
Exchange binded: 1057 <<"profile.user.ezgi_mestafa.remove_twitter">>
Exchange binded: 979 <<"likes.user.ezgi_mestafa.add_like">>
Exchange binded: 1006 <<"personal_score.user.ezgi_mestafa.add">>
Exchange binded: 990 <<"feed.user.ezgi_mestafa.count_entry_in_statistics">>
Exchange binded: 1019 <<"feed.user.ezgi_mestafa.count_comment_in_statistics">>
Exchange binded: 998 <<"feed.user.ezgi_mestafa.post_note">>
Exchange binded: 1005 <<"subscription.user.ezgi_mestafa.subscribe_user">>
Exchange binded: 966 <<"subscription.user.ezgi_mestafa.remove_subscribe">>
Exchange binded: 1026 <<"subscription.user.ezgi_mestafa.set_user_game_status">>
Exchange binded: 982 <<"subscription.user.ezgi_mestafa.update_user">>
Exchange binded: 973 <<"subscription.user.ezgi_mestafa.block_user">>
Exchange binded: 977 <<"subscription.user.ezgi_mestafa.unblock_user">>
Exchange binded: 1029 <<"affiliates.user.ezgi_mestafa.create_affiliate">>
Exchange binded: 981 <<"affiliates.user.ezgi_mestafa.delete_affiliate">>
Exchange binded: 1138 <<"affiliates.user.ezgi_mestafa.enable_to_look_details">>
Exchange binded: 1046 <<"affiliates.user.ezgi_mestafa.disable_to_look_details">>
Exchange binded: 1027 <<"purchase.user.ezgi_mestafa.set_purchase_external_id">>
Exchange binded: 998 <<"purchase.user.ezgi_mestafa.set_purchase_state">>
Exchange binded: 1000 <<"purchase.user.ezgi_mestafa.set_purchase_info">>
Exchange binded: 970 <<"purchase.user.ezgi_mestafa.add_purchase">>
Exchange binded: 1086 <<"transaction.user.ezgi_mestafa.add_transaction">>
Exchange binded: 998 <<"invite.user.ezgi_mestafa.add_invite_to_issuer">>
Exchange binded: 1002 <<"tournaments.user.ezgi_mestafa.create">>
Exchange binded: 984 <<"tournaments.user.ezgi_mestafa.create_and_join">>
Exchange binded: 1039 <<"gifts.user.ezgi_mestafa.buy_gift">>
Exchange binded: 976 <<"gifts.user.ezgi_mestafa.give_gift">>
Exchange binded: 1003 <<"gifts.user.ezgi_mestafa.mark_gift_as_deliving">>
Exchange binded: 906 <<"feed.system.*.*">>
Exchange binded: 985 <<"feed.group.kakaranet.*.*.*">>
Init: 43264 (0.043264 секунды)
Тotal: 175781200 (2.93 минуты)
{rabbit,"RabbitMQ","3.0.0"}
INIT MQ: "yusuf_yazici"["kakaranet"]
Opened: 1270
Cration Exchange: {<0.21605.6>,<<"user_exchange.yusuf_yazici.fanout">>,[{type,<<"fanout">>},durable,{auto_delete,false}]},Created OK, 128179
Exchange binded: 92952 <<"feed.delete.yusuf_yazici">>
Exchange binded: 76416 <<"feed.user.yusuf_yazici.*.*.*">>
Exchange binded: 95326 <<"db.user.yusuf_yazici.put">>
Exchange binded: 290692 <<"subscription.user.yusuf_yazici.add_to_group">>
Exchange binded: 85628 <<"subscription.user.yusuf_yazici.remove_from_group">>
Exchange binded: 67032 <<"subscription.user.yusuf_yazici.invite_to_group">>
Exchange binded: 67270 <<"subscription.user.yusuf_yazici.reject_invite_to_group">>
Exchange binded: 67301 <<"subscription.user.yusuf_yazici.leave_group">>
Exchange binded: 68346 <<"login.user.yusuf_yazici.update_after_login">>
Exchange binded: 66671 <<"profile.user.yusuf_yazici.add_twitter">>
Exchange binded: 66710 <<"profile.user.yusuf_yazici.remove_twitter">>
Exchange binded: 69910 <<"likes.user.yusuf_yazici.add_like">>
Exchange binded: 78336 <<"personal_score.user.yusuf_yazici.add">>
Exchange binded: 78564 <<"feed.user.yusuf_yazici.count_entry_in_statistics">>
Exchange binded: 136393 <<"feed.user.yusuf_yazici.count_comment_in_statistics">>
Exchange binded: 77138 <<"feed.user.yusuf_yazici.post_note">>
Exchange binded: 122845 <<"subscription.user.yusuf_yazici.subscribe_user">>
Exchange binded: 67364 <<"subscription.user.yusuf_yazici.remove_subscribe">>
Exchange binded: 67418 <<"subscription.user.yusuf_yazici.set_user_game_status">>
Exchange binded: 67342 <<"subscription.user.yusuf_yazici.update_user">>
Exchange binded: 66873 <<"subscription.user.yusuf_yazici.block_user">>
Exchange binded: 67016 <<"subscription.user.yusuf_yazici.unblock_user">>
Exchange binded: 78607 <<"affiliates.user.yusuf_yazici.create_affiliate">>
Exchange binded: 78518 <<"affiliates.user.yusuf_yazici.delete_affiliate">>
Exchange binded: 67507 <<"affiliates.user.yusuf_yazici.enable_to_look_details">>
Exchange binded: 67031 <<"affiliates.user.yusuf_yazici.disable_to_look_details">>
Exchange binded: 80525 <<"purchase.user.yusuf_yazici.set_purchase_external_id">>
Exchange binded: 78460 <<"purchase.user.yusuf_yazici.set_purchase_state">>
Exchange binded: 85688 <<"purchase.user.yusuf_yazici.set_purchase_info">>
Exchange binded: 81576 <<"purchase.user.yusuf_yazici.add_purchase">>
Exchange binded: 71803 <<"transaction.user.yusuf_yazici.add_transaction">>
Exchange binded: 85818 <<"invite.user.yusuf_yazici.add_invite_to_issuer">>
Exchange binded: 66827 <<"tournaments.user.yusuf_yazici.create">>
Exchange binded: 67406 <<"tournaments.user.yusuf_yazici.create_and_join">>
Exchange binded: 66889 <<"gifts.user.yusuf_yazici.buy_gift">>
Exchange binded: 67527 <<"gifts.user.yusuf_yazici.give_gift">>
Exchange binded: 67580 <<"gifts.user.yusuf_yazici.mark_gift_as_deliving">>
Exchange binded: 78496 <<"feed.system.*.*">>
Exchange binded: 78398 <<"feed.group.kakaranet.*.*.*">>
Init: 3342401 (3.34 секунды)
Total: не дождался. хватило минут на 40.
тесты на 2.8.6 приблизительно повторяют резльтат 3.0.0, тоесть не дождался.
Все кроли тестировались свежепоставленными с пустыми базами. Первый раз запустил 3.0.0 под старой базой и ошибочно принял его за самый быстрый.
Видно что на 2.8-3.0 каждый ключик имеет значение, время его бинда приблизительно такое же как всех ~40 ключей на 2.7.1
Ни один кроль в результате експериментов не пострадал и подтвердилась народная мудрость о том, что старый кроль борозды не портит.