首页 > 其他 > 详细

django高并发

时间:2021-04-23 16:14:00      阅读:44      评论:0      收藏:0      [点我收藏+]

一: nginx + uWSGI 提高 Django的并发性
        1. uWSGI :  
    使用uWSGI web服务器,它是WSGI协议的实现。

    uWSGI的主要特点是:

                 超快的性能
                低内存占用
                多app管理
                详尽的日志功能(可以用来分析app的性能和瓶颈)
                高度可定制(内存大小限制,服务一定次数后重启等)
               uWSGI服务器自己实现了基于uwsgi协议的server部分,我们只需要在uwsgi的配置文件中指定application的地址,uWSGI就能直接和应用框架中的WSGI application通信。

        2.  nginx :   
                Nginx 是一个高性能的负载均衡HTTP和反向代理服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件代理服务器。

                  特点是占有内存少,并发能力强,转发能力强

            结构与扩展:一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行;
  3. nginx和uWSGI的关系:
            nginx相当于是服务器,负责接收请求

            uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回,负责转发请求

            2个基本概念: 
                服务器(接收请求),应用程序(处理请求并返回)

            通信过程: 

                客户端发送一个http请求,被nginx服务器接收,nginx服务器将请求转发给uwsgi,uwsgi将请求转发给实现uwsgi

               协议的应用程序(flask,gunicorn等等)

二:对代码层面的优化

  对前端的优化主要有:
    1:减少 http 请求,减少数据库的访问量,比如使用雪碧图。
    2:使用浏览器缓存,将一些常用的 css,js,logo 图标,这些静态资源缓存到本地浏览器,通过设 置 http 头中的 cache-control 和 expires 的属性,可设定浏览器缓存,缓存时间可以自定义。
    3:对 html,css,javascript 文件进行压缩,减少网络的通信量。

  后端优化: 

    1:合理的使用缓存技术,对一些常用到的动态数据,比如首页做一个缓存,或者某些常用的数据做 个缓存,设置一定得过期时间,这样减少了对数据库的压力,提升网站性能。
    2:使用 celery 消息队列,将耗时的操作扔到队列里,让 worker 去监听队列里的任务,实现异步操 作,比如发邮件,发短信。
    3:如果数据只是存在mysql中做备份,建议使用异步的方式写入库,先把数据写到缓存下发给用户,之后在利用后台异步任务一点点的写入,例如聊天系统可以这样干

    4:就是代码上的一些优化,比如:不要在for循环内使用ORM的查询,改为在for循坏歪一次查询

    

  经过这些优化,单点部署的并发提高了,如果还想再高就可以考虑一下nginx的负载均衡

三:服务器集群与nginx负载均衡

  搭建服务器集群,将并发访问请求,分散到多台服务器上处理。

参考博客:https://www.cnblogs.com/slqt/p/10240311.html

django高并发

原文:https://www.cnblogs.com/blackali/p/14693309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!