php中使用memcached的效能問題

來源:互聯網
上載者:User

php中使用memcache擴充的效能問題

 [文章作者:孫立 連結:http://www.cnblogs.com/sunli/ 更新時間:2010-08-28]

           Memcached是一個高效能分布式緩衝系統,目前估計是很多公司的標配了,因為他被非常廣泛的使用,在各種語言下都有其豐富的client,所以很多後端服務也採用了相容的memcached協議,比如memcachedb, ttserver等等。所以最近我開發的佇列服務器也採用了memcached協議,底層是基於磁碟的儲存,單獨測試底層儲存的效能非常好,在我台式機能達到每秒寫入3萬1K的資料。

          今天用php測試了下往剛剛開發的佇列服務器(icqueue)插入資料,代碼如下:

 

<?php
$mem=new Memcache();
$mem->addServer ("127.0.0.1",12001,false,1,100);
$start=microtime(true);
$str= str_repeat ("a",1024);//1k資料
for($i=0;$i<100000;$i++){
$mem->add("bbs_password_",$str,0,0);//入隊,bbs為隊列名稱,password為密碼
}
echo microtime(true)-$start;
?>

 

 

執行:[root@sunlitest1 bbs]# /usr/local/php/bin/php mem.php

 5.6957609653473

花了5秒,感覺速度還是挺快,還是單進程跑的。接著我想測試大一點的資料,把其中的

 

$str= str_repeat ("a",1024);//1k資料

 

改為

$str= str_repeat ("a",1024*10);//10k資料

執行:[root@sunlitest1 bbs]# /usr/local/php/bin/php mem.php發現速度非常的慢,等了1分鐘也沒有成功。懷疑是佇列服務(icqueue)有問題,又換成memcached伺服器寫資料測試,發現速度同樣的慢。

這就排除了是服務端的問題。經過調整資料的大小,發現只要達到8K就非常慢。

然後懷疑是不是到了8K memcach自動進行了壓縮,是壓縮很慢呢?又去telnet進去,探索資料是沒有壓縮的。

剩下的問題應該就是網路問題了,翻看了memcach擴充的手冊,發現其中memcache.chunk_size的大小預設是8K,靈感一現,希望就是這這個問題導致的。

然後又改代碼:

 

 

<?php
ini_set('memcache.chunk_size',1024*15);//設定到15K
$mem=new Memcache();
$mem->addServer ("127.0.0.1",12001,false,1,100);
$start=microtime(true);
$str= str_repeat ("a",1024*10);//10k資料
for($i=0;$i<100000;$i++){
$mem->add("bbs_password_",$str,0,0);//入隊,bbs為隊列名稱,password為密碼
}
echo microtime(true)-$start;
?>

 

執行:[root@sunlitest1 bbs]# /usr/local/php/bin/php mem.php

 

10.800881147385

跑了10完成,OK,問題解決了。

memcache.chunk_size在php.ini設定的。大小推薦設定為你的資料的常規大小。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.