432ewd 发表于 2015-4-3 10:55:02

php memcache hash方法均衡性测试

支持两种hash方法: crc32 fnv
配置如下:
;Hash function {crc32, fnv}memcache.hash_function=fnv
set key脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

$cluster = array(
    array('host' => '127.0.0.1', 'port' => '11211'),
    array('host' => '127.0.0.1', 'port' => '11212'),
    array('host' => '127.0.0.1', 'port' => '11213'),
    array('host' => '127.0.0.1', 'port' => '11214'),
    array('host' => '127.0.0.1', 'port' => '11215'),
    );

$memcache = new Memcache;
foreach ($cluster as $mc) {
    $host = $mc['host'];
    $port = $mc['port'];
    if ($memcache->addServer($host, $port)) {
      echo "Add $host:$port to cluster\n";
    } else {
      echo "Failed to add $host:$port to cluster\n";
    }
}

$ok = 0;
for ($n=1; $n <= 200000 ; $n++) {
    $key = "k".$n;
    if (! $memcache->set($key, 1)) {
      echo "Failed to set $key\n";
    } else {
      $ok ++;
    }
    if ($n % 100 == 0) {
      echo "Completed set $n key to cache\n";
    }
}

echo "Set OK: $ok\n";
$memcache->close();

?>





启动cache脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

pkill memcached
if [ $? == 0 ];then
    echo "kill all memcached"
else
    echo "failed to kill cached"
    exit 1
fi
memcached -d -p 11211 -u memcached -m 64 -c 1024 &
memcached -d -p 11212 -u memcached -m 64 -c 1024 &
memcached -d -p 11213 -u memcached -m 64 -c 1024 &
memcached -d -p 11214 -u memcached -m 64 -c 1024 &
memcached -d -p 11215 -u memcached -m 64 -c 1024 &

sleep 1
ps aux | grep memcached





结果检查脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

T11211=`echo stats | nc 127.0.0.1 11211 | grep cmd_set | awk '{print $3}'`
T11212=`echo stats | nc 127.0.0.1 11212 | grep cmd_set | awk '{print $3}'`
T11213=`echo stats | nc 127.0.0.1 11213 | grep cmd_set | awk '{print $3}'`
T11214=`echo stats | nc 127.0.0.1 11214 | grep cmd_set | awk '{print $3}'`
T11215=`echo stats | nc 127.0.0.1 11215 | grep cmd_set | awk '{print $3}'`

echo "11211 = $T11211"
echo "11212 = $T11212"
echo "11213 = $T11213"
echo "11214 = $T11214"
echo "11215 = $T11215"






最终结果对比:
crc32:
11211 = 5118011212 = 4751911213 = 2617911214 = 2908211215 = 46040
fnv:
11211 = 4708511212 = 3535811213 = 4972111214 = 1878711215 = 49049
页: [1]
查看完整版本: php memcache hash方法均衡性测试