Linux安装mamaslap报错记录
安装mamaslap过程中遇到的错误,记录一下,希望对你有帮助。
安装memaslap
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure -prefix=/usr/local/libmemcached --with-memcached --enable-memaslap
make
make install
压测开始
/usr/local/libmemcached/bin/memaslap -s 127.0.0.1:9202 -t 1200s -T 96 -c 96 -X 100 &
参数说明:
-s, --servers=:要压测的一个或多个memcached服务器。
servers=localhost:11111,localhost:11211
-T, --threads=:线程数量,最好等于cpu数量。默认值为8
-c, --concurrency=:负载需要虚拟的并发数量,默认值是128
-n, --conn_sock=:一个并发的tcp连接数量,默认值是1
-x, --execute_number=:set/get数量,默认值100w
-t, --time=:运行时间,其格式为: s-seconds, m-minutes, h-hours, d-days e.g.: --time=2h.
-F, --cfg_cmd=:加载配置文件
-w, --win_size=:任务窗口大小,e.g.: --win_size=10k. 默认值为10k
-X, --fixed_size=:value的大小
-v, --verify=:所要确认的数据比例, e.g.: --verify=0.01
-d, --division=:多重get的数量,默认值为1即单个get
-S, --stat_freq=:定期清理静态数据的间隔时间, e.g.: --resp_freq=10s.
-e, --exp_verify=:失效时间的比例, e.g.: --exp_verify=0.01。默认情况是不设置该选项
-o, --overwrite=:对象需要覆盖的比例, e.g.: --overwrite=0.01.默认情况是不进行覆盖。
-R, --reconnect:支持重新连接
-U, --udp:使用UDP协议,默认是TCP协议
-a, --facebook:启动faceb检测
-B, --binary:使用二进制协议,默认值是ascii协议
-P, --tps=:吞吐量, e.g.: --tps=10k.
-p, --rep_write=:前n个服务端可以写数据, e.g.: --rep_write=2.
-b, --verbose:错误信息
-h, --help:帮助文档
-V, --version:版本信息
问题1:安装完成后没有memaslap
/usr/local/libmemcached/bin/
文件夹下没有 memaslap
在执行 `./configure -prefix=/usr/local/libmemcached --with-memcached --enable-memaslap
make` 时结果中有一条:checking test for a working libevent... no
正常的话应该是yes的
解决方法:安装 libevent-devel
yum install -y libevent-devel libevent
然后重新安装libmemcached
问题2:make时报错undefined reference to symbol pthread_getspecific@@GLIBC_2.17:
/usr/bin/ld: clients/ms_conn.o: undefined reference to symbol 'pthread_getspecific@@GLIBC_2.17' //usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make[1]: *** [Makefile:4708: clients/memaslap] Error 1 make[1]: Leaving directory '/home/olm/libmemcached-1.0.18' make: *** [Makefile:9973: install] Error 2
解决方法1:
编辑 Makefile 文件,找到 $(clients_memaslap_LDADD) $(LIBS)
后面追加 -lpthread
解决方法2:
尝试进入 Makefile 并将-L/lib64 -lpthread
添加到变量 LDFLAGS 中。
LDFLAGS变量位于Makefile文件2937行
然后 make clean & make & make install 即可
问题3:make时报错 ISO C++ forbids comparison between pointer and integer
vim 将 clients/memflush.cc
文件的 42 行和 51 行的 false
修改为 0
然后 make clean & make & make install 即可.