GCP의 새로운 Memorystore - Redis 벤치마크

in #gcp7 years ago

새로 출시된 Memorystore 의 성능이 매우 궁금하여.
벤치마크를 해봤다.

우선 스펙은 가장 기초가 되는 Basic - M1 ( 1GB )기준으로 확인했다.
결과 부터 먼저 말하자면, "성능은 네트워크에 따라가더라.."라는 내용.

테스트를 위해 다음과 같은 Node.js 코드를 작성했다.

global.redis = require('redis')
.createClient( "6379" , "10.0.4.3" );

redis.ping( function( err , result ){
    if( err ){
        console.error("[ Redis ] : Check Failed :",err );
        errors.report(err);
    }else{
        console.log("[ Redis ] : Check OK!");
    }
});

let countpersec = 0;
const HsetTest = ()=>{
    countpersec++;

    let key = Math.round(Math.random()*100000000);
    let name = ("000000"+key).slice(-6);

    redis.hset( `htest:${key%1000}` , name , JSON.stringify({
        key: key,
        name: name
    }) , ( err , result )=>{
        if( err ){
            console.error( "redis:error" );
            console.error( err );
            return;
        }

        redis.hget( `htest:${key%1000}` , name , ( err , result )=>{
            if( err ){
                console.error( "redis:error" );
                console.error( err );
                return;
            }

            HsetTest();
        });
    });
};

HsetTest();
HsetTest();
HsetTest();
HsetTest();

setInterval(()=>{
    console.log( countpersec );
    countpersec = 0;
},1000);

내용은 간단히 한번 호출을 하고 나면 올때까지 기다리고, 다시 반복하는 형태로 초당 몇번이나 호출하는지 1초마다 화면에 출력하도록 해놨다.


screenshot 2018-05-10 12.34.48.png

screenshot 2018-05-10 12.34.30.png

현재 화면에는 9대만 있는데 실제로는 10대.

즉 초당 6.2만건의 hset / 6.2만건의 hget 을 하고 있는것이다.

재미있는것은 다음 화면을 보자.

screenshot 2018-05-10 12.37.07.png

in 을 보면 약 320MB/s , out 이 110 MB/s 다.
1GB 용량기준으로 네트워크 처리량이 375MB/s 라는걸 감안하면.. 거의 성능은 네트워크에 의해 결정된다는 의미다.

약간 다른 케이스이긴 한데, 예전에 했던 벤치마크의 경우 n1-standard1 의 경우 초당 약 1.5만건 정도 나왔던것으로 기억한다.

가성비는 굉장히 좋은듯하다. 다행이다 ㅎㅎ