redis-benchmark 테스트 병렬 성능

3242 단어
서버 환경
SUSE Linux Enterprise Server 10 SP3 (x86_64) MemTotal: 2097324 kB cpu MHz : 2400.084 Hz disk: 10G
우선 Redis2.6.0(lua 스크립트 지원이 도입되어 lua 라이브러리와jemalloc 메모리 분배기 등을 설치해야 함)
먼저 데이터베이스에 데이터를 눌러 메모리를 가득 채우고 키(25~30bytes)val(100bytes)
    unsigned int j;
    redisContext *c;
    redisReply *reply;
    int size = 10000 * 1500;

    clock_t start,finish;
    double jishi;
    char key[1000];
    char val[1000];
    char times[100];

    struct timeval timeout = { 1, 500000 }; // 1.5 seconds
    c = redisConnectWithTimeout((char*)"127.0.0.1", 6379, timeout);
    if (c->err) {
        printf("Connection error: %s
", c->errstr); exit(1); } start = clock(); /* Set a key */ for(j = 0;j < size;j ++){ randalp(key, 30 + j%5); sprintf(times,"%d",time(0)); strcat(key,times); randstr(val, 100); reply = redisCommand(c,"SET %s %s", key,val); freeReplyObject(reply); if(j % 100000 == 0){ finish = clock(); jishi = (double)(finish-start)/CLOCKS_PER_SEC; printf("set %d spend %f seconds
",j/100000,jishi); start = finish; } } return 0;
717M 디스크 공간을 차지하는 650만 개의 데이터(2G 메모리 사용)
	redis-benchmark -h 10.6.2.245 -p 6379 -q -d 500

	PING_INLINE: 14858.84 requests per second
	PING_BULK: 52910.05 requests per second
	SET: 55248.62 requests per second
	GET: 54347.82 requests per second
	INCR: 56179.77 requests per second
	LPUSH: 55555.55 requests per second
	LPOP: 54054.05 requests per second
	SADD: 56179.77 requests per second
	SPOP: 56497.18 requests per second
	LPUSH (needed to benchmark LRANGE): 55865.92 requests per second
	LRANGE_100 (first 100 elements): 2304.15 requests per second
	LRANGE_300 (first 300 elements): 769.76 requests per second
	LRANGE_500 (first 450 elements): 513.43 requests per second
	LRANGE_600 (first 600 elements): 385.13 requests per second
	MSET (10 keys): 21739.13 requests per second

	redis-benchmark -h 10.6.2.245 -p 6379 -q -d 100

	PING_INLINE: 55248.62 requests per second
	PING_BULK: 54644.81 requests per second
	SET: 54347.82 requests per second
	GET: 54054.05 requests per second
	INCR: 55248.62 requests per second
	LPUSH: 54347.82 requests per second
	LPOP: 53763.44 requests per second
	SADD: 54945.05 requests per second
	SPOP: 54945.05 requests per second
	LPUSH (needed to benchmark LRANGE): 51813.47 requests per second
	LRANGE_100 (first 100 elements): 10822.51 requests per second
	LRANGE_300 (first 300 elements): 3611.41 requests per second
	LRANGE_500 (first 450 elements): 2407.90 requests per second
	LRANGE_600 (first 600 elements): 1808.32 requests per second
	MSET (10 keys): 44642.86 requests per second
A, 테스트 데이터 한 개당 500바이트, lrange의 성능이 비교적 빨리 떨어진다
B, 각 테스트 데이터는 100바이트이고 lrange도 병목이 존재하며 다른 지령은 대체로 같다.
다른 상용 지령의 평균 성능은 모두 괜찮다. 50000 정도에 이를 수 있는 모습을 볼 수 있다. 리디스-benchmark의 기본 병발client 수량은 50이다. 리디스는 성능이 매우 우수한 메모리 데이터베이스라는 것을 알 수 있지만 vm 메커니즘이 좋지 않다. 공식 문서도 제안하지 않고 사용하지 않는다는 것을 설명한다.그리고 시스템 메모리가 다 소모되었을 때 시스템이 매우 불안정하고 붕괴되기 쉽기 때문에 Redis.conf 프로필에서 Redis의 메모리 사용을 제한해야 합니다.

좋은 웹페이지 즐겨찾기