运行多个Tornado实例

网页响应不是特别的计算密集型处理
多个实例充分利用 CPU
多端口怎么处理
4.
使用Supervisor监控Tornado进程
安装(注意看是否需要指定使用python2版本)

sudo pip2 install supervisor
安装完之后先启动 sudo supervisord
1
2
检查配置文件 /etc/supervisor/supervisord.conf 没有的话自己创建
echo_supervisord_conf > /etc/supervisor/supervisord.conf

增加 Supervisor 配置文件到 /etc/supervisor/conf.d
增加一个tornadoes组

[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002

# 分别定义三个tornado的进程配置

[program:tornado-8000]
directory=/home/pyvip/ws/tudo/ ; 程序的启动目录
command=/home/pyvip/.virtualenvs/py3/bin/python app.py --port=8080 ; 启动命令,与手动在命令行启动的命令是一样的,注意这里home不可用~代替
autostart=true ; 在 supervisord 启动的时候也自动启动
startsecs=5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart=true ; 程序异常退出后自动重启
startretries=3 ; 启动失败自动重试次数,默认是 3
user=pyvip ; 用哪个用户启动
redirect_stderr=true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /tmp/tornado_app_8000.log
loglevel=info

[program:tornado-8001]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8001
autostart=true
startsecs=5
autorestart=true
startretries=3
user=pyvip
redirect_stderr=true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8001.log
loglevel=info

[program:tornado-8002]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8002
autostart=true
startsecs=5
autorestart=true
startretries=3
user=pyvip
redirect_stderr=true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8002.log
loglevel=info
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
启动和管理

启动supervisor

使用默认的配置文件 /etc/supervisor/supervisord.conf

sudo supervisord

明确指定配置文件

sudo supervisord -c /home/pyvip/working/supervisord.con

使用 user 用户启动supervisord

sudo supervisord -u user

查看、操作进程状态

(tornado) pyvip@Vip:~/ws/tudo$ sudo supervisorctl

[sudo] password for pyvip:

tornadoes:tornado-8000 RUNNING pid 17652, uptime 0:00:28

tornadoes:tornado-8001 RUNNING pid 17653, uptime 0:00:28

tornadoes:tornado-8002 RUNNING pid 17654, uptime 0:00:28

停止运行tornado-8001服务器进程
supervisor> stop tornadoes:tornado-8001

tornados:tornado-8001: stopped

停止运行整个tornado服务器进程组
supervisor> stop tornadoes:

tornadoes:tornado-8000: stopped

tornadoes:tornado-8001: stopped

tornadoes:tornado-8002: stopped

supervisor> status

tornadoes:tornado-8000 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8001 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8002 STOPPED Jun 26 07:43 PM

supervisorctl 命令介绍

停止某一个进程,program_name 为 [program:x] 里的 x

supervisorctl stop program_name

启动某个进程

supervisorctl start program_name

重启某个进程

supervisorctl restart program_name

结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)

supervisorctl stop groupworker:

结束 groupworker:name1 这个进程 (start,restart 同理)

supervisorctl stop groupworker:name1

停止全部进程,注:start、restart、stop 都不会载入最新的配置文件

supervisorctl stop all

载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程

supervisorctl reload

根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

supervisorctl update

如果让supervisor 在web页面上展示,需要修改/etc/supervisor/supervisord.conf配置文件(有用户名密码),然后按照以下方式重新加载:

sudo supervisorctl -u user -p 123 reload

使用 Nginx 作为反向代理
搭配 tornado 服务使用

安装和运行

安装
sudo apt-get install nginx
检测配置文件正确可用
sudo nginx -t
运行
sudo nginx
修改了配置文件后重启
sudo nginx -s reload
nginx 配置文件

主配置文件是 /etc/nginx/nginx.conf

项目对应的配置文件放到 /etc/nginx/conf.d/ 或者 /etc/nginx/sites-enabled/

upstream tornadoes{
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}

proxy_next_upstream error;

server {
listen 8888; # 一般是 80
server_name 127.0.0.1;

location /{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
# 把请求方向代理传给tornado服务器,负载均衡
proxy_pass http://tornadoes;
}
}

Tornado部署与运行的更多相关文章

  1. Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...

  2. 用Java为Hyperledger Fabric(超级账本)开发区块链智能合约链代码之部署与运行示例代码

    部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger ...

  3. 单点登录(五)-----遇到问题-----cas server 源码部署tomcat运行报错BeanCreationException:Error creating bean with name 's

    我们在上一篇文章已经解决了把下载好的cas server源码部署到tomcat缺少子项目编辑文件或者jar包导致找不到class报错的问题 单点登录(四)-----遇到问题-----cas serve ...

  4. 单点登录(四)-----遇到问题-----cas server 源码部署tomcat运行报错ClassNotFoundException: org.jasig.cas.CasEnvironmentCo

    情况 cas单点登录 cas server 源码部署tomcat运行报错 把cas server的代码下载下来后使用gradle插件或者maven插件以及转化成eclipse·后导入发现部署到tomc ...

  5. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  6. 腾讯云上面部署PHP运行环境

    现在云服务器已经很普及了,其价格.安全优势等成为不少开发者的首选.本人由于兴趣爱好,从朋友那边借了一个过来玩了两天,下面就分享整个部署流程吧. 1. 先到腾讯云官网购买服务器,这边就不演示.很简单,跟 ...

  7. 笔记-爬虫部署及运行工具-scrapydweb

    笔记-爬虫部署及运行工具-scrapydweb 1.      简介 scrapyd是爬虫部署工具,但它的ui比较简单,使用不是很方便. scrapydweb以scrapyd为基础,增加了ui界面和监 ...

  8. Centos7上一次War包的部署与运行

    Centos7上一次War包的部署与运行 前言 由于前段时间第一次部署一个小型的项目,时间一长所以有些步骤有时候时间一长就忘了,在此做个简单的记录 一.原始系统开发环境 操作系统:Windows10: ...

  9. Kettle学习笔记(一)— 环境部署及运行

    目录 Kettle学习笔记(一)-环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle简介 Ket ...

随机推荐

  1. ElasticSearch + Canal 开发千万级的实时搜索系统【转】

    公司是做社交相关产品的,社交类产品对搜索功能需求要求就比较高,需要根据用户城市.用户ID昵称等进行搜索. 项目原先的搜索接口采用SQL查询的方式实现,数据库表采用了按城市分表的方式.但随着业务的发展, ...

  2. poj-3461-kmp模板题。。。

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 46290   Accepted: 18452 Descript ...

  3. JQuery对象与javascript对象的转换

    jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象. jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $(&qu ...

  4. 几款必备LINUX的命令行神器

    Dstat & sar iostat, vmstat, ifstat 三合一的工具,用来查看系统性能(我在<性能调优攻略>中提到过那三个xxstat工具). 官方网站:http:/ ...

  5. 基本http服务性能测试(Python vs Golang)

    最近学习Golang,总想体验下并发到底有多叼,必我大 python强势多少. 学习了官方教程的http 服务,用性能测试工具wrk测试了下,发现结果很令人惊讶- wrk可以参考我的博客,有基本用法说 ...

  6. SSH 暴力破解趋势——植入的恶意文件属 DDoS 类型的恶意文件最多,接近70%,包括 Ganiw、 Dofloo、Mirai、 Xarcen、 PNScan、 LuaBot、 Ddostf等家族。此外挂机、比特币等挖矿程序占5.21%

    SSH 暴力破解趋势:从云平台向物联网设备迁移 | 云鼎实验室出品 from: http://www.freebuf.com/articles/paper/177473.html 导语:近日,腾讯云发 ...

  7. 项目提交到github的忽略文件

    1.在工作区的.gitignore文件中配置如下: # Built application files*.apk*.ap_ # Files for the Dalvik VM*.dex # Java ...

  8. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  9. volatile关键字解析(二)

    volatile详解接下来,我们详细讲述一下volatile关键字volatile关键字具有两重语义 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这个新值对其他线程来说是 ...

  10. 深度学习(六十四)Faster R-CNN物体检测