1. 采用反向代理服务器(Reverse Proxy Server)来对应用进行加速和保护
其作用主要在以下三方面:
- 负载平衡 – 运行在反向代理服务器上的负载平衡器会在不同的不服务器 间进行传输平衡。透过它,你可以进行无差别的服务器增添。
- 存静态文件 – 对于直接的文件请求,例如图片文件或代码文件,可以直接存储在反向代理服务器然后直接发送给用户,从而可以进行快速访问并为应用服务器进行减负使得程序性能得到提升。
- 安全保护 – 反向代理服务器可以进行高安全度配置和对威胁进行识别和监测。
2. 增添一个负载平衡器
为网站增添一个负载平衡器是一个相对简单的变更,但是它可以带来不错的性能和安全性提升。负载平衡器的作用在于在不同服务器间进行传输分发。
负载平衡器的实施前提是有一个反向代理服务器,它在接收到Internet通信后把相关请求发送到其它服务器。平衡器的妙处在于它支持两个或以上的应用服务器,使用选择算法来分割服务器间的请求。
3. 缓存静态和动态内容
缓存技术的使用可使内容更快地展示给用户,其处理策略有:在需求发出时更快地处理内容,把内容存放在更快的设备上,或是使内容离用户更近。
4. 数据压缩
压缩技术是一个巨大的潜在性能加速器。其主要作用体现在对图片,视频或音频等文件,能够进行高效的压缩处理。
5. 优化SSL/TLS访问
尽管SSL/TLS变得越来越流行,但是它对于性能的影响也应得到重视。其对性能的影响主要体现在两个方面:
- 每当新的连接开启,初始化握手都是无法避免的,即浏览器每次都需要使用HTTP/1.X建立服务器连接。
- 存放于服务器上的加密数据会越来越大,加密后用户读取时也需要进行解码。
那么该如何进行处理呢?
- 会话缓存—使用ssl_session_cache来直接缓存建立新SSL/TLS连接的参数
- 会话ID化—把指定SSL/TLS的标识/ID存放起来,但要建立新连接时,就可以直接取用,从而免去重新建立通信的繁琐。
- OCSP stapling优化—通过抓取SSL/TLS认证信息来减免建立通信的时间。
6. 部署HTTP/2或SPDY
对于已经启用SSL/TLS的网站,一旦结合HTTP/2和SPDY将能实现性能上的强强联合;因为其结果是会让单一连接的建立仅需一次通信握手。SPDY和HTTP/2的主要特性是它们使用的是单一连接而不是多方连接。
7. 定期更新软件版本
8. 优化Linux性能
例如对Linux进行以下配置或处理:
- Backlog队列
如果你有一些将要停用的连接,可以考虑增加net.core.somaxconn。
- 文件描述符
NGINX允许每个连接最多使用两个文件描述符。如果你的系统服务的是多个连接,你可能需要考虑增大sys.fs.file_max的值。
- 瞬时端口
当作为一个代理使用时,NGINX会为每个upstream服务器创建临时的瞬时(ephemeral)端口。因此可以尝试加大net.ipv4.ip_local_port_range的值来增加可用端口数。
9. 优化Web服务器性能
- 访问日志优化
在NGINX中,在access_log中加入buffer=size参数来实现日志的缓存写入;加入flush=time则可实现在某个时间间隔后进行缓存内容写入。
- 缓存
启用缓存可使连接响应更快。
- 客户端活动连接
活动连接可减少重连的次数,特别是启用SSL/TLS的情况下。
- Upstream活动连接
Upstream连接指的是连接到程序服务器,数据库服务器等的连接。
- 限制资源的访问
采取合适的策略来限制资源访问可以提高性能和安全性。
- 进行worker处理
Worker处理模式就是请求驱动处理模式。NGINX使用了一个基于事件的模型和OS依赖机制来有效地对请求进行分发。
- 进行socket分表
Socket分表可以为每个worker处理创建一个socket{敏感词},当核心委派连接分到给{敏感词}时,可以马上知道哪个处理是即将执行的,从而使处理流程变得简洁。
- 线程池处理
任何计算机线程都有可能由于单个缓慢的操作而挂起。对于web服务器软件来说,磁盘访问是一个性能瓶颈,例如进行数据复制等操作。当使用线程池来处理时,可以把一些响应慢的操作单独地放入某个任务组里面,从而不会对其它操作造成影响。
10.进行实时监控以快速解决问题和瓶颈
实施实时监控,可以全面掌握系统的运行情况,发现问题解决问题,甚至是找出造成性能瓶颈或运行缓慢的原因。
例如可对如下的问题进行监控:
- 服务器宕机
- 连接访问丢失
- 服务器缓存丢失严重
- 服务器发送了错误的数据
相关推荐
提升Java的锁性能Java开发Java经验技巧共5页.pdf.zip
–方便用户开发,满足一般应用需求 •LabVIEW应用程序趋向大型化,复杂化 –项目规模大,需求复杂 –数据处理量大,性能要求高 •好的编程风格帮助LabVIEW优化内存管理 –可以显著提高程序运行效率 –需要了解...
提升你的Java应用性能改善数据处理Java开发Java经验技巧共4页.pdf.zip
第12章 测试也开发--自开发性能测试框架 316 12.1 性能测试框架架构设计 317 12.1.1 技术考虑的准备 317 12.1.2 Automation Center性能测试框架设计实例 319 12.1.3 定义XML格式的性能测试任务文件 325 12.1.4 ...
iOS开发涵盖了许多方面,以下是一些关键的开发技巧和最佳实践: 熟悉Swift或Objective-C:Swift是苹果推荐的iOS应用开发语言,它具有安全性、高性能和现代编程特性。虽然Objective-C仍可使用,但新项目建议优先考虑...
本文提供即刻提升你的脚本性能的十个步骤。不用担心,这并不是什么高深的技巧。人人皆可运用!这些技巧包括: 使用最新版本 合并、最小化脚本 用for替代each 用ID替代class选择器 给选择器指定前后文 建立缓存 避免...
无论是刚开始接触数据库,还是希望在现有基础上进一步提升数据库开发和优化技能的实践者,都会发现这份资料极具价值。 使用场景及目标: 教育学习:学生或自学者可以通过这份资料系统地学习和掌握MySQL数据库的操作...
但 Javascript 性能优化绝不是一种书面的技术,Nicholas 的技术演进列出了10条建议,帮助你写出高效的 JS 代码。 1. 定义局部变量 当一个变量被引用的时候,JavaScript将在作用域链中的不同成员中查找这个变量。作用...
《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。 《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、...
数据库优化:合理设计数据库表结构,尽量减少JOIN操作,使用索引提升查询效率。 代码规范:遵循一定的编码规范,如PEP8(Python)、Google Java Style Guide等,保持代码整洁易读。 异常处理:对可能出现异常的...
这个系列记录我在一年vue开发中总结的一些经验和技巧。 利用Object.freeze()提升性能 Object.freeze()是ES5新增的特性,可以冻结一个对象,防止对象被修改。 vue 1.0.18+对其提供了支持,对于data或vuex里使用freeze...
《CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation》写作的目的是要确保CSS不会成为开发过程或网站性能的瓶颈,确保读者可以运用一些工具、框架、预处理来提升开发效率和节约人力成本,确保所讲解的内容...
在内容概要部分,详细介绍了JMeter的安装和配置,包括如何设置线程组、添加Sampler和断言等。接着,书中提供了一系列实际场景...通过学习本教程,您将能够使用JMeter进行有效的性能测试,以提升系统的性能和用户体验。
, • 通过高效使用内存来提升性能的技巧;, • 延长电池使用时间的技巧;, • 使用多线程的时机及技巧;, • 评测剖析代码的技巧。, 把本书的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为...
《高性能JavaScript》揭示的技术和策略能帮助你在开发过程中消除性能瓶颈。你将会了解如何提升各方面的性能,包括代码的加载、运行、DOM交互、页面生存周期等。雅虎的前端工程师Nicholas C. Zakas和其他五位...
, • 通过高效使用内存来提升性能的技巧;, • 延长电池使用时间的技巧;, • 使用多线程的时机及技巧;, • 评测剖析代码的技巧。, 把本书的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为...
LabVIEW是一个自动管理内存的开发语言。既然已经是自动管理内存了,那我们还能做什么提高和优化的呢? 第二部分,介绍一些在LabVIEW中非常有用的工具,可以帮助我们检测程序或VI的内存占用情况和运行时间。从而能够...
《高性能JavaScript》揭示的技术和策略能帮助你在开发过程中消除性能瓶颈。你将会了解如何提升各方面的性能,包括代码的加载、运行、DOM交互、页面生存周期等。雅虎的前端工程师Nicholas C. Zakas和其他五位...
从脚本到运维、公式到指标的运用掌握应有尽有,手把手教你性能测试技巧。此书在手,助你走出迷茫。 内容推荐 “基础篇”:欲练神功,不必自宫。打我基础,从此坦途。 “工具篇”:欲善其事,先利其器。神剑在...