skynet簡單測試QPS記錄

簡單調(diào)用skynet的QPS的記錄举反,僅供參考龙填。

1. 簡單調(diào)用 math.random

local math = require "math"
local skynet = require "skynet"

skynet.start(function()
    local v = nil
    local count = 0
    local t = skynet.now()
    while skynet.now() - t < 100*10 do
        count = count + 1
        v = math.random(3,3)
    end

    local time = (skynet.now()-t) / 100

    print("v", v)

    print("time", time, "count", count, "per", count/time)
end)

結(jié)果

time 1.0 count 10889947 per 10889947.0

2. 簡單調(diào)用 skynet.call

local skynet = require "skynet"
require "skynet.manager"    -- import skynet.register

skynet.start(function()
    local sdb = skynet.newservice("simpledb", "agent")
    skynet.call("SIMPLEDB", "lua", "SET", "a", "foobar")

    local v = nil
    local count = 0
    local t = skynet.now()
    while skynet.now() - t < 100*10 do
        count = count + 1
        v = skynet.call("SIMPLEDB", "lua", "GET", "a")
    end

    local time = (skynet.now()-t) / 100

    print("v", v)

    print("time", time, "count", count, "per", count/time)

    skynet.exit()
end)

結(jié)果

time 10.0 count 1021166 per 102116.6

3. 簡單調(diào)用 cluster.call

local skynet = require "skynet"
require "skynet.manager"    -- import skynet.register
local cluster = require "skynet.cluster"

skynet.start(function()
    local sdb = skynet.newservice("simpledb", "agent")
    skynet.call("SIMPLEDB", "lua", "SET", "a", "foobar")

    cluster.open "db"
    cluster.register("sdb", sdb)

    local proxy = cluster.proxy "db@sdb"

    local v = nil
    local count = 0
    local t = skynet.now()
    while skynet.now() - t < 100*10 do
        count = count + 1
        -- v = cluster.call("db", "SIMPLEDB", "GET", "a")
        v = skynet.call(proxy, "lua", "GET", "a")
    end

    local time = (skynet.now()-t) / 100

    print("v", v)

    print("time", time, "count", count, "per", count/time)

    skynet.exit()
end)

結(jié)果

time 10.0 count 52784 per 5278.4

4. 簡單調(diào)用 redis mq

service服務(wù) simplemq.lua

local skynet = require "skynet"
require "skynet.manager"    -- import skynet.register
local redis = require "skynet.db.redis"

local conf = {
    host = "127.0.0.1" ,
    port = 6379 ,
    db = 11
}

local function process()
    print("process...")
    local db = redis.connect(conf)
    while true do
        local task_json = db:brpop("test_queue", 0)
        -- print("task_json", task_json[2])
        db:lpush(task_json[2], "secessed")
    end
end

skynet.start(function()
    skynet.dispatch("lua", function(session, address, cmd, ...)
        cmd = cmd:upper()
        if cmd == "PING" then
            assert(session == 0)
            local str = (...)
            if #str > 20 then
                str = str:sub(1,20) .. "...(" .. #str .. ")"
            end
            skynet.error(string.format("%s ping %s", skynet.address(address), str))
            return
        end
        local f = command[cmd]
        if f then
            skynet.ret(skynet.pack(f(...)))
        else
            error(string.format("Unknown command %s", tostring(cmd)))
        end
    end)

    skynet.timeout(
        100,
        function()
            process()
        end
    )

end)

調(diào)用測試

local skynet = require "skynet"
require "skynet.manager"    -- import skynet.register
local cluster = require "skynet.cluster"
local redis = require "skynet.db.redis"

local conf = {
    host = "127.0.0.1" ,
    port = 6379 ,
    db = 11
}

-- 添加任務(wù)到任務(wù)隊列
local function call(db, queue_name, task_name)
    db:lpush(queue_name, task_name)
    local result = db:brpop(task_name, 3)
    return result[2]
end

skynet.start(function()
    skynet.newservice("simplemq", "agent")

    local db = redis.connect(conf)

    local v = nil
    local count = 0
    local t = skynet.now()
    while skynet.now() - t < 100*10 do
        count = count + 1
        v = call(db, "test_queue", "test_queue_result_".. tostring(skynet.now()))
    end

    local time = (skynet.now()-t) / 100

    print("v", v)

    print("time", time, "count", count, "per", count/time)

    skynet.exit()
end)

結(jié)果

time 10.0 count 13821 per 1382.1

5. 結(jié)果列表:

調(diào)用 QPS 相對于上項的% 備注
math.random 10889947.0 -
skynet.call 102116.6 0.94 -
cluster.call 5278.4 5.17 -
redis mq 1382.1 26.17 redis滿載了,skynet單核70%民珍,用python測試也差不多
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末觅捆,一起剝皮案震驚了整個濱河市温圆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诲宇,老刑警劉巖际歼,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姑蓝,居然都是意外死亡鹅心,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門纺荧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旭愧,“玉大人,你說我怎么就攤上這事宙暇∈淇荩” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵占贫,是天一觀的道長桃熄。 經(jīng)常有香客問我,道長型奥,這世上最難降的妖魔是什么瞳收? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮厢汹,結(jié)果婚禮上螟深,老公的妹妹穿的比我還像新娘。我一直安慰自己坑匠,他們只是感情好血崭,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般夹纫。 火紅的嫁衣襯著肌膚如雪咽瓷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天舰讹,我揣著相機與錄音茅姜,去河邊找鬼。 笑死月匣,一個胖子當著我的面吹牛钻洒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锄开,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼素标,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了萍悴?” 一聲冷哼從身側(cè)響起头遭,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎癣诱,沒想到半個月后计维,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡撕予,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年鲫惶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片实抡。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡欠母,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澜术,到底是詐尸還是另有隱情艺蝴,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布鸟废,位于F島的核電站猜敢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盒延。R本人自食惡果不足惜缩擂,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望添寺。 院中可真熱鬧胯盯,春花似錦、人聲如沸计露。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叉趣,卻和暖如春泞边,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疗杉。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工阵谚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烟具。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓梢什,卻偏偏與公主長得像,于是被迫代替她去往敵國和親朝聋。 傳聞我的和親對象是個殘疾皇子嗡午,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)玖翅,斷路器翼馆,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • java 基礎(chǔ) JDK1.8新特性 Lambda表達式 函數(shù)式接口 方法引用和構(gòu)造器調(diào)用 Stream API 接...
    __Covet閱讀 333評論 0 0
  • 1.啟動 1.1windows版本啟動命令 redis-server.exe ./redis.windows.co...
    渡邊Hok閱讀 648評論 0 0
  • 1.1 資料 ,最好的入門小冊子金度,可以先于一切文檔之前看,免費严沥。 作者Antirez的博客猜极,Antirez維護的R...
    JefferyLcm閱讀 17,056評論 1 51
  • 1、談?wù)剬ttp協(xié)議的認識流程:1.域名解析域名解析檢查順序為:瀏覽器自身DNS緩存---》OS自身的DNS緩存...
    Zzmi閱讀 709評論 0 0