如何快速用openresty搭建高性能服务端(Nginx+lua)

高性能服务端两个重要要素:缓存+语言支持异步非堵塞
缓存:内存>SSD>机械磁盘 本机>网络 进程内>进程间
异步非阻塞:事件驱动方式(事件完成后再通知)
OpenResty:颠覆了高性能服务端的开发模式(Nginx+LuaJIT)
Nginx:负载均衡+反向代理 Nginx c module
Lua:嵌入式脚本语言(网游中用的较多)
LuaJIT:OpenResty用的LuaJIT主打性能的Lua
OpenResty原理:LuaJIT的虚拟机嵌入到Nginx的worker中,所以效率特别高

对比:
node.js:第一门将异步非阻塞特性放入自己语言中的,但是node.js用回调callback实现异步非阻塞
Python:版本跨度大
Golang:
SystemTap:
BaaS:

openresty安装搭建

  • 使用 apt-get安装以下的开发库:
    apt-get install libpcre3-dev
    libssl-dev perl make build-essential curl

  • 下载
    从下载页 Download下载最新的 OpenResty® 源码包,并且像下面的示例一样将其解压:
    tar -xzvf openresty-VERSION.tar.gz
    VERSION 的地方替换成您下载的源码包的版本号,比如说 0.8.54.6。
    ./configure

  • 然后在进入 openresty-VERSION/ 目录, 然后输入以下命令配置:
    ./configure
    默认, --prefix=/usr/local/openresty 程序会被安装到/usr/local/openresty目录。
    您可以指定各种选项,比如
    ./configure --prefix=/opt/openresty
    –with-luajit
    –without-http_redis2_module
    –with-http_iconv_module
    –with-http_postgres_module
    试着使用 ./configure --help 查看更多的选项。
    配置文件(./configure script)运行出错可以到 build/nginx-VERSION/objs/autoconf.err 找到。 VERSION 的地方必须与OpenResty版本号相对应, 比如 0.8.54.6。

  • make
    您可以使用下面的命令来编译:
    make
    如果您的电脑支持多核 make 工作的特性, 您可以这样编译:
    make -j2
    假设您是的机器是双核。

  • make install
    如果前面的步骤都没有问题的话,您可以使用下面的命令安装l OpenResty到您的系统之中:make install
    在 Linux,通常包括 sudo来执行root权限做的事情。

  • 启动(路径请参考修改)
    sudo /opt/openresty/nginx/sbin/nginx -c /opt/openresty/nginx/conf/nginx.conf -p /opt/openresty/nginx/

  • 重启动:
    sudo /opt/openresty/nginx/sbin/nginx -c /opt/openresty/nginx/conf/nginx.conf -p /opt/openresty/nginx/

openserty连接MySQL

openserty连接Redis

openserty缓存

share_dic(纯内存工作。预置内存大小)

1、nginx.con修改加上:

2、修改lua(充分利用内存卡空间。多个worker用同一份数据。但是会产生锁的操作。)

lua-resty-lrucache(预置key个数;每个worker单独占用,不会产生锁的竞争;但是你内存占用叫道)

在这里插入图片描述

原文地址:https://www.cnblogs.com/smileyqp/p/12675396.html