提升系统 10 倍web应用性能的 10 个建议( 五 )

  • 套接字分片 。通常,一个套接字监听器向所有工作进程分发新连接 。套按字分片则为每个工作进程都创建一个套接字监听器,由内核在套接字监听器可用时为其指定连接 。这样可以减少锁争用,提升多核系统上的性能 。要启用套接字分片,在listen指令中包含reuseport参数 。
  • 线程池 。一个费时的操作会阻塞任何计算机进程 。对Web服务器软件来说,磁盘访问可能阻碍很多较快的操作,比如内存中的计算和复制 。在使用线程池的情况下,慢操作会被指定给一组独立的任务,而主处理循环会继续运行较快的操作 。磁盘操作完成后,结果会返回到主处理循环 。在NGINX中,read()系统调用和sendfile()被转载到了线程池 。

  • 提升系统 10 倍web应用性能的 10 个建议

    文章插图
     
    提示,修改任何操作系统及周边设备的设置时,每次只修改一项,然后测试性能 。如果该项修改导致了问题,或者并未提升性能,再改回去 。
    建议十:监控实时动态以发现问题和瓶颈
    保存应用高性能的关键是实时监控应用性能 。必须实时监控特定设备及相应Web基础设施中应用的动态 。
    监控站点活动多数情况下是被动的,它只告诉你发生了什么,至于如何发现和解决问题,则是你自己的事情 。
    监控可以捕获以下几种问题:
    1、服务器停机
    2、服务器不稳,漏处理连接
    3、服务器出现大面积缓存失效
    4、服务器发送的内容不对
    New Relic或Dynatrace等全局性的性能监控工具,可以帮我们监控远程加载页面的时间,而NGINX则可以帮你监控应用交付这一端 。应用的性能数据可以告诉你优化手段什么时候真正给用户带去了不同的体验,以及什么时候需要扩容以满足越来越多的流量 。
    为了帮助用户尽快发现问题,NGINX Plus增加了应用程序体检功能,会报告经常重复出现的问题 。NGINX Plus还具备session draining特性,会在已有任务完成前阻止新连接,以及慢启动容量,从而让恢复的服务器在负载均衡集群中达到应有的速度 。使用得当的情况下,健康体检会在问题显著影响用户体验之前帮你定位问题,而session draining和慢启动则让你替换服务器时不影响感知的性能和在线时间 。这张图展示了NGINX Plus内置的实时活动监控的控制板,涵盖了服务器、TCP连接和缓存 。
    提升系统 10 倍web应用性能的 10 个建议

    文章插图
     
    结论:10倍性能提升
    性能提升因Web应用不同会有巨大差异 。实际的提升取决于预算、时间,以及现有实现的与理想性能的差距 。那么怎么让你的应用获得10倍的性能提升呢?
    为了帮大家理解每项优化建议的潜能,下面再针对之前的建议给出一些实施方针,希望大家各取所需 。
    • 反向代理服务器及负载均衡 。没有负载均衡或池负载均衡,可能导致极低的性能 。添加一个反向代理服务器,比如NGINX,可以减少Web应用在内存和磁盘之间的往返 。负载均衡可以把任务从过载的服务器转移到空闲的服务器,也便于扩展 。这些改变能极大地提升性能,与原有的部署方式最差的时候相比,10倍性能提升是很轻松的事,即使不到10倍那也在总体上有了质的飞跃 。
    • 缓存动态和静态内容 。如果你的Web服务器同时又充当了应用服务器,那么通过缓存动态内容就可以达到高峰期10倍的性能提升 。缓存静态内容也可以有几倍的性能提升 。
    • 压缩数据 。使用JPEG、PNG、MPEG-4以及MP3等压缩格式能显著提升性能 。如果这些手段都用上了,那么压缩的文本数据(代码及HTML)可以将初始页面加载时间提升两倍 。
    • 优化SSL/TLS 。安全握手对性能有很大影响,因此对其进行优化可以让初次响应加快两倍,对于文本内容较多的网站尤其如此 。优化SSL/TLS下的媒体文件带来的性能提升很小 。
    • 实施HTTP/2和SPDY 。在使用SSL/TLS的情况下,这两个协议有可能提升网站的整体性能 。
    • 调优Linux和Web服务器 。使用优化的缓冲策略、使用活动连接,将耗时的任务转载至独立的线程池,可以显著提升性能 。比如线程池可以将磁盘操作密集性任务的性能提升至少一个数量级 。
    希望大家自己多尝试以上技术,也希望大家分享自己在性能改进方面的心得 。
    译者:为之漫笔
    来源:
    http://www.zcfy.cc/article/10-tips-for-10x-Application-performance-nginx-22.html
    原文:
    https://www.nginx.com/blog/10-tips-for-10x-application-performance/


    推荐阅读