如何快速用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/

openserty連接MySQL

openserty連接Redis

openserty緩存

share_dic(純內存工作。預置內存大小)

1、nginx.con修改加上:

2、修改lua(充分利用內存卡空間。多個worker用同一份數據。但是會產生鎖的操作。)

lua-resty-lrucache(預置key個數;每個worker單獨佔用,不會產生鎖的競爭;但是你內存佔用叫道)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章