`

php中使用memcache扩展的性能问题

    博客分类:
  • PHP
阅读更多

           Memcached是一个高性能分布式缓存系统,目前估计是很多公司的标配了,因为他被非常广泛的使用,在各种语言下都有其丰富的client,所以很多后端服务也采用了兼容的memcached协议,比如memcachedbttserver等等。所以最近我开发的队列服务器也采用了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设置的。大小推荐设置为你的数据的常规大小。

分享到:
评论

相关推荐

    windows php memcache 扩展

    **PHP与Memcache扩展在Windows环境下的配置与应用** ...在Windows环境下,配置和使用PHP Memcache扩展需要关注兼容性、服务配置以及代码实现,通过合理的设计和优化,可以充分利用Memcache的性能优势。

    php7 memcache扩展

    标题 "php7 memcache扩展" 描述 "php7.0 7.1 (vc14/vc15) memcache扩展 windows(x86/x64)" 提及了几个关键概念,包括PHP7、memcache扩展以及适用于Windows平台的不同架构版本。这里,我们将深入探讨这些主题,并...

    windows php7-memcache扩展

    现在,你可以开始在PHP代码中使用Memcache扩展了。首先,需要引入`Memcache`类库,然后创建连接,存储和获取数据: ```php &lt;?php $memcache = new Memcache; $memcache-&gt;connect('localhost', 11211); // 默认...

    memcache 扩展,php5.5 32,64 位,以及其他版本下载地址

    在PHP5.5版本中,对于32位和64位操作系统,需要安装对应的memcache扩展才能使用。这个扩展通常以`.dll`文件形式提供,例如 `memcache.dll`,这是Windows环境下PHP的动态链接库文件。在Linux或Mac等其他操作系统上,...

    php7,memcache扩展文件,windows

    标题 "php7,memcache扩展...总之,这个压缩包提供的PHP7-memcache扩展是Windows环境下开发PHP应用程序时,与Memcached服务器配合使用的必要组件。正确安装和配置这个扩展,可以极大地提升基于PHP的Web应用的运行效率。

    php5.6 php7.0 php7.1 memcache.dll扩展

    Memcache是PHP中一个非常重要的扩展,它允许开发者在PHP应用程序中使用Memcached内存缓存系统,从而提高数据处理的速度和效率。 描述中提到,“该资源包含php5.6、php7.0及php7.1的memcache扩展”,这意味着用户...

    memcache dll扩展满足各版本PHP

    这意味着用户无论使用哪个版本的PHP,都能找到兼容的memcache扩展来启用或增强其网站或应用程序的缓存功能,从而提高性能。 **memcache扩展介绍:** Memcache是一个广泛使用的分布式内存对象缓存系统,它可以存储...

    php7.3.~redis和memcache扩展包.rar

    PHP的Memcache扩展同样提供了与Memcache服务通信的接口,可以方便地将数据存储和检索到内存中,提高网站的性能。 在Windows环境下,安装这些扩展通常需要手动配置或使用预编译的二进制文件。描述中提到的“每次安装...

    php5.4 memcache 扩展包

    总的来说,PHP 5.4 Memcache 扩展是提升 Web 应用性能的关键工具,通过合理使用它可以极大地优化数据库操作,提高用户体验。确保正确安装和配置扩展,并善用提供的函数,可以有效利用 Memcached 的优势,为你的项目...

    php5.3版本可用的memcache扩展

    在PHP 5.3这个版本中,开发者可以使用Memcache扩展来集成Memcached服务。这个扩展提供了丰富的函数接口,如`memcache_connect()`用于连接到Memcached服务器,`memcache_get()`和`memcache_set()`用于获取和设置缓存...

    windos php_memcache扩展 php5.6

    "亲测可用"意味着这个php_memcache扩展已经在该环境下成功运行,用户可以放心在类似配置的环境中使用。 "我用的试xammp"指的是XAMPP,一个流行的开源跨平台Web服务器解决方案,包含了Apache、MySQL、PHP和Perl等...

    php_memcache.dll扩展文件集合包

    1. **安装Memcached扩展**:对于PHP5.2以下的版本,可能需要使用Memcached扩展而非Memcache扩展。安装过程与上述类似,但需找到对应版本的`php_memcached.dll`。 2. **配置Memcached**:同样,在`php.ini`中启用`...

    PHP各版本的memcache扩展

    综上所述,PHP的Memcache扩展是提高Web应用程序性能的有效工具,但需要根据具体的应用场景和需求选择合适的版本,并合理配置和使用。同时,随着技术的发展,还有如Redis这样的更强大、更灵活的缓存解决方案可供选择...

    php_memcache扩展大全(所有版本)

    PHP Memcache扩展是PHP与Memcached缓存系统交互的关键工具,它使得在PHP环境中能够高效地存储和检索数据,从而提高Web应用的性能。Memcached是一个分布式内存对象缓存系统,它能用来临时存储动态数据库结果,减少...

    PHP memcache 多版本拓展

    在PHP中,Memcache扩展允许开发者将数据存储到Memcached服务器上,以便后续请求可以快速获取这些数据,从而提高整体性能。 本篇文章主要围绕"PHP Memcache多版本拓展"进行详细讲解,包括其适用环境、安装步骤、使用...

    win下php-memcache5.4;5.2;5.3扩展和memcache服务端

    以下是关于PHP-Memcache扩展和Memcache服务器安装及使用的详细说明: 1. **PHP-Memcache扩展安装**: - 首先,确保你的PHP环境已经安装并配置好,比如PHP 5.4、5.3或5.2。 - 下载与PHP版本匹配的`...

    php7 memcache.dll扩展,亲试可以使用

    现在,PHP7已经成功安装了Memcache扩展,可以在代码中使用`memcache`类进行缓存操作。 在实际应用中,使用Memcache扩展可以实现以下功能: - **缓存数据**:通过`memcache_connect()`函数连接到Memcache服务器,...

    PHP MemCache 扩展文件

    这个压缩包中包含的就是phpmemcache.dll文件,它是PHP与MemCache服务器通信的关键组件。将这个文件放入PHP的“ext”目录下后,还需要在php.ini配置文件中启用该扩展。添加或修改以下行: ```ini extension=...

    php 5.3.13memcache和redis扩展

    在PHP中,Memcache扩展允许开发者将数据存储在内存中,以便快速访问。 1. **安装Memcache扩展** - 首先,你需要下载适用于PHP 5.3.13的Windows版Memcache扩展。这通常是一个`.dll`文件,例如`php_memcache.dll`。 ...

Global site tag (gtag.js) - Google Analytics