• 如何快速用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单独占用,不会产生锁的竞争;但是你内存占用叫道)

    在这里插入图片描述

  • 相关阅读:
    MySQL基础
    MySQL约束
    firefox插件hostadmin自由切换host
    ITerm2下使用ssh访问Linux
    web优化(一 前端)
    php类的魔术方法也就是带下划线的类方法介绍及应用
    数据库水平切分的实现原理(分库,分表,主从,集群,负载均衡)
    三年以上php开发经验常见面试题
    php海量架构
    一个高级PHP工程师所应该具备的(转自元如枫博客)
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675396.html
Copyright © 2020-2023  润新知