一款不错的网站压力测试工具webbench

2条评论

2011 年 12 月 16 日 at 下午 5:49分类:WEB开发

原文地址:http://blog.s135.com/post/288/;

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。
1、适用系统:Linux

2、编译安装:(需要先安装ctags)

# wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
# tar zxvf webbench-1.5.tar.gz
# cd webbench-1.5
# make && make install

3、使用:

# cp webbench /bin/webbench
# webbench -c 500 -t 30 http://127.0.0.1/

参数说明:-c表示并发数,-t表示时间(秒)
4、测试结果示例:

Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/test.jpg
500 clients, running 30 sec.

Speed=415536 pages/min, 2236968bytes/sec.
Requests: 207758 susceed, 0 failed.

memcached运行和内存使用情况的监控

2条评论

2011 年 12 月 16 日 at 下午 3:08分类:Cache | PHP | WEB开发

之前都是在讲关于memcache的一些操作啊和配置等得问题,但是我们安装好服务之后,并且服务端和客户端都能够正常工作了,那么这个时候我们怎么知道内存的使用的情况呢,以及memcache是否正常运行呢?
大概很多人都不知道在memcache的源码包里面有个文件叫做:memcache.php这个功能就为我们的监控做了完整的事情,我们只需要 借助它,那么一切就OK了。
只需要把这个文件copy到你的web根目录,然后修改一下代码:

define('ADMIN_USERNAME','fbbin');     // Admin Username
define('ADMIN_PASSWORD','binbin');      // Admin Password

$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array

然后我们通过URL访问这个文件,如果正常的话,会得出如下界面,如果不正常的话,请自行找原因。

上图中的东西,我相信大家都能看懂
Hits: 1330 (90.9%) #点击了29
Misses: 133 (9.1%) #尚未使用的133
此外它还能对指定的key值进行管理。如下图

从上面可以看出,可以对KEY的值进行删除操作。

OK!

web做集群时,利用memcache来同步session

一条评论

2011 年 12 月 16 日 at 上午 11:09分类:Cache | PHP | WEB开发

记得以前做集群服务时,同步session的问题有些时候是借助COOKIE来使用的,有些时候是通过共享文件的方式来做,最多的还是通过memcache来做,不过之前做得跟以下讲得很不一样,以前的做法是完全不用PHP自带的session,而是借助memcache的缓存原理来实现一个memcache,这样子做当然是可以的!但是今天讲得是一种更简单的额方法。我个人觉得用memcache来同步session是最好的。
首先我模拟了一个web集群的,我启动两个memcached进程:

# /usr/local/bin/memcached -d -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached/memcached1.pid
# /usr/local/bin/memcached -d -p 11212 -u root -m 64 -c 1024 -P /var/run/memcached/memcached2.pid

这样子服务算是简单的启动了,下面配置下php.ini这个文件

session.save_handler = "memcache"
memcache.hash_strategy = "consistent"  #这个memcache在php.ini中配置项,还有很多,可以根据phpinfo里面来看它的配置项
session.save_path = "tcp://127.0.0.1:11211?weight=1,tcp://127.0.0.1:11212?weight=2"

简单的说明:
第一行,session的储存方式是memcache;第二行,memcache的hash算法是consistent;第三行,session储存的位置;
然后重启php-fpm

#  /etc/rc.d/init.d/php-fpm stop
#  /etc/rc.d/init.d/php-fpm start

此时你查看phpinfo页面的关于session的信息如下:
Session Support enabled
Registered save handlers files user sqlite memcache
Registered serializer handlers php php_binary
紧接着下面是
session.save_path tcp://127.0.0.1:11211?weight=1,tcp://127.0.0.1:11212?weight=2 tcp://127.0.0.1:11211?weight=1,tcp://127.0.0.1:11212?weight=2

测试下成不成功:

<?php
session_start();
$_SESSION['sessionTestData'] = 'fbbin code!';
echo session_id();
?>

通过memcache来获取刚刚存得数据

<?php  
$mem = new Memcache;  
$mem->addServer("127.0.0.1",11212)or die ("Could not add server 11212");  
$mem->addServer("127.0.0.1",11211)or die ("Could not add server 11211");  
$val = $mem->get('ind40dbsjobtq2k8lnfmv5eps5');    //上面输出的session_id()
echo $val;  
?> 

得出的结果是:

sessionTestData|s:12:"fbbin code!";

测试成功!关于这个时间的有效性跟session和memcache有关系。