---
title: 通过OS和nginx参数优化提升nginx性能案例分享-官方技术文章-鲲鹏社区
description: 在32C 64G的虚拟机上，通过优化OS和nginx参数提升nginx的TPS的一次经历
keywords: OS,参数优化提升,性能案例分享,官方技术文章,鲲鹏社区,性能瓶颈分析,网络性能分析,Nginx
url: https://www.hikunpeng.com/developer/techArticles/20250422-3?envFlag=1
section: (其他)
---

# 通过OS和nginx参数优化提升nginx性能案例分享-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20250422-3?envFlag=1
描述: 在32C 64G的虚拟机上，通过优化OS和nginx参数提升nginx的TPS的一次经历
关键词: OS,参数优化提升,性能案例分享,官方技术文章,鲲鹏社区,性能瓶颈分析,网络性能分析,Nginx

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

通过OS和nginx参数优化提升nginx性能案例分享

通过OS和nginx参数优化提升nginx性能案例分享

nginx网络

发表于 2025/04/22

0

作者|黎炳材

应用信息

| 软件名称 | 版本 | 说明 |
| --- | --- | ---|
| nginx | 1.9.1 | nginx |

### 性能瓶颈分析

### 1. 网络性能分析

该模块属于路由转发模块，涉及大量的网络包转发。

KVM默认的虚拟机网卡队列为1，导致网卡软中断集中在单核CPU。

使用命令top 1查看每个核心的情况 ：

发现只有一个核心cpu占用在70%， 其他核心闲置。可以发现网卡队列较小，没有发挥多核优势。

### 2. Nginx进程资源分配不均

通过top查看，Nginx进程在多核心上分布不均衡，有些CPU利用率高达95%，有的低至1.0%，CPU负载不均衡导致整机性能不理想

### 3. 缓存资源存在瓶颈

该模块的日志内容error.log和access.log文件，一次压测大概会有28G的内容写入，涉及大量IO读写操作。

当前硬盘为SAS机械盘，读写性能较差。可以先将数据写入缓存，待积累一定量后再批量异步写入磁盘，从而减少频繁的磁盘读写操作，缓解IO瓶颈，提升性能。

### 性能问题解决

### 1. 调整网卡队列解决网络问题

ethtool -L enp4s0 combined 8， 给指定网卡的队列设置成8

设置8个队列是因为CPU软中断总负载约240%，一个队列无法处理完。8个队列已经较为平衡的解决了负载问题，使得每个队列压力在30%左右。

### 2. 调整nginx参数解决进程不均问题

### 允许多个进程或线程共享端口 打开nginx.conf，在listen列中加入reuseport, 内核能够依据特定的算法（例如哈希算法）把新的连接均匀地分配给各个工作进程，从而实现工作进程间的负载均衡。这样可以充分利用多核 CPU 的性能，避免某个工作进程负载过高，而其他工作进程处于空闲状态的情况。

### 3. 缓解IO资源瓶颈问题

在 Nginx 中，日志参数buffer的默认值是64k, flush默认值是1s, 可以根据实际资源和IO负载情况进行调整。

打开nginx.conf，在access_log一行中末尾增加参数，经过测试发现对于当前资源规格设置 buffer=600m flush=60s时效果较好，可显著减少磁盘写入频率，降低 I/O 负载，并且内存空间仍然充足。

这样nginx 的访问日志会先存于大小为 600MB 的缓冲区中，每隔 60 秒，缓冲区里的日志数据就会被刷新到`/var/log/nginx/access.log`文件， 可以缓解IO瓶颈问题。

### 调优结果

| 操作 | 收益 |
| --- | ---|
| 允许多个进程或线程共享端口/打开互斥锁 | 正收益 |
| 开启access log缓存 | 正收益 |
| 调整网卡队列数为8 | 正收益 |

实施调优之后压测的TPS提升10%， 性能表现符合预期。
