2022-11-22 290
如果你的Web应用只跑在一台机器上,那要提升其性能非常简单:换一台更快的,多配几个处理器,多加几条内存,磁盘阵列也要高速的。换了以后,这台机器上跑的WordPress服务器、Node.js或Java应用速度都会加快。(要是应用还会访问另一台数据库服务器,那也简单:找两台更快的机器,用更快的网络连起来就行了)
麻烦在于,机器速度并不是问题。很多时候Web应用慢,是因为要在各种任务之间切换,一会儿要处理数千个连接上的用户请求,一会儿要向磁盘读写文件,一会儿又要运行应用的代码,一会儿又要去干别的。应用服务器因此可能出现各种状况,耗尽内存、交换文件,或者让很多请求等待一个硬盘I/O之类的任务。除了升级硬件,其实你还可以选择另外一种完全不同的方法:加一台反向代理服务器,分担上述一些任务。反向代理服务器位于运行应用的机器之前,负责处理来自外网的请求。反向代理服务器直接连到互联网,它与应用服务器通信使用的是快速的内部网络。反向代理服务器可以让应用服务器专注于构建页面,然后交给反向代理向外网发送,而不必理会用户与应用的交互。由于不必等待客户端的响应,应用服务器的运行速度能达到接近最优的水平。
增加反向代理服务器同时也可以为Web服务器增添灵活性。比如,假设执行某种任务的服务器过载了,那随时可以再增加一台同类服务器;而如果这台服务器挂了,替换它也很容易。鉴于这种灵活性,反向代理服务器往往也是其他性能优化手段的先决条件,比如:
NGINX专门为使用反向代理服务器做了设计,使其天然支持上述优化。由于使用事件驱动的处理机制,NGINX比传统服务器效率更高。NGINX Plus则增加了更高端的反向代理功能,如应用体检、特有的请求路由、高级缓存和售后支持。
建议二:增加负载均衡服务器
增加负载均衡服务器相对简单,但却能显著提升站点性能和安全性。通过它把流量分配给多个服务器,就可以不必升级Web服务器了。就算应用本身写得不太好,或者难以扩展,负载均衡都可以在不做其他改变的情况下提升用户体验。
负载均衡服务器首先是一个反向代理服务器(参见“建议一”),负责把来自互联网的请求转发给其他服务器。这里关键在于负载均衡服务器可以支持两台以上的应用服务器,使用一种选择算法在不同的服务器间分配请求。最简单的负载均衡算法是循环调度,即把新请求依次转发给可用服务器中的下一台服务器。其他算法还有把请求发给活动连接最少的服务器。NGINX Plus支持一种功能,就是把用户会话保持在同一台服务器上,叫做会话保持。负载均衡服务器可以避免一台服务器过载而其他服务器过闲,从而极大提升性能。同时,有了它还可以让Web服务器扩容更简单,因为可以选用比较便宜的服务器,同时保证物尽其用。可以通过负载均衡调度的协议包括HTTP、HTTPS、SPDY、HTTP/2、WebSocket、FastCGI、SCGI、uwsgi、memcached,以及其他一些应用形式,包括基于TCP的应用和其他第四层的协议。为此,首先要分析Web应用,看性能短板在哪里,然后再确定使用哪一个。同一台服务器或用于负载均衡的服务器也可以承担其他任务,比如SSL终止、视客户端不同支持HTTP/1/x或HTTP/2、缓存静态文件。NGINX经常被用来做负载均衡,更多信息请参考我们以前发的介绍性文章、有关配置的文章、电子书和相关的在线视频,当然还有文档。我们的商业版本NGINX Plus支持更多的负载均衡功能,如基于服务器响应时间路由负载和支持微软NTLM协议的负载均衡。
建议三:缓存静态及动态内容
缓存能提升Web应用性能,因为可以更快地把内容交付给客户端。缓存的策略包括预处理内容、在较快的设备上存储内容、把内容保存在靠近客户端的地方,以及同时运用这些策略。缓存有两种。
假设一个页面每秒被查看10次,而你缓存它1秒,那么90%针对这个页面的请求都将来自在缓存。如果你单独缓存静态内容,那么即使全新生成的页面,很可能大部分都来自缓存的内容。缓存Web应用生成内容的技术主要分三种。
Web应用的缓存可以在Web应用服务器内部或外部实现。首先,考虑缓存动态内容,以减轻应用服务器的负载。其次,缓存用于静态内容(包括那些动态生成内容的临时副本),进一步减轻应用服务器的负担。然后,考虑把缓存转移到其他更快或更靠近用户的机器,给应用服务器减负,缩短传输时间。用好缓存能显著加快应用的响应速度。对很多网页来说,大图片之类的静态数据,往往占据一半以上的内容。不用缓存,查询和传输这类数据可能会花好几秒钟,而用缓存,则可能只要花几分之一秒。可以举一个例子来说明怎么使用缓存,NGINX和NGINX Plus通过两个指令来设置缓存:proxy_cache_path和proxy_cache指定缓存的位置和大小、最长缓存时间以及其他参数。使用第三个(也是很受欢迎的)指令proxy_cache_use_stale,甚至可以告诉缓存在本来应该提供新鲜内容的服务器太忙或宕机时,提供原来的旧文件,对客户端来说,拿到内容总比拿不到强。从用户角度看,这样也可以树立你的站点或应用非常稳定的形象。NGINX Plus支持高级缓存功能,包括缓存净化(caching purging)和通过控制板以可视化的形式展示缓存状态,实现实时监控。要了解NGINX中关于缓存的更多信息,可以看看
原文链接:https://77isp.com/post/15632.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态