大流量网站怎么优化
最近面试总是多多少少会出现这个问题,虽然老高的网站流量不大,但是如果解决这个问题,但是在理论上还是能回答的。
首先能够明确的是,一般问这个问题的人应该没听过C10K这个问题吧,注意修饰词一般。所以你有挺高的概率不需要从更底层的回答这个问题,比如多线程和多进程的取舍,或者使用异步和非阻塞等等。。。不过老高还是建议你去了解一下C10K这个概念!这个地方有原文点我,这个地方有翻译点我
这个问题回答的方式,出发点很多。老高认为这样回答比较好:
上牛
庖丁解牛这个成语大家一定听过,第一步我们要做的就是先把牛端上来。
所以,我们首先这样说:
在排出与数据链路层以下相关的概念后,当一个用户在浏览器输入一个网址后,首先DNS需要解析网址为IP,然后有客户端通过既定的IP:PORT形式链接目标服务器,当服务器接收到请求的时候,服务器一般会进行一些运算,然后进行响应,用户收到相信的信息后街完成了一次标准的HTTP请求。
如果怕面试官问到TCP/IP,比如TCP是怎么链接的,那么请深入阅读鸟哥的私房菜或者看看老高的鸟哥的私房菜学习笔记 -- 网络速查补补。
解牛
(下面是老高的简单总结,希望大家一起补充)
为了更好的理解,我们在此加一个图,既然是服务器的优化,我们就不需要操心浏览器的事情,所以我们主要考虑链路和服务器内部的优化。
浏览器 ----> 云 ----> 服务器
浏览器 <---- 云 <---- 服务器
现在我们使用放大镜,有针对性的把刚才每一个环节能做到的优化尽可能的说出来!
优化请求
DNS优化
DNS优化概念很简单也复杂,更是很烧钱的环节。一个良好的DNS优化可以让整个访问时间减少10%左右,作为一个新手,如果你理解的DNS只是配置一下114.114.114.114,那你可要好好学习巩固一下DNS的更多高级应用了。起码知道什么是域名污染、域名劫持什么的才行!
目前很多公司都在做这块业务,老高目前使用DNSPOD,不过不排除会更换。
针对DNS优化这块后面也会提到。
双线接入
这个可以和DNS配合,服务器在数据中心可以有电信联通多个出口,这样每次发送数据都可以走一条最快的线路。
使用新的协议
这方面可以关注google的SPDY协议,或者最近很火的HTTP2.0草案。
CDN
CDN技术可以减少源服务器的压力,将内容有组织的分发到各个节点,起到了一定的加速作用。但是弊端就是可能会产生内容更新的问题。
解决办法可以是设定一个合理的更新时间,为静态文件加上版本控制等。。。
针对另一个问题 如何科学的更新服务器的资源,请参考 大公司里怎样开发和部署前端代码?
优化服务器内部
让我们再使用放大镜,看看请求到达服务器后都发生了什么事情,请允许老高使用一个最简单的网站架构为例
请求 ------↘ 请求 ------> 前端服务器 ------> 后端服务器 ------> 缓存服务器 ------> 数据库 请求 ------↗
这里面的优化门道都很多,比如说
使用负载均衡技术分散用户请求到多个前端服务器,待续。。。
請問你的網站有用過301轉向之類的嗎,我在namesilo註冊了域名,可是不知道為什麼根域名會自動跳轉到www的二級域名,ping根域名得出的結果是namesilo的parking頁。沒法直接用根域名
現在再ping根域名又回到主機了,但是會是不是解析成namesilo的,我網站因後台問題訪問不了的時間就會自動跑到namesilo去,但nameserve已經轉移到第三方,也沒有namesilo的解析,搞不懂。
这样具体检查一下,应该是域名解析延迟了,同时服务器也有域名绑定错误的问题
我等小站,基本上不考虑这个,博客已静态化了,只要主机不是太垃圾,速度是杠杠的
高大,最近有个快雨TCP加速软件貌似看视频很快,就是以前做xsocks和RedSocket的那个新作品,能否评测一下给个详细教程呢?多谢高大了。官网给的教程太简单,实在看不懂,不像在你这边的教程(比如那个net加速的)按步骤都没有代码报错。
这种东西实际没多大用