优化网站响应时间方法
1、减少http请求
可以降低网站的响应时间和减少传输的数据,主要方法:
1)将多个图片合并成一个文件,减少图片下载的请求
2)合并js脚本和css样式文件
3)利用浏览器的缓存功能,避免重复下载相同的文件
2、动态内容静态化
针对一些内容不经常改变,可以将动态内容静态化,从而降低服务器的响应时间
3、优化数据库
4、使用负载均衡
单台web服务器处理能力有限,单台服务器承受压力达到极限时,需要更多的服务器分担工作。实现负载均衡的方法:http重定向、基于DNS的轮询解析、反向代理服务器。目的是把流量分配到更多的服务器,从而降低单台服务器的压力
5、使用缓存
缓存把需要花费昂贵开销的计算结果保存起来,在以后需要时直接取出,从而避免重复计算
Mysql响应速度提高方案:HandlerSocket
HandlerSocket概述:HandlerSocket是mysql的一个插件,集成在mysqld进程中,通过合并写入、简单协议等手段提高数据访问性能
HandlerSocket工作原理:HandlerSocket绕过mysql的sql解析层,直接访问mysql存储层
Mysq稳定性提高方案:主从复制
mysq主从复制的优点:
1)增加健壮性。主服务器出现问题时,切换到从服务器作为备份
2)优化响应时间。不要同时在主从服务器上进行更新,这样可能引起冲突
3)在从服务器备份过程中,主服务器继续处理更新
主从复制工作原理:通过3个实现过程,一个过程发生在主服务器上,两个过程发生在从服务器上
1)主服务器将用户对数据库更新的操作以二进制格式保存在binlog日志文件中,然后由binlog dump线程将日志文件传输给从服务器
2)从服务器通过一个I/O线程将主服务器的二进制文件更新操作复制到一个relay log的中继日志文件中
3)从服务器通过另一个sql线程将relay log中继日志文件的操作依次在本地执行,从而实现了主从之间的数据同步
主从复制配置:
1)确认主从服务器的Mysql版本
2)在主服务上为从服务器设置一个连接账户,授予REPLICATION SLAVE权限:GRANT REPLICATION SLAVE ON *.* TO 'username'@'%.mydomain.com' IDENTIFIED BY 'password';
3)配置主服务器:打开二进制文件,指定唯一Server ID
4)重启主服务器
5)配置从服务器:提供一个唯一Server ID,不能跟主服务器的server id一致,重启mysql服务器
6)启动从服务器
7)指定主服务器信息:不需要停止服务器,可以为从服务器指定不同的主服务器,CHANGE MASTER TO MASTER_HOST='主服务器的ip地址',
-> MASTER_USER='主服务器账户名',
-> MASTER_PASSWORD='主服务账户密码',
-> MASTER_LOG_FILE='二进制文件名'
-> MASTER_LOG_POS=0(从日志的开始位置开始读)
8)查看从服务器的设置是否正确:show slave status\G
web应用加速方案(反向代理)
代理服务器概述:介于客户端和web服务器之间的另一台服务器称为代理服务器。具有缓存功能,有很大的存储空间,不断将新取得的数据存到本地的存储器上,如果已经存在用户请求的数据会直接将数据发送给用户,从而显著提高浏览速度和效率
代理服务器工作流程:浏览器不直接到web服务器取回网页,而向代理服务器发出请求,信号先送到代理服务器,由代理度武器取回浏览器锁需要信息并传送给浏览器
代理服务器作用:
1)利用反向代理服务器的安全特性处理事务
2)利用高速缓存特性在高并发量的服务器上加速
反向代理服务器:Nginx(也是高性能web服务器)、Squid(功能非常强大,可以做传统代理、访问控制、身份验证、流量管理。squid体积非常庞大,配置过于复杂)、Varnish(专注于反向代理,更简单、效率更高)
异步计算方案:Gearman
web应用比较耗时的操作:
1)剪裁用户上传的图片,或者生成缩略图
2)用户上传文件分发到多台服务器上
3)对上传视频进行转码
Geraman概述:Gearman是一个分发任务的程序框架。包含3部分:Client(创建并发起一个Job请求)、Job Server(找到合适的worker,并把job交给worker)、Worker(执行job,所有job都是由worker完成)。可以使用Gearman异步发送邮件
Geraman工作流程:Client负责把一个job发送给job server,job server从worker群中找到合适的worker并发送job。worker负责处理job,完成后把结果发送给job server,接着job server 把worker发送的结果返回给client。另外gearman支持异步模式,client不必等待worker返回处理结果而直接返回,从而实现异步计算
需要了解并掌握的知识:
1、吞吐率:单位时间内服务器处理的请求数
2、压力测试:测试工具LoadRunner、Jmeter、ab
ab是apache附带的压力测试软件,容易使用,ab常用的参数:
1)-n:在测试会话中执行的请求个数,默认执行一个请求
2)-c:要创建的并发用户数,默认创建一个用户数
3)-t:等待web服务器响应的最大时间(秒),默认没有时间限制
4)-k:使用Keep-Alive特性
5)-c:对请求附加一个Cookie
3、持久连接:又称为长连接,指tcp连接中持续发送多分数据而不断开的连接,与之对应的称为短连接,就是连接后发送一次数据便断开连接。