提交 16cfedda 编写于 作者: K KernelMaker

Merge branch 'master' of github.com:Qihoo360/pika

......@@ -71,14 +71,14 @@ make __REL=1
## Usage
```
./output/bin/pika -c ./conf/pika.conf
./output/bin/pika -c ./conf/pika.conf
```
If failed, move pika source/lib/_VERSION/lib/ to the rpath defined in Makefile and relanch.
~~~
cp PIKA_SOURCE/lib/_VERSION/* RPATH
~~~
```
cp PIKA_SOURCE/lib/_VERSION/* RPATH
```
The PIKA_SOURCE stands for pika source code's root directory;
The __VERSION represents the OS's version, such as 6.2, 5.4...
The RPATH is defined in pika's Makefile
......@@ -86,27 +86,69 @@ The RPATH is defined in pika's Makefile
##Performance
```
Server Info:
###test environment
2 same hardware server, one for running pika, the other for running redis-benchmark
CPU: 24 Cores, Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
MEM: 165157944 kB
OS: CentOS release 6.2 (Final)
NETWORK CARD: Intel Corporation I350 Gigabit Network Connection
Client Info:
Same as Server
Test:
Pika run with 18 worker threads, and we test it using 40 client;
1. Write Performance:
Client push data by set, hset, lpush, zadd, sadd, each interface has 10000 key range;
result: 110000 qps
2. Read Performance:
Client pull data by get, hget, lindex, zscore, smembers, 25000000 keys stored in pika and each interface has 5000000 key range
result: 170000 qps
###test interfaces
Set, Get
###test method
run pika with 16 work threads, run redis-benchmark on another server as follow:
./redis-benchmark -h ... -p ... -n 1000000000 -t set,get -r 10000000000 -c 120 -d 200
execute 1 billion Set and 1 billion Get commands altogether
###test result
```
Set
1000000000 requests completed in 11890.80 seconds
18.09% <= 1 milliseconds
93.32% <= 2 milliseconds
99.71% <= 3 milliseconds
99.86% <= 4 milliseconds
99.92% <= 5 milliseconds
99.94% <= 6 milliseconds
99.96% <= 7 milliseconds
99.97% <= 8 milliseconds
99.97% <= 9 milliseconds
99.98% <= 10 milliseconds
99.98% <= 11 milliseconds
99.99% <= 12 milliseconds
...
100.00% <= 19 milliseconds
...
100.00% <= 137 milliseconds
84098.66 requests per second
```
```
Get
1000000000 requests completed in 9063.05 seconds
84.97% <= 1 milliseconds
99.76% <= 2 milliseconds
99.99% <= 3 milliseconds
100.00% <= 4 milliseconds
...
100.00% <= 33 milliseconds
110338.10 requests per second
```
###pika vs ssdb ([Detail](https://github.com/Qihoo360/pika/wiki/pika-vs-ssdb))
<img src="http://imgur.com/rGMZmpD.png" height = "400" width = "480" alt="1">
<img src="http://imgur.com/gnwMDof.png" height = "400" width = "480" alt="10">
##pika vs redis
<img src="http://imgur.com/k99VyFN.png" height = "400" width = "600" alt="2">
##Documents
......
......@@ -89,24 +89,69 @@ RPATH在Makefile定义,表示的是程序运行的库预先加载路径
## 性能
###测试环境:
```
服务端配置
相同配置服务端、客户机各一台
处理器:24核 Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
内存:165157944 kB
操作系统:CentOS release 6.2 (Final)
网卡:Intel Corporation I350 Gigabit Network Connection
客户端配置:
同服务端
测试结果:
pika配置18个worker,用40个客户端;
1. 写性能测试:
方法:客户端依次执行set、hset、lpush、zadd、sadd接口写入数据,每个数据结构10000个key;
结果:qps 110000
2. 读性能测试:
方法:客户端一次执行get、hget、lindex、zscore、smembers,每个数据结构5000000个key;
结果:qps 170000
```
###测试接口:
```
Set、Get
```
###测试方法:
```
pika配16个worker,客户机执行 ./redis-benchmark -h ... -p ... -n 1000000000 -t set,get -r 10000000000 -c 120 -d 200
通过set和get接口对pika进行10亿次写入+10亿次读取
```
###测试结果:
```
  Set
1000000000 requests completed in 11890.80 seconds
18.09% <= 1 milliseconds
93.32% <= 2 milliseconds
99.71% <= 3 milliseconds
99.86% <= 4 milliseconds
99.92% <= 5 milliseconds
99.94% <= 6 milliseconds
99.96% <= 7 milliseconds
99.97% <= 8 milliseconds
99.97% <= 9 milliseconds
99.98% <= 10 milliseconds
99.98% <= 11 milliseconds
99.99% <= 12 milliseconds
...
100.00% <= 19 milliseconds
...
100.00% <= 137 milliseconds
84098.66 requests per second
```
```
Get
1000000000 requests completed in 9063.05 seconds
84.97% <= 1 milliseconds
99.76% <= 2 milliseconds
99.99% <= 3 milliseconds
100.00% <= 4 milliseconds
...
100.00% <= 33 milliseconds
110338.10 requests per second
```
###与SSDB性能对比([详情](https://github.com/Qihoo360/pika/wiki/pika-vs-ssdb))
<img src="http://imgur.com/rGMZmpD.png" height = "400" width = "480" alt="1">
<img src="http://imgur.com/gnwMDof.png" height = "400" width = "480" alt="10">
###与Redis性能对比
<img src="http://imgur.com/k99VyFN.png" height = "400" width = "600" alt="2">
## 文档
1. [Wiki] (https://github.com/Qihoo360/pika/wiki)
......
......@@ -289,7 +289,7 @@ void* PikaBinlogSenderThread::ThreadMain() {
}
// error
close(cli_->fd());
cli_->Close();
sleep(1);
}
return NULL;
......
......@@ -51,7 +51,7 @@ void* PikaSlavepingThread::ThreadMain() {
while (true) {
if (should_exit_) {
LOG(INFO) << "Close Slaveping Thread now";
close(cli_->fd());
cli_->Close();
g_pika_server->pika_binlog_receiver_thread()->KillBinlogSender();
break;
}
......@@ -69,13 +69,13 @@ void* PikaSlavepingThread::ThreadMain() {
if (now.tv_sec - last_interaction.tv_sec > 30) {
//timeout;
LOG(WARNING) << "Ping master timeout";
close(cli_->fd());
cli_->Close();
g_pika_server->pika_binlog_receiver_thread()->KillBinlogSender();
break;
}
} else {
LOG(WARNING) << "Ping master error";
close(cli_->fd());
cli_->Close();
g_pika_server->pika_binlog_receiver_thread()->KillBinlogSender();
break;
}
......@@ -87,7 +87,7 @@ void* PikaSlavepingThread::ThreadMain() {
LOG(WARNING) << "Slaveping, Connect timeout";
if ((++connect_retry_times) >= 30) {
LOG(WARNING) << "Slaveping, Connect timeout 10 times, disconnect with master";
close(cli_->fd());
cli_->Close();
g_pika_server->pika_binlog_receiver_thread()->KillBinlogSender();
connect_retry_times = 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册