Scripting libdrizzle with Lua inside Nginx -...

140
Scripting libdrizzle with Lua inside Nginx

Transcript of Scripting libdrizzle with Lua inside Nginx -...

Page 1: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Scripting libdrizzle with Lua inside Nginx

Page 2: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Scripting libdrizzle with Lua

inside Nginx

章亦春 (agentzh)

[email protected]

2012.4

Page 3: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

"MySQL is always the bottleneck!""Really?!"

Page 4: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 5: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 6: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Some benchmarks onAmazon EC2 Small instances

Page 7: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 8: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

A Slow MySQL Query

select sleep(1)

Page 9: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

♡ Amazon Linux AMI 2011.09 ♡ nginx 1.0.14 ♡ php-fpm 5.3.10

Page 10: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 11: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 12: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 13: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 14: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

A Fast MySQL Query

with a Small Resultset select * from world.City order by ID limit 1

Page 15: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 16: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 17: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

A Fast MySQL Query

with a Big Resultset (100 KBytes) select * from world.City order by ID limit 1000

Page 18: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 19: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 20: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 21: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

We integrated libdrizzle directly into Nginx!

http://wiki.nginx.org/HttpDrizzleModule

Page 22: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 23: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 24: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 25: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 26: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 27: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Let's just mud with nginx.conf, the Nginx configuration file

Page 28: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

upstream my_mysql_backend { drizzle_server 127.0.0.1:3306 dbname=test password=some_pass user=monty protocol=mysql; # a connection pool that can cache up to # 200 mysql TCP connections drizzle_keepalive max=200 overflow=reject; }

Page 29: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

location ~ '^/cat/(.*)' { set $name $1; set_quote_sql_str $quoted_name $name; drizzle_query "select * from cats where name=$quoted_name"; drizzle_pass my_mysql_backend; rds_json on; }

Page 30: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

$ curl 'http://localhost/cat/Jerry' [{"name":"Jerry","age":1}]

Page 31: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The dynamic SQL Query for

This Request select * from cats where name='Jerry'

Page 32: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 33: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Slow MySQL Query again!

select sleep(1)

Page 34: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 35: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 36: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 37: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Small Resultset Again! select * from world.City order by ID limit 1

Page 38: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 39: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 40: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Big Resultset (100 KBytes) Again! select * from world.City order by ID limit 1000

Page 41: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 42: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 43: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

We also embedded Lua and LuaJITdirectly into Nginx!

http://wiki.nginx.org/HttpLuaModule

Page 44: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 45: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Use the Lua language to accessthe ngx_drizzle module!

Page 46: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 47: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

location = /api { content_by_lua ' local rds_parser = require "rds.parser" local cjson = require "cjson" local resp = ngx.location.capture("/cat/Jerry") local data, err = rds_parser.parse(res.body) ngx.print(cjson.encode(data.resultset)) '; }

Page 48: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

$ curl 'http://localhost/api' [{"name":"Jerry","age":1}]

Page 49: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Small Resultset Revisited! select * from world.City order by ID limit 1

Page 50: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 51: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 52: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Big Resultset (100 KBytes) Again! select * from world.City order by ID limit 1000

Page 53: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 54: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 55: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

I just implemented the Lua cosocket API!

http://wiki.nginx.org/HttpLuaModule#ngx.socket.tcp

Page 56: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

!! a socket API based on Lua coroutines !! a socket API that is synchronous !! a socket API that is nonblocking

Page 57: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 58: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

I wrote the lua-resty-mysql librarybased on the cosocket API.

http://github.com/agentzh/lua-resty-mysql

Page 59: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

It is a pure Lua MySQL driverwritten from scratch!

Page 60: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

local resty_mysql = require "resty.mysql" local mysql = resty_mysql:new() local ok, err = mysql:connect{ host = "127.0.0.1", port = 3306, database = "world", user = "monty", password = "some_pass" }

Page 61: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

local query = "select * from cats" local rows, err, errno, sqlstate = mysql:query(query) for i, row in ipairs(rows) do -- process the row table end

Page 62: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

-- add the current MySQL connection -- into the per-worker connection pool, -- with total capacity of 1024 connections and -- 60 seconds maximal connection idle time local ok, err = mysql:set_keepalive(60000, 1024)

Page 63: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Slow MySQL Query Revisited!

select sleep(1)

Page 64: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 65: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 66: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 67: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Small Resultset Revisited! select * from world.City order by ID limit 1

Page 68: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 69: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 70: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

The Fast MySQL Query

with a Big Resultset (100 KBytes) Revisited! select * from world.City order by ID limit 1000

Page 71: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 72: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 73: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

How about comparing withthe NodeJS world?

Page 74: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

♡ node 0.6.14 ♡ node mysql 0.9.5 ♡ node generic pool 1.0.9

Page 75: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 76: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 77: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 78: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 79: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Caching responses withngx_srcache + ngx_memc

http://wiki.nginx.org/HttpSRCacheModule

http://wiki.nginx.org/HttpMemcModule

Page 80: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 81: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

# configure the cache storage location location /memc { internal; set $memc_key $query_string; set $memc_exptime 300; memc_pass 127.0.0.1:11211; }

Page 82: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

location = /api { set $key "$uri?$args"; srcache_fetch GET /memc $key; srcache_store PUT /memc $key; # drizzle_pass/fastcgi_pass/content_by_lua/... }

Page 83: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 84: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 85: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 86: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Find the source for

all the benchmarks given here:

http://github.com/agentzh/mysql-driver-benchmark

Page 87: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Any questions?

http://openresty.org

https://groups.google.com/group/openresty

Page 88: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com

Scr

Page 89: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 90: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 91: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 92: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 93: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 94: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 95: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 96: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 97: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 98: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 99: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 100: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 101: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 102: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 103: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 104: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 105: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 106: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 107: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 108: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 109: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 110: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 111: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 112: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 113: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 114: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 115: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 116: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 117: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 118: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 119: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 120: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 121: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 122: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 123: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 124: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 125: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 126: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 127: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 128: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 129: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 130: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 131: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 132: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 133: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 134: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 135: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 136: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 137: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 138: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 139: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com
Page 140: Scripting libdrizzle with Lua inside Nginx - agentzhagentzh.org/misc/slides/libdrizzle-lua-nginx.pdf · Scripting libdrizzle with Lua inside Nginx 章亦春 (agentzh) agentzh@gmail.com