10倍提升应用性能的10个建议 (理论篇)

1http://mp.weixin.qq.com/s?__biz=MzAwNjMxMTA5Mw==&mid=2651340234&idx=1&sn=36cd4d3a45f3fd3a2f4c9edde1c5352e&scene=0#rd

2http://blog.jobbole.com/94962
建议一、利用反向代理服务器加速和保护应用

问题:

通常Web应用运行缓慢,是由于电脑一直在不同的任务之间切换:同成千上万的客户交互、访问磁盘上的文件、执行应用代码和其他任务。回事服务器因为以下问题而崩溃。1、内存耗尽 2、把很多的数据从内存交换到磁盘上 3、很多请求都在等待一个类似磁盘I/O 的单个任务。

解决办法:

增加一台反向代理服务器来分带这些任务,反向代理服务器在运行应用之前,用来处理网络流量。只有这台反向代理服务器直接连到网络上,她和应用服务器通过一个快速的内部网络进行通信。

建议二、增加一个负载均衡器

负载均衡首先是一个反向代理服务器,它接受网络流量,并请求转交给服务器。一个窍门是让负载均衡器支持两台以上的应用服务器,利用一个选择算法在服务器间分配请求。最简单的方法就是轮询,每个新请求发送给列表中的下一台服务器。

建议三、缓存静态和动态内容

Web 应用生成缓存内容主要有三种技术:

1、 让内容更靠近用户。内容副本靠近用户,可以减少传输时间。

2、 把内容存放在更快的内容上。内容保存在更快的电脑上以以便加快检索

3、把内容移除过载的电脑。有时候电脑运行一个特定比基准性能要慢,这是因为它同时还在忙其他任务。把缓存设置在另一台电脑上,都能提升有缓存资源和没有缓存资源的性能,因为这台主机不再过载了。

建议四、压缩数据

可以开启NGINX 中的 GZIP 压缩

建议五、优化SSL/TLS

SSL : 加密套接字层 TLS :传输层安全

SSL/TLS 降低性能的原因 :

1、每当打开一个新的连接,最初的握手都需要建立加密密钥,浏览器使用HTTP/1.x 和服务器建立多条连接,随着府二期的增多,连接会成倍增加。

2、服务器上加密数据,客户端解密数据,这些都是持续的开销。

SSL/TLS 提高性能的方式

1、会话缓存,使用ssl_session_cache 指令,缓存SSL/TLS 加密每个新连接所使用的参数。

2、会话标签或ID。这些特定SSL/TLS会话信息都存在一个标签会ID中,所以可以顺畅的重用一个连接,二不需要再次握手。

3、OCSP 封装。缓存SSL/TLS 证书信息,来缩短握手时间。(OCSP,Online Certificate Status Protocol 在线证书状态检查协议)

建议六、实现HTTP/2 或SPDY

HTTP/2 和 SPDY 中的一个连接只需要一次握手,所以他们很可能提升性能。 1、 SPDY(speedy的缩写)一种开放的网络传输协议,有google开发,用来传输网页内容,基于传输控制协议(TCP)的应用层协议。

2、HTTP/2 基于SPDY,最近刚被采纳为IETF标准,SPDY一被广泛支持,不过很快就要被HTTP/2 所取代。

3、SPDY 和 HTTP/2 的关键特性是仅用一条单一连接。这条连接是被复用的,可以同时又多个请求和应答在上面传输。

4、一旦实现SPDY或者HTTP/2 你就不再需要传统的HTTP性能优化方式,比如区域切分、资源整合和雪碧图。

建议七、更新软件版本

稳定的新版本通常都兼容老版本,而且有更好的性能。如果你持续更新软件,很容易享受到性能优化、bug 修正和安全报警等诸多好处。

建议八、优化liunx 性能

以NGINX为例,在加速Liunx是需要考虑的重要改动。

1、缓冲队列 。net.core.somaxconn 代表可以排队等待的最大连接数。

2、文件描述符。NGIX在每个连接上使用两个文件描述符。如果系统要服务很多连接,需要增大 sys.fs.file_max (系统范围内文件描述的限制)和 nofile(用户文件描述符的限制) 。

3、临时端口。当作为代理时,NGINX 为每个上行服务器创建了临时端口。你可以通过设定 net.ipv4.ip_local_port_range,来增加端口值的可用范围。你还可以设定 net.ipv4.tcp_fin_timeout,减少超时来重新使用一个不活跃的端口,以便更快地周转。

建议九、优化 Web 服务器的性能
建议十、监控实时活动来解决问题和瓶颈

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注