1.1 gunicorn介绍

   1、Gunicorn

      1. Gunicorn是使用Python实现的WSGI服务器, 直接提供了http服务, 并且在woker上提供了多种选择, gevent, eventlet这些都支持

      2. 在多worker最大化里用CPU的同时, 还可以使用协程来提供并发支撑, 对于网络IO密集的服务比较有利.

      说明:

        1)同时Gunicorn也很容易就改造成一个TCP的服务, 比如doge重写worker类。
        2)在针对长连接的服务时, 最好开启reuse_port, 避免worker进程负载不均。

   2、uWSGI 与 Gunicorn

      1. 不同于Gunicorn, uWSGI是使用C写的, 它的socket fd创建, worker进程的启动都是使用C语言系统接口来实现的

      2. 在worker进程处理循环中, 解析了http请求后, 使用python的C接口生成environ对象

      3. 再把这个对象作为参数塞到暴露出来的WSGI application函数中调用.

      4. 而这一切都是在C程序中进行, 只是在处理请求的时候交给python虚拟机调用application.

      5. 完全使用C语言实现的好处是性能会好一些.

  3、uWSGI与Gunicorn性能比较

    1)说明

        压力测试工具为ab test,前置了nginx把静态文件剥离了,
        两者都是用了2process+2thread,压力为100-1000。

    2)测试结果

        参考博客:https://jinzhao.me/archives/470

        1. 总共耗时上差的微乎其微,这点差别不能说明什么;
        2. 两者都完成了所有请求,这里说一下,之所以选1000就是因为2000两种方式都会崩溃;
        3. 平均时间uwsgi胜出,这里差别不明显,但是也说明总体性能上uwsgi做的彻底;
        4. 连接时间上,两者明显在1000下都吃力了,但是uwsgi表现更好,除了c我觉得使用uwsgi自己的协议也有关系;
        5. 最后也是最重要的,在高并发下,明显uwsgi的表现更好一点,
        6. 很有意思的是在80%以下的正常流量范围内反倒gunicorn更好,而且效果显著
        7. 100ms还是比较可观的,我想这才是大家都用gunicorn的主要原因吧。

1.2  Django + Gunicorn + Nginx 的生产环境部署

  1、在centos 7中安装python3环境

# 1、yum更新yum源
yum update
# 2、安装Python 3.7所需的依赖否则安装后没有pip3包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
# 3、在官网下载所需版本,这里用的是3.7.0版本
wget https://www.python.org/ftp/3.7.0/Python-3.7.0.tgz
1、安装依赖&下载python3.7

相关文章:

  • 2022-12-23
  • 2021-06-20
  • 2022-12-23
  • 2021-07-23
  • 2021-05-10
  • 2022-01-25
  • 2022-01-31
猜你喜欢
  • 2021-07-29
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2021-04-19
相关资源
相似解决方案