- start memcached listening on TCP port 11212 and UDP port 11213:
/usr/bin/memcached -u memcached -p 11212 -U 11213 -m 64 -c 1024 -R 256 -t 4
- Run
mc_tcp_vs_udp.php
script and observe that setting keys is slightly faster via UDP: php mc_tcp_vs_udp.php
:
Setting 100 keys via TCP...
Setting 100 keys via TCP took 4.86524 ms
Getting keys: tcp_0, tcp_100 ...
array(2) {
["tcp_0"]=>
string(1) "0"
["tcp_100"]=>
string(3) "100"
}
Setting 100 keys via UDP...
Setting 100 keys via UDP took 0.89574 ms
Getting keys: udp_0, udp_100 ...
array(2) {
["udp_0"]=>
string(1) "0"
["udp_100"]=>
string(3) "100"
}
- Restart the memcached process we started in (1) to clear the cache contents
- Add 100 ms of delay to all traffic on loopback network interface:
sudo tc qdisc add dev lo root netem delay 100ms
- Run
mc_tcp_vs_udp.php
script and observe that setting keys is much faster via UDP: php mc_tcp_vs_udp.php
:
Setting 100 keys via TCP...
Setting 100 keys via TCP took 20226.504976 ms
Getting keys: tcp_0, tcp_100 ...
array(2) {
["tcp_0"]=>
string(1) "0"
["tcp_100"]=>
string(3) "100"
}
Setting 100 keys via UDP...
Setting 100 keys via UDP took 0.447725 ms
Getting keys: udp_0, udp_100 ...
array(2) {
["udp_0"]=>
string(1) "0"
["udp_100"]=>
string(3) "100"
}
- Delete the network delay rules we added:
sudo tc qdisc del dev lo root