memcachedをベンチマークしようと思ってCentOS 5.5でmcbの1.0RC2をコンパイルして使っているのですが、なぜかセグメンテーション違反となり落ちてしまいます。しかし私はCはさっぱりわからないので・・・。とりあえずメモリ関連だと思って適当に値をいじってみました。

— mcb.c.orig 2010-08-13 10:09:25.000000000 +0900
+++ mcb.c 2010-08-13 10:33:33.000000000 +0900
@@ -387,11 +387,11 @@

assert(0 <= no && no < sysval.thread_num); - if ((buff = calloc(1, sysval.data_len * 2 + 100)) == NULL) { + if ((buff = calloc(1, sysval.data_len * 2 + 2000)) == NULL) { elog("calloc error"); exit(-1); } - if ((data = calloc(1, sysval.data_len * 2 + 1)) == NULL) { + if ((data = calloc(1, sysval.data_len * 2 + 2000)) == NULL) { elog("calloc error"); exit(-1); }

-nの値(スレッド当たりの送信コマンド数)によってもっと数字を大きくしないといけないかもしれません。とりあえず-n 1000000まではいけました。ちなみになんでこうなのか理屈はわかってません。(^^;

LINEで送る
Pocket