您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

时间:2022-01-30 11:16:23  来源:  作者:怀揣梦想的软件人生

什么是Gunicorn?Gunicorn(绿色独角兽)是一个用于UNIX的Python WSGI HTTP服务器。这是从Ruby的Unicorn项目移植来的一个前fork工作器模型。Gunicorn服务器广泛兼容各种web框架,并具有实现简单,轻量级,高性能等特点。它用来解析HTTP请求的网关服务。它通常是在进行反向代理(如Nginx),或者进行负载均衡(如 AWS ELB)和一个web 应用(比如 Django 或者 Flask)之间。它的运行模型基于pre-fork worker 模型,即就是支持eventlet,也支持greenletGunicorn服务器作为wsgi App的容器,能够与各种 Web 框架兼容(flask,django 等,得益于gevent 等技术,使用Gunicorn能够在基本不改变wsgi app 代码的前提下,大幅度提高 wsgi app的性能。目前Gunicorn最新版本为20.1.0,官方文档地址:
https://docs.gunicorn.org/en/20.1.0/,如下图:

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

Gunicorn 20.1.0官方文档

静态资源可以使用nigix,动态资源使用Gunicorn,结构如下图:

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

nigix+Gunicorn结构

与uWSGI的性能比较,Gunicorn性能表现突出,如下图:

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

与uWSGI的性能比较

Gunicorn特点:

1.本身支持WSGI、web2py、Django和Paster,能和大多数的Python Web框架兼容

2.自动辅助进程管理

3.简单的Python配置

4.允许配置多个工作环境

5.各种服务器的可扩展钩子

6.兼容Python 3。 x > = 3.5

7.简单易上手,轻量级的资源消耗

不过目前gunicorn只能运行在linux环境中,不支持windows平台。

Python自带的有个web服务器:wsgiref,Python是单进程的语言,当进程阻塞时,后续请求将排队处理,因此在生产环境不会使用单进程的Web服务器。Gunicorn的优势在于,它使用了pre-fork worker模式,也就意味着有一个中心管理进程(master process)用来管理worker进程集合。Master从不知道任何关于客户端的信息。所有的请求和响应处理都是由worker进程来处理的。Master(管理者)主程序是一个简单的循环,监听各种信号以及相应的响应进程。master 管理着正在运行的 worker 集合,通过监听各种信号比如TTIN,TTOU,and CHLD. TTIN and TTOU 响应的增加和减少worker的数目。CHLD信号表明一个子进程已经结束了,在这种情况下master会自动地重启失败的 worker。gunicorn在启动时,会在主进程中预先fork出指定数量的worker进程来处理请求,gunicorn依靠操作系统来提供负载均衡,推进的worker数量是(2*核数)+1,比如2核的CPU,则worker数量为2*2+1=5

注:master进程不是管理处理请求的,只负责管理worker进程,比如对worker进程的创建、销毁、以及根据负载情况增减。(启动时设置的–workers参数只是worker数,而gunicorn还会创建个master进程。所以,即使配置workers为1,你的app也至少有两个进程:master负责管理,worker负责处理请求)。

对于Gunicorn来说,gunicorn是WSGI的实现,但同时也自带web server,能直接对外提供web服务。包括大部分的web app框架,比如Flask和Django也都带有web server。但是,在生产环境中,一般它们都是各司其职的,Web框架Flask、Django只用于写app、Gunicorn只用于运行和管理Python web app,而在它们有专门的web server,比如Nginx

Gunicorn支持多种worker_class工作模式,默认使用sync,具体如下:

1.sync:同步的工作模式, 性能最差

2.eventlet: 协程的工作模式

3.gevent: 协程的工作模式

4.tornado:基于tornado

5.gthread: 多线程模式 利用线程池管理连接

6.gaiohttp:基于aiohttp

安装Gunicorn,前提需要安装好Python:

pip install gunicorn

执行:gunicorn -h,执行成功如下图:

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

gunicorn执行成功

查看gunicorn的版本如下:

pip show gunicorn
高性能的Web服务器Gunicorn 20.1配置Superset 1.4

查看gunicorn的版本

如果想让Gunicorn支持异步workers的话,需要安装一下三个python包:

pip install greenlet
pip install eventlet
pip install gevent

Apache Superset是一个开源的、现代的、轻量级BI分析工具,能够对接多种数据源、拥有丰富的图标展示形式、支持自定义仪表盘,且拥有友好的用户界面,十分易用。具体可以参考我之前写的几篇关于Superset的文章:

1.《一个开源免费高颜值的轻量级商业智能BI平台Superset 介绍

2.《开源自助商业分析BI工具SuperSet 1.3.2快速入门(以CSV文件数据)

3.《开源轻量级BI平台Superset的SQL编辑器使用指南

4.《解决开源轻量级BI平台SuperSet连接SAP Hana数据库的方案

5.《开源轻量级BI平台的Superset的数据集使用指南

在开发或测试环境下,我们可以用Superset自带的运行命令:

superset run -h 0.0.0.0 -p 8089

采用此种方式会有一个提示,此方式为非生产环境的部署,如下图:

* Environment: production

WARNING: This is a development server. Do not use it in a production deployment.

Use a production WSGI server instead.

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

Superset自带运行方式

Superset官方建议生产环境默认用gunicorn,gunicorn运行superset如下:

gunicorn -w 5 -k gevent --timeout 120 -b  0.0.0.0:8089 --limit-request-line 0 --limit-request-field_size 0 "superset.app:create_app()"  --log-level info --access-logfile logfile.log --log-file error.log --daemon 
高性能的Web服务器Gunicorn 20.1配置Superset 1.4

gunicorn运行superset

--workers:指定进程个数

--timeout:worker进程超时时间,超时会自动重启

--bind:绑定本机地址,即为Superset访问地址

--limit_request_line:http request line最大字节数。值范围0-8190, 0表示无限制


--limit_request_field_size:http request header字段最大字节数。0表示无限制

--worker_class:worker进程的工作方式。 有 sync, eventlet, gevent, tornado, gthread, 缺省值sync

--worker_connections:客户端最大同时连接数。只适用于eventlet, gevent工作方式

--daemon:后台运行,如果处于调试阶段建议不加

--error-logfile:输出日志

高性能的Web服务器Gunicorn 20.1配置Superset 1.4

运行superset成功


高性能的Web服务器Gunicorn 20.1配置Superset 1.4

登录superset成功

gunicorn详细配置可参考官网文档:
https://docs.gunicorn.org/en/20.1.0/settings.html,这里就不一一介绍了。



Tags:Gunicorn   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
什么是Gunicorn?Gunicorn(绿色独角兽)是一个用于UNIX的Python WSGI HTTP服务器。这是从Ruby的Unicorn项目移植来的一个前fork工作器模型。Gunicorn服务器广泛兼容各种web框架,并...【详细内容】
2022-01-30  Tags: Gunicorn  点击:(0)  评论:(0)  加入收藏
▌简易百科推荐
什么是Gunicorn?Gunicorn(绿色独角兽)是一个用于UNIX的Python WSGI HTTP服务器。这是从Ruby的Unicorn项目移植来的一个前fork工作器模型。Gunicorn服务器广泛兼容各种web框架,并...【详细内容】
2022-01-30  怀揣梦想的软件人生    Tags:Gunicorn   点击:(0)  评论:(0)  加入收藏
因为工作网络的特殊性,服务器是不连互联网的,所以整个安装过程都是采用离线包安装的方式来安装。Nginx安装用root用户安装,采用源代码编译的方式来进行安装,首先下载nginx安装要...【详细内容】
2022-01-28  ctools    Tags:nginx   点击:(7)  评论:(0)  加入收藏
需要在服务器上实现个TCP服务器, 由于已安装了nginx, 所以在nginx中给TCP开个口子。stream模块网上文章的说法都是, 1.9.0版之后nginx开始具有TCP/UDP的代理转发功能, 但需...【详细内容】
2022-01-25  有AI野心的电工和码农    Tags:nginx   点击:(7)  评论:(0)  加入收藏
奇葩的要求年年有,这个要求特别怪,跑路的网管有这么可怕吗?付费让我们重置了防火墙,还要求我们重建域服务器和文件服务器。等我们建立好域控,部署完文件服务器,权限也设置完毕,却又...【详细内容】
2022-01-25  IT狂人日志    Tags:服务器   点击:(6)  评论:(0)  加入收藏
Ingress配置转发端口本质Ingress配置转发端口本质,还是利用service nodePort能力,通过暴露ingress的本地端口来转发。Ingress默认不支持TCP or UDP services。因此Ingress con...【详细内容】
2022-01-21  爱思考乔斯林0H0    Tags:kubernetes   点击:(16)  评论:(0)  加入收藏
对于普通人来说,云计算是一个离我们很近,同时离我们也很远的存在。之所以说它“近”,是因为云计算的应用已经深入到我们生活的方方面面,由云服务器所承载的各类程序应用已经无处...【详细内容】
2022-01-14    中关村在线  Tags:云服务器   点击:(11)  评论:(0)  加入收藏
很多站长都发现了同一问题,就是网站使用时间长了,卡顿延迟的问题越来越明显。我们可以看看是不是网站的虚拟主机流量被限制了。很多站长可能不知道,虚拟主机被限制流量是什么回...【详细内容】
2022-01-10  群英网络  搜狐号  Tags:流量限制   点击:(24)  评论:(0)  加入收藏
不知道站长们在使用云服务器的时候有没有遇到过卡顿或者无法访问的情况呢?这个时候我们应该考虑是不是云服务器的流量超限。那么如果云服务器出现流量超限我们要做什么呢?有哪...【详细内容】
2022-01-10  群英网络  搜狐号  Tags:服务器流量   点击:(28)  评论:(0)  加入收藏
云服务器使用时间越长,上面积累的文件也就越多,特别是做网站的云服务器,网站的数据不断更新,服务器的内存空间就这么大,一直不断消耗,总是会消耗殆尽的。定期做好云服务器的内容管...【详细内容】
2022-01-10  群英网络    Tags:云服务器   点击:(28)  评论:(0)  加入收藏
虚拟主机:一台服务器通过虚拟技术将有限的虚拟空间给切割成若干个小的虚拟空间,每个虚拟空间就是一台虚拟主机。每台虚拟主机都是有独立的域名和IP地址的,并且具有完整的Intern...【详细内容】
2022-01-10  科技鉴解    Tags:云服务器   点击:(26)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条