建议七:升级软件
提升应用性能的一个简单的方法,就是根据可靠性及性能选择软件 。此外,高质量组件的开发者更可能不断提升性能和修复问题,因此使用最新的稳定版本是划算 。新发布的版本会得到开发者和用户更多的关注,同时也会利用新的编译器优化技术,包括针对新硬件的调优 。
相对旧版本,新发布的稳定版本明显性能更高 。坚持升级,也可以保证在调优、问题修复和安全警报方面与时俱进 。
不升级软件也会妨碍利用新能力 。比如,HTTP/2目前要求OpenSSL 1.0.1 。从2016年下半年开始,HTTP/2会要求OpenSSL 1.0.2,该版本发布于2015年1月 。
NGINX用户可以从NGINX开源软件的最新版本或NGINX Plus开始,它们支持套接字共享、线程池(参见下文),而且都会持续优化性能 。因此,检查一下自己的软件,尽量把它们升级到最新的版本 。
建议八:调优linux
Linux是今天大多数Web服务器的底层操作系统,作为一切基础设施的基础,Linux对提升性能至关重要 。默认情况下,很多Linux系统都比较保守,仅以桌面办公为需求,以占用少量资源为调优目标 。对于Web应用而言,为达到性能最佳,肯定需要重新调优 。
Linux优化因Web服务器而异 。以NGINX为例,可以从以下几方面考虑 。另外,关注微信公众号:Java技术栈,也可以获取我整理的 NGINX 教程,都是干货 。
存量队列 。如果发现有一些连接得不到处理,可以增大net.core.somaxconn,即等待NGINX处理的最大连接数 。如果这个连接数限制过小,应该可以看到错误消息,可以逐步提高这个值,直到错误消息不再出现 。
- 文件描述符 。NGINX对每个连接最多使用两个文件描述符 。如果系统服务于很多连接,可能需要增大sys.fs.file_max这个对描述符的系统级限制,以及nofile这个用户文件描述符限制,以支持增大后的负载 。
- 临时端口 。在作为代理使用时,NGINX会为每个上游服务器创建临时端口 。可以设置net.ipv4.ip_local_port_range,增大端口值的范围,以增加可用的端口量 。此外,还可以减小net.ipv4.tcp_fin_timeout的值,它控制非活动端口释放重用的等待时间,加快周转 。
- 对NGINX而言,请参考NGINX性能调优指南,了解如何不费吹灰之力将你的Linux系统优化为能够支持更大的吞吐量 。
无论使用什么Web服务器,都需要针对应用对其调优 。以下建议适用于任何Web服务器,但会给出只有NGINX的设置说明 。
- 访问日志 。不要每个请求的日志都马上写到磁盘,可以在内存里做个缓存,然后批量定入 。对NGINX而言,将buffer=_size_参数添加到access_log指令,等内存缓冲区写满后再把日志写到磁盘 。如果你添加了**flush=_time_**参数,那么缓冲区的内容也会按照指定时间写入磁盘 。
- 缓冲 。缓冲用于在内存里保存部分响应,直到缓冲区被填满,可以实现对客户端更有效的响应 。无法写入内存的响应会被写到磁盘,从而降低性能 。在NGINX的缓冲启用时,可以使用proxy_buffer_size和proxy_buffers指令来管理它 。
- 客户端活动连接 。活动连接可以减少时间消耗,特别是在使用SSL/TLS的情下 。对NGINX而言,可以针对客户端提高keepalive_requests的数值,默认值为100;也可以增大keepalive_timeout的值,让活动连接持续时间更长,从而让后续请求得到更快响应 。
- 上游活动连接 。上游连接,即连接到应用服务器、数据库服务器的连接,同样可以从活动连接的设置中获得好处 。对上游连接来说,可以增加活动连接,也就是每个工作进程可用的空闲活动连接的数量 。这样可以增进连接重用,减少重开连接 。关于活动连接的更多信息,请参考这篇博客 。
- 限制 。限制客户端使用的资源可以提升性能和安全性 。对NGINX而言,limit_conn和limit_conn_zone指令限制指定源的连接数,而limit_rate限制带宽 。这些设置可以防止合法用户“侵吞”资源,同时也有助于防止攻击 。limit_req和limit_req_zone指令限制客户端请求 。对于到上游服务器的连接,可以在上游配置区的服务器指令中使用max_conns参数,它限制对上游服务器的连接,防止过载 。相关的队列指令会创建一个队列,在max_conns限制到达后将指定的请求数保存指定的时间 。
- 工作进程 。工作进程负责处理请求 。NGINX采用基于事件的模型和OS相关的机制有效地在工作进程间分配请求 。建议将worker_processes的值设置为每个CPU一个工作进程 。如果需要,大多数系统都支持提高worker_connections的值(默认为512) 。可以通过试验找到最适合你系统的这个值 。
推荐阅读
- Win10系统中进入BIOS的详细操作方法
- 提高店铺转化率有哪些技巧 提升店铺转化率的方法
- 淘宝关键词优化技巧教程 淘宝如何提升关键词排名
- 如何提高淘宝店铺的流量和权重 淘宝店铺自然流量怎么提升
- 茶叶城市之厦门,茶叶可追溯依托厦门食品安全监管系统
- Windows操作系统|Win11安卓子系统轻松安装Play商店?小心中木马
- 使用Shell函数实现多级菜单系统安装
- CentOS7下部署开放式漏洞评估系统OpenVAS
- AMD|AMD Yes!RX 6X50 XT系列显卡不会大涨价:性能提升10%
- 淘宝店铺信誉等级对店铺的影响 淘宝店铺信誉度怎么提升的