构建高性能Django站点
  性能 可用 伸缩 扩展 安全
build

1、审慎引入第三方库(是否活跃、是否带入query、是否容易缓存)

2、db:减少query次数

    减少耗时query

    减小返回集

    缓存查询结果   johnny.cache

    读写分离

3、模板:俄罗斯套娃式缓存

4、耗时操作异步处理  celery

5、前端:压缩js/css   django-pipeline/django-compressor

      分析性能     Django Debug Toolbar/YSlow/PageSpeed

      压缩图片     pngcrush

      压缩上传图片 easy-thumbnails

CDN  

    

重点在测试

1、单元测试

2、代码覆盖率

3、代码规范 - pep8

4、功能测试 - Selenium

5、压力测试 - Jmeter

django-discover-jenkins可以同时输出上述指标

  1、settings文件分base、dev、deploy  
deploy

1、操作系统用Ubuntu LTS

2、配置合适varnish参数

3、配置合适uwsgi参数

4、配置合适数据库参数

5、优化缓存  django-redis

6、监控实时性能  Graphite

1、配置管理工具 ansible/salt

2、进程管理工具 系统的upstart/systemd,第三方的daemontools/supervisord

3、脚本执行代码更新过程  Fabric

4、检查是否有单点故障 chaos monkey

5、缓存:   防止缓存key过期而涌入db   django-newcache

       缓存服务器宕机可能返回500   django-ft-cache

6、监控出现异常错误   Nagios/Riemann

集群   检查安全性  django-secure
lanuch  

1、新系统先小范围试运行后,再推广

2、更新代码,先更新集群中部分机器(当然session要通用)

3、准备好可以回滚

     
ahead

监控各重要部件:

1、varnish命中率  varnishstat

2、uwsgi   uwsgitop

3、消息队列    celery的inspect命令

4、缓存   memcache-top

      确保开启了定时持久化功能

5、数据库   pg_top/mytop

High Performance Django的更多相关文章

  1. Awesome Django

     Awesome Django    If you find Awesome Django useful, please consider donating to help maintain it. ...

  2. Django 优秀资源大全

    版权: https://github.com/haiiiiiyun/awesome-django-cn 转自:https://www.jianshu.com/p/38c4dd6d8e28 Awesom ...

  3. Django performance

    Reference: https://impythonist.wordpress.com/2016/02/21/building-high-performance-django-systems/ Th ...

  4. Python自动化之django的ORM操作——Python源码

    """ The main QuerySet implementation. This provides the public API for the ORM. " ...

  5. Apache部署django项目

    在此之前,我们一直使用django的manage.py 的runserver 命令来运行django应用,但这只是我们的开发环境,当项目真正部署上线的时候这做就不可行了,必须将我们的项目部署到特定的w ...

  6. django - from django.db.models import F - class F

    F() 的执行不经过 python解释器,不经过本机内存,是生成 SQL语句的执行. # Tintin filed a news story! reporter = Reporters.objects ...

  7. win7下,使用django运行django-admin.py无法创建网站

    安装django的步骤: 1.安装python,选择默认安装在c盘即可.设置环境变量path,值添加python的安装路径. 2.下载ez_setup.py,下载地址:http://peak.tele ...

  8. Django Model field reference

    ===================== Model field reference ===================== .. module:: django.db.models.field ...

  9. Django访问量和页面点击数统计

    http://blog.csdn.net/pipisorry/article/details/47396311 下面是在模板中做一个简单的页面点击数统计.model阅读量统计.用户访问量统计的方法 简 ...

随机推荐

  1. C++模板(基础)

    本文转至:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类 ...

  2. js boolean 判断

    在写项目的时候出现了一个这样的问题,虽然问题解决了,但是还是有点疑问. 在数据库中设计的表的一个字段为是否审核(is_vaild) 类型 tinyint(1) 对应的在 java中就是布尔类型(boo ...

  3. HTTP 头部解释

    1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Charset:浏览器申明自己 ...

  4. table合并单元格colspan和rowspan .

    colspan和rowspan这两个属性用于创建特殊的表格. colspan是“column span(跨列)”的缩写.colspan属性用在td标签中,用来指定单元格横向跨越的列数: 在浏览器中将显 ...

  5. 数据库函数--nvl、coalesce、decode比较

    SQL中 nvl().coalesce().decode()这三个函数nvl(bonus,0) 2个参数 if bonus is null return 0 else return bonus,ora ...

  6. js键盘操作事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 6/7 Sprint2 看板和燃尽图

  8. Qt之加载QSS文件

    简述 Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(例如:QLable.QLineEdit.QPushButton)的样式,最后使用QA ...

  9. 关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

    1. 对JButton大小的设置 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dim ...

  10. Gliffy

    http://www.gliffy.com Gliffy 支持在线制作流程图,能够很好的支持中文,基础版本免费.在线制作的思维导图是公开的,高级版本有设置隐私权的权力.可以嵌入博客,办公室应用软件中, ...