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


建议七:升级软件
提升应用性能的一个简单的方法,就是根据可靠性及性能选择软件 。此外,高质量组件的开发者更可能不断提升性能和修复问题,因此使用最新的稳定版本是划算 。新发布的版本会得到开发者和用户更多的关注,同时也会利用新的编译器优化技术,包括针对新硬件的调优 。
相对旧版本,新发布的稳定版本明显性能更高 。坚持升级,也可以保证在调优、问题修复和安全警报方面与时俱进 。
不升级软件也会妨碍利用新能力 。比如,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服务器,都需要针对应用对其调优 。以下建议适用于任何Web服务器,但会给出只有NGINX的设置说明 。