压力测试及缓存服务器(续一)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

第一篇 WEB压力测试


一、常用工具

常用压力测试工具:ab,httpd_load,webbench,seige。

仅仅作为测试使用,与实际能力区别也挺大的。

比较好的测试工具:惠普公司的loadrunning(收费,不好找),网易公司的tcpcopy,

二、ab

网站压力测试,模拟并发n个客户端同时发送n个请求,共m个并发请求。

前提条件:调高并发访问文件的最大限度 ulimit

[root@localhost php-5.5.32]# ulimit -n 3000


三、使用方法:

-c:模拟的并发用户数

-n:总的用户请求数量

[root@localhost php-5.5.32]# ab -c 10 -n 100 http://www.baidu.com/index.html

   //需要指明具体访问的文件,否则报错。

参考马哥教育ab测试:http://edu.51cto.com/lesson/id-75757.html

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking www.baidu.com (be patient).....done



Server Software:        BWS/1.1

Server Hostname:        www.baidu.com

Server Port:            80


Document Path:          /index.html

Document Length:        111566 bytes


Concurrency Level:      10并发等级,同时访问的用户数量

Time taken for tests:   3.484 seconds总耗时

Complete requests:      100完成响应数

Failed requests:        98失败请求数

   (Connect: 0, Receive: 0, Length: 98, Exceptions: 0)

Total transferred:      11246439 bytes

HTML transferred:       11151543 bytes

Requests per second:    28.71 [#/sec] (mean)每秒请求数

Time per request:       348.369 [ms] (mean)每10个请求消耗的时间

Time per request:       34.837 [ms] (mean, across all concurrent requests)每个请求消耗时间

Transfer rate:          3152.65 [Kbytes/sec] received传输速率


Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        2    6   4.6      5      30

Processing:    19  223 448.6     53    3479

Waiting:        4   23  48.1      9     212

Total:         22  230 448.8     59    3483


Percentage of the requests served within a certain time (ms)

  50%     59

  66%     76

  75%    298

  80%    341

  90%    736

  95%    864

  98%   1606

  99%   3483

 100%   3483 (longest request)

[root@localhost php-5.5.32]# 



第二篇 PHP缓存-xcache

一、Xcache加速器

使用方法:将xcache编译安装成PHP的一个模块。


二、安装使用:

1、下载源代码、解压缩

2、执行编译安装的php的phpize命令

[root@localhost xcache-3.2.0]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212

3、编译xcache

[root@localhost xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

[root@localhost xcache-3.2.0]#make && make install

4、配置xcache.ini文件

可以将源码中的xcache.ini文件重定向追加到php.ini中,也可以在php.d目录下创建一个*.ini的文件,并修改配置文件。

[root@localhost xcache-3.2.0]# cat xcache.ini >> /etc/php.ini 

Or

[root@localhost xcache-3.2.0]# mkdir /etc/php.d

[root@localhost xcache-3.2.0]# cp xcache.ini /etc/php.d/



extension = xcache.so,保留默认即可。

[root@localhost xcache-3.2.0]# vim /etc/php.d/xcache.ini 


;; this is an example, it won't work unless properly configured into php.ini

[xcache-common]

;; non-Windows example:

extension = xcache.so


5、检查是否正确配置。

通过phpinfo这样的简单脚本即可检查xcache是否挂载上,如果没有挂载,可以检查php的配置文件检查位置是否和实际相同。

XCache

XCache Version  3.2.0 
Modules Built  cacher 


Directive Local Value Master Value
xcache.coredump_directory no value no value
xcache.disable_on_crash Off Off
xcache.experimental Off Off
xcache.test Off Off

通过web页面查看缓存使用 情况及操作(此处实验环境是xcache3.2、php5.5)

未使用xcache进行缓存后压力测试结果

Concurrency Level:      1000

Time taken for tests:   17.992 seconds

Complete requests:      1000

Failed requests:        95

   (Connect: 0, Receive: 0, Length: 95, Exceptions: 0)

Total transferred:      82144897 bytes

HTML transferred:       81977897 bytes

Requests per second:    55.58 [#/sec] (mean)

Time per request:       17992.489 [ms] (mean)

Time per request:       17.992 [ms] (mean, across all concurrent requests)

Transfer rate:          4458.51 [Kbytes/sec] received


使用xcache进行压力测试结果:

Concurrency Level:      1000

Time taken for tests:   2.134 seconds

Complete requests:      1000

Failed requests:        905

   (Connect: 0, Receive: 0, Length: 905, Exceptions: 0)

Total transferred:      78216889 bytes

HTML transferred:       78049889 bytes

Requests per second:    468.66 [#/sec] (mean)

Time per request:       2133.730 [ms] (mean)

Time per request:       2.134 [ms] (mean, across all concurrent requests)

Transfer rate:          35798.19 [Kbytes/sec] received


a、将源代码中的htdocs目录下的文件拷贝到web服务器可以访问到的链接下、我这里是/usr/local/nginx/html/xcache。

b、编辑php.ini(xcache.ini)文件,为网页添加用户名密码,密码是md5加密的。

echo  -n password |openssl md5

c、vi /etc/php.ini

xcache.admin.user = "root"

xcache.admin.pass = "63a9f0ea7bb98050796b649e85481845"

d、重启php-fpm服务。

注意:检查文件版本是否存在相互支持的问题,比如xcache和php之间的版本是否支持,这样的问题适用于所有的安装情况!!!

官网xcache.ini配置文档:http://xcache.lighttpd.net/wiki/XcacheIni


memcached:缓存的是mysql查询的结果。并且缓存的每个数值不能超过1兆。

xcache:用来缓存有zend  engine引擎编译php脚本,实质上是opcode数据。

第三篇 memcached


一、memcached安装和配置

1、介绍

    在没有给memcached下定义之前,我先说几个要点,方便更好地理解memcached。

    首先memcached是一个分布式的高速缓存系统,分布式说明可以部署多个,并且他和应用服务器之间通讯是通过独立的文本协议完成的。另外memcached的缓存是缓存在内存中而不是硬盘上,所以称为高速。

    多个memcached之间并不相互通讯。memcached缓存的数据是由应用程序服务器决定的,而不是由自己。这样就要去应用程序服务器比如php在开发的时候就要支持memcached功能,否则部署没有意义。

    那么当有多个缓存服务器的时候,数据是如何缓存的呢,这里先说一下,由于缓存服务器之间不通讯,不存在同步缓存的事情,那么数据缓存之后,在查找缓存的时候就需要知道去哪里找的问题。

    数据缓存的方法有两种:取余法和一致性hash算法。

    取余法,就是对数据进行hash取余,并将结果放到指定的服务器上,缺点是如果增加新额设备,取余结果混乱,造成无法正确查找数据。

    一致性hash算法,这个比较复杂,简单说就是假定有这样一个环,对所有主机进行hash计算,然后通过2的32次幂的取余运算,并生成一个唯一的数作为服务器的id号,应用服务器在对数据查询的时候,会依据hash计算查询语句,并计算一个唯一值,同样放到这个环上,并顺时针查找离自己最近的缓存服务器,然后将数据缓存到这里。由于一致性hash算法的特定可能会造成这个环上服务器负责区域大小范围不同,所以提供了虚拟的功能,就是可以为同一个主机创建多个点,来平均分配区域。来实现区域的均衡。

    这样即使一台服务器添加或者缺失,只会影响一部分数据(数据顺时针查找的一个固定范围),只需应用服务器重新查找并缓存即可。

重点提示:由于缓存都是存储在内存中,所以重启memcached服务器会造成数据丢失,需要重新建立缓存。

memcached本身并不提供冗余功能,所以当一台缓存服务器故障后,和他关联的持久链接session就会失效造成数据丢失,这个是不能避免的。

解决此办法,而又可以实现高效的数据存储就出现了nosql和redis的技术。

D8F18F86FF6F46579FAB371DBC4AEDF6

图片来源:http://blog.csdn.net/sparkliang/article/details/5279393

视频来源memcached:http://edu.51cto.com/lesson/id-75819.html

2、安装

使用的端口:

11211:tcp 

11211:udp

依赖软件包:

libevent

    libevent提供高性能的网络代码库,并且目前很多主流的网络事件工具都是依据此库开发的。

2.1编译安装:(redhat可以通过yum方式自动完成memcached的安装,这里只是提供另一种安装方式)

a、安装libevent

[root@node6.dtedu.com ~/libevent-2.0.22-stable]# ./configure --prefix=/usr/local/libevent

[root@node6.dtedu.com ~/libevent-2.0.22-stable]# make && make install


将头文件和库文件导出到linux系统默认的路径,方便其他程序调用。

创建头文件的链接

[root@node6.dtedu.com ~/libevent-2.0.22-stable]# ln -sv /usr/local/libevent/incloud /usr/include/libevent 

"/usr/include/libevent" -> "/usr/local/libevent/incloud"

创建libevent.conf,添加/usr/local/libevent/lib。

[root@227 magedu.com]# cat /etc/ld.so.conf.d/libevent.conf

/usr/local/libevent/lib

动态链接库管理工具、执行此命令用于将新的库文件加载进内核。

[root@227 magedu.com]# ldconfig 

b、安装

下载并编译安装http://www.memcached.org/files/memcached-1.4.39.tar.gz

[root@node6.dtedu.com ~/memcached-1.4.39]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent

[root@node6.dtedu.com ~/memcached-1.4.39]# make && make install


启动

[root@node6.dtedu.com ~/memcached-1.4.39]# vim /etc/profile.d/memcached.sh

[root@node6.dtedu.com ~/memcached-1.4.39]# . /etc/profile.d/memcached.sh 

[root@node6.dtedu.com ~/memcached-1.4.39]# cat /etc/profile.d/memcached.sh 

export PATH=/usr/local/memcached/bin/:$PATH

[root@node6.dtedu.com ~/memcached-1.4.39]# memcached -f 2 -d -u daemon



3、配置详解

命令配置:

.memcached -h

-p:指定tcp监听端口

-U:指定udp监听端口(启动时监听的端口地址,为了安全建议修改监听端口)

-l:指定监听的ip地址,当服务器有多个网卡的时候设置启动时监听的网卡地址(本机)

-d:以守护进程的方式运行,就是在后台运行。

-m:设置缓存大小,默认是64M,建议设置也不要太大,(2g足够)不方便内存管理。

-f:设置增长因子,就是缓存(内存划分大小)递增倍率。

-v:显示细节、可以看出内存分配增长的过程

4、编写启动脚本

vim /etc/rc.d/init.d/memcached

78BBE1A0D286488BBD6835ABB6EAFD41

问题:

service memcached does not support chkconfig

我们一般在脚本开头加入下面两句就好了

#gedit /etc/init.d/myservice

添加下面两句到 #!/bin/bash 之后。

# chkconfig: - 85 15# description: myservice ....

其中2345是默认启动级别,级别有0-6共7个级别。

  等级0表示:表示关机   

  等级1表示:单用户模式   

  等级2表示:无网络连接的多用户命令行模式   

  等级3表示:有网络连接的多用户命令行模式   

  等级4表示:不可用   

  等级5表示:带图形界面的多用户模式   

  等级6表示:重新启动

85是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低

参考文档:http://blog.csdn.net/tianhuadihuo/article/details/6647398

5、memcached常用命令

通过telnet连接memcached服务器,并对其进行操作。

[root@node6.dtedu.com ~/memcached-1.4.39]# telnet 10.40.0.226 11211

Trying 10.40.0.226...

Connected to 10.40.0.226.

Escape character is '^]'.

命令:

存储类命令:set、add、replace、append、prepend

获取数据类命令:get、delete、incr/decr

统计类命令:stats items、stats slabs、stats sizes

清理命令:flush_all

Memcached常用命令及使用说明:http://www.cnblogs.com/jeffwongishandsome/archive/2011/11/06/2238265.html

二、搭建PHP连接到缓存服务器的方法

1、概述

这里说明一下,PHP连接memcached服务器的插件有两种,一个叫memcach另一个叫memcached。他和缓存服务器的memcached同名不同义。

并且使用perl开发的应用程序服务器要和memcached进行通信使用的插件也叫memcached,而使用c或者c++开发的应用程序服务器连接memcached服务器使用的插件叫做libmemcached。

memcached作为服务器,客户端需要和他链接是需要“驱动”的。

memcached:服务器端,即安装的memcached服务,类似于mysql服务

memcache:使用pecl扩展库形式操作memcached(类似于php_mysqli)

memcached:使用libmemcached形式操作memcached



参考文件:http://www.cnblogs.com/wangtao_20/p/4057591.html

2、php安装驱动(插件)

这里安装的是memcache扩展库。

安装环境:php-5.5.32、memcache-2.2.7

A、下载客户端http://pecl.php.net/package/memcache

B、创建php的外挂模块(需要进入要安装的模块目录内)

[root@localhost mysqli]# /usr/local/php/bin/phpize 

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212


[root@localhost memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache


[root@localhost  memcache-2.2.7]# make 



[root@localhost memcache-2.2.7]#  make install

安装完毕会显示安装的路径                  

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20121212/

创建并配置ini文件,添加内容如下:(这里主要检查php配置文件存放位置,我这里使用的是编译安装,配置文件指定的是/etc/php-fpm/目录)

[root@localhost memcache-3.0.8]# vim /etc/php-fpm/php.ini

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so

~                                                                                  

135439.tmp

重启php

service php-fpm restart(需要提前准备)



网页测试代码(index.php):

[root@ms.dtedu.com/usr/local/libmemcached/bin]$vim /www/magedu.com/index.php 


<?php

$memcache = new Memcache;

$memcache->connect('10.40.0.226', 11211) or die ("Could not connect");

$version = $memcache->getVersion();

echo "Server's version: ".$version."\n";

$tmp_object = new stdClass;

$tmp_object->str_attr = 'test';

$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_objectfalse10) or die ("Failed to save data at the server");

echo "Store data in the cache (data will expire in 10 seconds)\n";

$get_result = $memcache->get('key');

echo "Data from the cache:\n";

var_dump($get_result);

?>




memcache实现跨服务器登录


文章来源:http://www.ningoo.net/html/2009/use_memcached_in_php.html

memcached客户端安装配置手册:http://php.net/manual/zh/memcached.installation.php

3、memadmin-master监控工具

错误汇总:

1、执行phpize过程中出现一下代码:

[root@localhost php-5.5.32]# /usr/local/php/bin/phpize 

Cannot find config.m4. 

Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module


解决方法:进入源码包的ext/mysqli目录再执行phpize即可。或者直接安装php-devel即可。

[root@localhost php-5.5.32]# cd ext/mysqli/

[root@localhost mysqli]# /usr/local/php/bin/phpize 

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968775,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
网络协议 安全 测试技术
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
40 2
|
2月前
|
存储 弹性计算 运维
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格,阿里云服务器ECS推出经济型e系列,经济型e实例是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,CPU采用Intel Xeon Platinum架构处理器,支持1:1、1:2、1:4多种处理器内存配比,e系列性价比优选
|
1月前
|
弹性计算 分布式计算 DataWorks
DataWorks报错问题之ecs自建数据库连通性测试报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
弹性计算 缓存 测试技术
阿里云2核4g服务器(费用价格/性能测试/支持人数)
阿里云2核4g服务器能支持多少人访问?2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
1月前
|
弹性计算 缓存 测试技术
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
2月前
|
存储 负载均衡 监控
epoll服务器百万并发测试
epoll服务器百万并发测试
31 1
|
2月前
|
弹性计算 数据中心
阿里云香港服务器详细介绍_BGP多线精品测试_CN2高速网络
阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云百科来详细介绍阿里云香港云服务器
|
2月前
|
弹性计算 测试技术 数据中心
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试,阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量
|
3月前
|
SQL 安全 测试技术
项目迁移到云服务器,如何做迁移测试?
项目迁移到云服务器,如何做迁移测试?
|
3月前
|
SQL 测试技术 API
服务器端测试
服务器端测试
服务器端测试

热门文章

最新文章