2015-03-12

Openresty介绍和架设记录

Openresty是一个http服务器端包和环境,可以用lua写基于http的程序。 我们的手游服务器就是完全基于Openresty的, 用下来1核1G的服务器至少支撑2000人在线。

金融行业内部的系统并不需要写成http应用,理论上直接用Luajit就行了,但我为了更方便的和各种网络结合, 比如抓取网页数据和消息、直观的显示统计后的分析图表、通过网页方便我在任何地方操作,等等。因此决定一开始就基于http写了。

Openresty是我在游戏开发过程中已经非常熟悉的东西了,速度快,http相关的功能也很到位。

Ubuntu架设记录,安装openresty:

#!/bin/sh
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make
#去官网找最新版本的地址:
wget http://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz
tar xzvf ngx_openresty-VERSION.tar.gz
cd ngx_openresty-VERSION/
./configure
make
make install

之后nginx的配置需要改的地方:

vi /usr/local/openresty/nginx/conf/nginx.conf
worker_processes auto; #用到多核
worker_connections 10240; #1024明显不够用

配置logrotate防止时间久了nginx的日志占满硬盘:

vi /etc/logrotate.d/nginx
#自动删52天前的日志,并压缩旧的,切换日志时会自动通知nginx
/usr/local/openresty/nginx/logs/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nobody nogroup
        sharedscripts
        postrotate
                [ -f /usr/local/openresty/nginx/logs/nginx.pid ] &&
                kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
        endscript
  }

之后是安装Systemtap分析工具,如果你想要你的应用最大化效率执行,你得经常用这个来看下你程序的瓶颈在哪。 我是Ubuntu操作系统:

#!/bin/sh
#先安装Debug调试符号库,添加ubuntu官方的含有调试符号库的源
sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
deb http://ddebs.ubuntu.com/ $(lsb_release -cs)      main restricted universe multiverse
deb http://ddebs.ubuntu.com/ $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com/ $(lsb_release -cs)-updates  main restricted universe multiverse
deb http://ddebs.ubuntu.com/ $(lsb_release -cs)-proposed main restricted universe multiverse
EOF

#添加ubuntu官方的key到apt里去,不然apt-get update会报错
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C01

#安装Debug调试符号库
sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym

#然后编译Systentap
sudo apt-get build-dep systemtap
git clone git://sourceware.org/git/systemtap.git
./configure --disable-docs --disable-publican --disable-refdocs
#这里make all xmlto要等一会,正常的
make all
sudo make install

#如果没有报找不到config文件,就是安装正常了
stap -ve 'probe begin { log("hello world") exit () }'

不过我还发现,linode的ubuntu,找了一圈没有官方的调试符号,不知道是不是要自己编译。直接放弃了。


回主页