Kết quả benchmark memcacheq
Xem thông tin về memcacheq tại http://memcachedb.org/memcacheq/
Base để build hệ thống là Gentoo 64bits (Xeon 3.2Ghz, 4GB RAM) với các thông số:
Các bạn có thể đọc theo cách INSTALL tại trang chủ của memcacheq. Đối với Gentoo, kiểm tra các gói sau:
Sau đó compile theo như hướng dẫn:
Ở đây, tôi sử dụng thư mục data nằm tại: /data
Tôi có tweak một số thông số BerkeleyDB cho phù hợp bằng cách tạo file DB_CONFIG nằm trong /data với nội dung sau:
* Đọc thêm về các thông số:
set_cachesize
set_lg_regionmax
set_lg_bsize
Chạy memcacheq với thông số:
Thông tin về các tham số, các bạn tự tìm hiểu nhé.
Benchmark với PHP (môi trường thực tế)
Cài đặt module memcache cho PHP.
Ở đây, tôi dùng 2 script
Script đầu tiên là consumer.php có nhiệm vụ đọc và marked data được đưa vào (tuy vậy tôi không xóa)
Script thứ 2 là give.php, có nhiệm vụ ghi data vào. Mỗi lần chạy sẽ ghi 1 triệu record.
Đầu tiên ta khởi tạo consumer.php chạy nền.
Thử với 1 process.
Kiểm tra test.log để có kết quả.
Tương tự vậy với 2, 4 process.
Kết quả nhận được:

Hình: Bảng so sánh.

Hình: Kết quả với 1 và 2 thread.

Hình: Kết quả với 4 thread.
Base để build hệ thống là Gentoo 64bits (Xeon 3.2Ghz, 4GB RAM) với các thông số:
CFLAGS="-O2 -pipe -march=athlon64 -fforce-addr"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
Các bạn có thể đọc theo cách INSTALL tại trang chủ của memcacheq. Đối với Gentoo, kiểm tra các gói sau:
Server10 ~ # emerge -pv libevent db These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] dev-libs/libevent-1.4.13 0 kB [ebuild U ] sys-libs/db-4.8.26 [4.8.24] USE="-doc -java -nocxx -tcl -test" 22,362 kB Total: 2 packages (1 upgrade, 1 reinstall), Size of downloads: 22,362 kB
Sau đó compile theo như hướng dẫn:
Server10 ~ # cd /usr/src Server10 src # wget http://memcacheq.googlecode.com/files/memcacheq-0.2.0.tar.gz Server10 src # tar xfz memcacheq-0.2.0.tar.gz Server10 src # cd memcacheq-0.2.0 Server10 memcacheq-0.2.0 # ./configure --prefix=/usr/local/memcacheq --enable-threads Server10 memcacheq-0.2.0 # make Server10 memcacheq-0.2.0 # make install
Ở đây, tôi sử dụng thư mục data nằm tại: /data
Tôi có tweak một số thông số BerkeleyDB cho phù hợp bằng cách tạo file DB_CONFIG nằm trong /data với nội dung sau:
set_cachesize 1 500 0 set_lg_regionmax 64000000 set_lg_bsize 7680000
set_cachesize
set_lg_regionmax
set_lg_bsize
Chạy memcacheq với thông số:
/usr/local/memcache/bin/memcacheq -r -H /data -N -R -v -L 1024 -B 1280 -u root -p 29000 -c 30000 -m 128MB -U 29000 -t 4 -C 1m -T 15 -S 15 -d
Thông tin về các tham số, các bạn tự tìm hiểu nhé.
Benchmark với PHP (môi trường thực tế)
Cài đặt module memcache cho PHP.
Server11 ~ # emerge -pv dev-php5/pecl-memcache
Ở đây, tôi dùng 2 script
Script đầu tiên là consumer.php có nhiệm vụ đọc và marked data được đưa vào (tuy vậy tôi không xóa)
<?php set_time_limit (0); $memcache_obj = memcache_connect('Server10', 29000); $i = 0; while (1) { memcache_get($memcache_obj, 'demoqueuea')."\n"; //usleep(1000); } memcache_close($memcache_obj); ?>
Script thứ 2 là give.php, có nhiệm vụ ghi data vào. Mỗi lần chạy sẽ ghi 1 triệu record.
<?php $bgtime = time(); $memcache_obj = memcache_connect('Server10', 29000); $i = 0; while ($i < 1000000) { memcache_set($memcache_obj, 'demoqueuea', 'message body here-'.$data.'-'.$i, 0, 0); $i = $i + 1; } memcache_close($memcache_obj); echo "Execute time: ".(time()-$bgtime); ?>
Đầu tiên ta khởi tạo consumer.php chạy nền.
Server11 ~ # nohup php consumer.php > consumer.log 2>&1 &
Thử với 1 process.
Server11 ~ # cat mass.sh #!/bin/bash for i in `seq 1 10`; do php give.php >> test.log done Server11 ~ # /bin/bash ./mass.sh
Kiểm tra test.log để có kết quả.
Tương tự vậy với 2, 4 process.
Server11 ~ # cat mass4.sh #!/bin/bash for i in `seq 1 10`; do php give.php >> test4.log& php give.php >> test4.log& php give.php >> test4.log& php give.php >> test4.log done Server11 ~ # /bin/bash ./mass.sh
Kết quả nhận được:

Hình: Bảng so sánh.

Hình: Kết quả với 1 và 2 thread.

Hình: Kết quả với 4 thread.
thank, mr quan, ket qua thuc nghiem rat chi tiet cu the va rat chuyen nghiem, hi vong co nhieu thoi gian ranh de co them nhieu bai viet huu ich nua.
Comment by nhancm — 7/29/10 12:27 PM | # - re
Hi nhancm,
Tren thuc te doi voi ket qua test nhu vay, minh chua that su hai long va ti le loi sinh ra qua lon. Loi mot phan do php khong support scale lon. Trong moi truong thuc te minh su dung python de lam consumer & giver.
Comment by root — 8/27/10 8:55 PM | # - re