【django轻量级框架】项目响应速度慢相关问题的解决

1 原因分析

是Python环境问题,到服务器上各种虚拟环境版本进行尝试,无果。
mysql数据库,开始用pymysql包连接改动了一些参数,担心是驱动问题导致数据库查的慢,更换mysqlclient包后,响应依旧慢。
都说用uwsgi中间件部署Django能加快响应速度,尝试之,没用。
为什么mysql响应这么慢,百度一番后发现原因

mysql建立连接之前会根据连接的ip反向查找对应的主机名,这一步会涉及DNS反向解析(如果本地hosts文件没有指定就会找其他服务器查询),这个过程会消耗时间。

于是登陆数据库所在主机,通过命令"nslookup IP地址"分别查询本地IP和服务器IP,本地IP查询结果很快返回(不在一个网段找不到),服务器IP结果非常慢直到超时否没返回,这就解释了为什么前文【windows机器反应快,linux反应慢】的问题。至于为什么反向解析服务器IP这么慢,这个问题就不再继续挖下去了,应该是网管没有配置好相关的解析吧。

 

解决办法:禁用反向解析,找到mysql的配置文件/etc/my.cnf,增加一行配置,重启以后数据库响应速度就完美了。

1

2

[mysqld]

skip-name-resolve

 

既然这个反向解析这么耗时,为什么还要有这个流程呢?

还记得mysql的授权命令吗:

1

grant all priviledges on *.* to "user"@"%" identified by "pass"

@后面的%就代表任意的主机名和ip地址,对!这个地方是可以根据主机名来授权的,如果把反向DNS解析关掉了,这里就会有问题,授权的时候就只能根据ip进行授权啦~

2 解决办法举例

对于一个后台程序员来说,提高系统性能的指标主要有两个:一个是并发数,另一个是响应时间。
所以需要对系统性能进行优化,系统性能一般有:web前端性能优化,应该服务性能优化,存储服务器优化。

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

    对个人优化有一下做法:
    1.合理使用缓存技术,对一些常用到的动态数据,如:首页做一个缓存,或者某些常用的数据做缓存处理,设置一定的过期时间,减少数据库的压力,提高系统性能。
    2.使用celery 消息队列,将耗时操作放到队列中,让worker去监听队列中的任务,实现异步操作,如发短信、发邮件。
    3.代码上的优化;nginx部署项目也是项目优化,可以配置合适的配置参数,提高效率,增加并发量。
    4.如果考虑安全因素,服务器磁盘使用固态硬盘读写,远远大于机械硬盘,该技术暂时未普及,固态硬盘尚未完全成熟。
    5.可以搭建服务器集群,将并发访问请求,分散到多台服务器上处理。
    6.最后就是运维工作人员的一些性能优化技术了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理想不闪火

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值