새로 출시된 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초마다 화면에 출력하도록 해놨다.
현재 화면에는 9대만 있는데 실제로는 10대.
즉 초당 6.2만건의 hset / 6.2만건의 hget 을 하고 있는것이다.
재미있는것은 다음 화면을 보자.
in 을 보면 약 320MB/s , out 이 110 MB/s 다.
1GB 용량기준으로 네트워크 처리량이 375MB/s 라는걸 감안하면.. 거의 성능은 네트워크에 의해 결정된다는 의미다.
약간 다른 케이스이긴 한데, 예전에 했던 벤치마크의 경우 n1-standard1 의 경우 초당 약 1.5만건 정도 나왔던것으로 기억한다.
가성비는 굉장히 좋은듯하다. 다행이다 ㅎㅎ