性能优化总结

去年的一些优化尝试:
1.监控,找原因。
2.mysql操作替换成cache操作。
3.服务化框架。


4.uwsgi切换到gunicorn
5.迁移部分流量到jython
6.部分功能使用mongoDB
7.部分功能从python迁移到mandala,mani

1.利用监控找哪些页面慢。
    unread迁移到mongoDB

2. 数据从mysql到cache
    1.django默认的request.user是走mysql的,改成走memcached.
    2.之前UploadFile没有走cache,其实非常适合。
    3.cache使用情况和命中率统计。全网站高峰期每秒20000次get.

3. 对cache使用的一些总结
    1.cache是有使用成本的。
    原则.1.最小的成本带来最大的好处。2.命中率需要提前预估,低于75%算差。
    2.哪些地方适合加cache?
    a.生命周期很长,变化很小的数据适合加cache。所以,UploadFile很适合cache,而带有count的模型不适合加cahce。之前对UserProfile增加了cache,后来去掉了。
    b.同样的数据也有不同的生命周期,比如原发比较适合cache,转发不适合cache。
    c.cache的粒度不易太大。

    3.基于mongoDB的假想。
    json--一种天然的扩平台,易于理解的数据格式。
    现在cache中使用python pickle或者java序列化方式存在的问题?
    1. 性能。java中序列化远慢于json序列化。
    2. 保存的数据格式依赖于具体语言,python和java不互通,理想情况如果能像mongoDB或者mysql不依赖于具体语言更好。
    3. 人不可阅读。


1. 远程IO是耗时的

3. blog模型的变化

5. blogQueryService的职责和优化


6. join查询和拆分成多条sql的对比



4. dboss解决的问题
    1.http性能不好,良品购和评论之前之前都使用http的方式,结果是慢。
    2.http不可靠,之前评论使用http模式,一旦mandala的评论服务不可用,导致gu worker不断超时重启,整个网站都会被阻塞。
    3.随着网站业务的发展,不可避免需要对一些核心的功能提供统一的服务,这需要提供高可用的python到java,java到java的方法调用。
    4.web应用依赖于“服务”比依赖于具体的“资源”更简单。比如duitang如果依赖memcached,如果需要对memcached server的调整,需要重新发布每台web服务器。另外connection连接也消耗比较大,如果再遇上client写的有问题,系统更加不稳定。其实cache在我看来一些抽象功能,可以理解成提供一些功能的服务,具体远程是通过memcached还是redis还是TT,这是远程服务需要做的事情,web服务器不用关心。


5. dboss的基本原理


6. dboss特性  
    1. 高性能

    2. 高可靠
   
    3. connection长连接和connection pool
   
    4. server发布时,client自动重试

7. dboss如何做到这些

    1. python client
    2. 基于netty的nio模型,不会阻塞IO。

8. 简单介绍一下如何使用

你可能感兴趣的:(性能优化)