openresty

实验环境:rhel6 x64 selinux and iptables disabled

主机 IP:172.25.77.1

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty 的目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

memcached 的 key 可以通过 memcached_key 变量来设置,如以$uri。如果命中,那么直接输出内容,没有命中就意味着 nginx 需要从应用程序请求页面。同时,我们还希望该应用程序将键值对写入到 memcached,以便下一个请求可以直接从 memcached 获取。

实验内容:

1. 安装包

openresty-1.11.2.3.tar.gz

2.1 解压安装 openresty

# tar zxf openresty-1.11.2.3.tar.gz

# cd openresty-1.11.2.3

# ./configure

# yum install -y gcc pcre-devel

# yum install -y openssl-devel ##在使用 HTTPS 服务时候必须装 openssl-devel

# gmake

##gmake 进行编译

# gmake install

##gmake install 生成文件到系统

# ln -s /usr/local/openresty/nginx/sbin/nginx /usr/sbin/ ##使用软连接,方便调用

# nginx ##启动 nginx

2.2 修改配置文件

# vim /usr/local/openresty/nginx/conf/nginx.conf ##和修改 nginx 配置文件十分相似

http {

include

mime.types;

default_type application/octet-stream;upstream memcached{

server 127.0.0.1:11211; ##节点服务器

keepalive 512; ##保持的最多连接数

}

location / {

root html;

index index.html index.htm index.php; ##添加 index.php

}

location /memc {

internal; ##只接受内部访问,提高了数据安全

memc_connect_timeout 100ms; ##用于建立与 memcached 服务器连接超时时间

memc_send_timeout 100ms; ##设置发送请求到 memcached 服务器超时时间

memc_read_timeout 100ms; ##定义从 memcached 服务器读取响应超时时间

set $memc_key $query_string; ##指定以什么作为 key,这里使用 nginx 内置的

$query_string

set $memc_exptime 120; ##缓存失效时间 120s

memc_pass memcached; ##设置 memcached 服务器的位置

}

location ~ \.php$ {

set $key $uri$args;

##根据 uri 和参数作为缓存的 key

srcache_fetch GET /memc $key;

##srcache_fetch 表示注册一个输入拦

截处理器到 location,将在 location 进入时被执行

srcache_store PUT /memc $key;

##srcache_store 表示注册一个输出拦

截处理器到 location,将在 location 输出时被执行

root

html;fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include

fastcgi.conf;

}

【注:经过上述配置,相当于 nginx 增加了如下逻辑:当请求的 uri 以.php 结尾时,首

先到 memcache 中查询有没有以$key $uri$args 为 key 的数据,如果有则直接返回,

否则,执行 location 的逻辑,如果返回状态码为 200,则在输出前以$key $uri$args 为

key,将输入结果存入 memcache】

# nginx -t ##检查配置文件

# nginx -s reload ##重新加载 reload

2.3 编写 php 测试页面

# cd /usr/local/openresty/nginx/html/

# vim test.php

phpinfo();

?>

2.4 启动 php-fpm

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

浏览器测试访问 http://172.25.77.1/test.php

3. 安装 memcached

# yum install -y memcached

# /etc/init.d/memcached start

4. 性能测试

# ab -c 10 -n 50000 http://172.25.77.1/index.php

Server Software:

openresty/1.11.2.3 ##服务器软件

Server Hostname:

Server Port:

172.25.77.1 ##服务器主机名

80

Document Path:

##服务器端口

/index.php

Document Length:

16 bytes

Concurrency Level:

10

##测试的页面文档

##文档大小

##并发数

Time taken for tests: 8.919 seconds ##整个测试持续时间

Complete requests:

Failed requests:

Write errors:

50000

0

##失败的请求数

0

Non-2xx responses:

Total transferred:

HTML transferred:

Requests per second:

Time per request:

##完成请求数量

50000

9600000 bytes ##整个场景的网络传输量

800000 bytes ##整个场景的 HTML 内容传输量

5606.09 [#/sec] (mean) ##每秒事务数,mean 表示平均值

1.784 [ms] (mean) ##平均事物响应时间

Time per request:

0.178 [ms] (mean, across all concurrent requests) ##每个请

求实际处理时间

Transfer rate:

1051.14 [Kbytes/sec] received ##平均每秒网络上的流量

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.0 0 3

Processing: 0 2 0.5 2 10

Waiting:

0

Total:

1

2 0.5

2 0.5

2

2

10

10

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

50% 2 ##50%的用户响应小于 2ms

66% 2 ##60%的用户响应小于 2ms

75% 2 80% 2 90% 2 95% 2 98% 3 99% 4

100%

##99%的用户响应小于 4ms

10 (longest request) ##最大响应时间小于 10ms

你可能感兴趣的:(openresty)