chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx高并發(fā)優(yōu)化方案

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2025-08-13 15:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Nginx高并發(fā)優(yōu)化實(shí)戰(zhàn):從10萬到百萬QPS的性能調(diào)優(yōu)之路

作為一名在生產(chǎn)環(huán)境中摸爬滾打多年的運(yùn)維工程師,我見過太多因?yàn)镹ginx配置不當(dāng)導(dǎo)致的性能瓶頸。今天分享一套完整的Nginx高并發(fā)優(yōu)化方案,幫助你的系統(tǒng)從10萬QPS突破到百萬級(jí)別。

前言:為什么選擇Nginx?

在微服務(wù)架構(gòu)盛行的今天,Nginx作為反向代理和負(fù)載均衡器的地位依然不可撼動(dòng)。但是,默認(rèn)配置的Nginx在面對(duì)高并發(fā)場景時(shí)往往力不從心。通過系統(tǒng)化的優(yōu)化,我們可以讓Nginx的性能提升10倍甚至更多。

優(yōu)化前后性能對(duì)比

優(yōu)化階段 QPS 響應(yīng)時(shí)間(ms) CPU使用率 內(nèi)存使用
默認(rèn)配置 8萬 125 85% 2.1GB
基礎(chǔ)優(yōu)化 25萬 45 68% 1.8GB
深度優(yōu)化 60萬 18 45% 1.5GB
極限優(yōu)化 120萬+ 8 35% 1.2GB

第一階段:基礎(chǔ)配置優(yōu)化

1.1 工作進(jìn)程數(shù)量調(diào)優(yōu)

# 根據(jù)CPU核心數(shù)設(shè)置worker進(jìn)程數(shù)
worker_processesauto;

# 綁定worker進(jìn)程到特定CPU核心,避免進(jìn)程遷移開銷
worker_cpu_affinityauto;

# 設(shè)置每個(gè)worker進(jìn)程的最大連接數(shù)
events{
 worker_connections65535;
 useepoll; # Linux下使用epoll事件模型
 multi_accepton; # 允許worker進(jìn)程同時(shí)接受多個(gè)連接
}

實(shí)戰(zhàn)經(jīng)驗(yàn):在32核服務(wù)器上,使用worker_processes auto比手動(dòng)設(shè)置32個(gè)進(jìn)程性能提升15%,因?yàn)镹ginx會(huì)智能地考慮NUMA架構(gòu)。

1.2 TCP連接優(yōu)化

http{
 # 開啟TCP_NODELAY,減少小包延遲
 tcp_nodelayon;
 
 # 開啟TCP_NOPUSH,提高網(wǎng)絡(luò)傳輸效率
 tcp_nopushon;
 
 # 啟用HTTP/1.1持久連接
 keepalive_timeout65;
 keepalive_requests10000;
 
 # 客戶端請(qǐng)求體大小限制
 client_max_body_size20m;
 client_body_buffer_size128k;
 
 # 客戶端頭部緩沖區(qū)設(shè)置
 client_header_buffer_size4k;
 large_client_header_buffers88k;
}

第二階段:內(nèi)核參數(shù)調(diào)優(yōu)

2.1 系統(tǒng)級(jí)優(yōu)化

在/etc/sysctl.conf中添加以下配置:

# TCP連接數(shù)相關(guān)
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_max_syn_backlog = 65535

# TCP連接復(fù)用
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10

# TCP緩沖區(qū)優(yōu)化
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

# 文件描述符限制
fs.file-max = 6815744

2.2 用戶級(jí)限制調(diào)整

# /etc/security/limits.conf
nginx soft nofile 655350
nginx hard nofile 655350
nginx softnproc655350
nginx hardnproc655350

踩坑提醒:很多工程師忽略了systemd服務(wù)的限制,記得在nginx.service中添加:

[Service]
LimitNOFILE=655350
LimitNPROC=655350

第三階段:緩存與壓縮優(yōu)化

3.1 靜態(tài)文件緩存策略

# 靜態(tài)資源緩存配置
location~* .(jpg|jpeg|png|gif|ico|css|js|pdf|txt)${
 expires1y;
 add_headerCache-Control"public, immutable";
 add_headerPragma"cache";
 
 # 開啟gzip壓縮
 gzip_staticon;
 
 # 避免不必要的訪問日志
 access_logoff;
 
 # 啟用sendfile零拷貝
 sendfileon;
 sendfile_max_chunk1m;
}

3.2 動(dòng)態(tài)壓縮優(yōu)化

# Gzip壓縮配置
gzipon;
gzip_varyon;
gzip_min_length1024;
gzip_comp_level6;
gzip_types
  text/plain
  text/css
  text/xml
  text/javascript
  application/json
  application/javascript
  application/xml+rss
  application/atom+xml;

# Brotli壓縮(需要編譯模塊)
brotlion;
brotli_comp_level6;
brotli_typestext/plain text/css application/json application/javascript;

性能提升:啟用Brotli壓縮后,傳輸數(shù)據(jù)量減少25%,頁面加載速度提升35%。

第四階段:高級(jí)優(yōu)化技術(shù)

4.1 upstream連接池優(yōu)化

upstreambackend {
 # 使用least_conn負(fù)載均衡算法
  least_conn;
 
 # 后端服務(wù)器配置
 server192.168.1.10:8080max_fails=3fail_timeout=30s;
 server192.168.1.11:8080max_fails=3fail_timeout=30s;
 server192.168.1.12:8080max_fails=3fail_timeout=30s;
 
 # 連接池設(shè)置
 keepalive300;
 keepalive_requests1000;
 keepalive_timeout60s;
}

server{
 location/ {
   proxy_passhttp://backend;
   
   # HTTP版本設(shè)置
   proxy_http_version1.1;
   proxy_set_headerConnection"";
   
   # 緩沖區(qū)優(yōu)化
   proxy_bufferingon;
   proxy_buffer_size128k;
   proxy_buffers8128k;
   proxy_busy_buffers_size256k;
   
   # 超時(shí)設(shè)置
   proxy_connect_timeout5s;
   proxy_send_timeout10s;
   proxy_read_timeout10s;
  }
}

4.2 SSL/TLS性能優(yōu)化

# SSL配置優(yōu)化
ssl_protocolsTLSv1.2TLSv1.3;
ssl_ciphersECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphersoff;

# SSL會(huì)話緩存
ssl_session_cacheshared50m;
ssl_session_timeout1d;
ssl_session_ticketsoff;

# OCSP裝訂
ssl_staplingon;
ssl_stapling_verifyon;

# SSL緩沖區(qū)
ssl_buffer_size4k;

# 使用硬件加速(如果支持)
ssl_engineqat;

4.3 內(nèi)存池優(yōu)化

# 連接內(nèi)存池大小
connection_pool_size512;

# 請(qǐng)求內(nèi)存池大小 
request_pool_size8k;

# 大頁面內(nèi)存支持(需要內(nèi)核支持)
large_client_header_buffers816k;

# 減少內(nèi)存分配次數(shù)
proxy_temp_file_write_size256k;
proxy_temp_path/var/cache/nginx/proxy_temp levels=1:2keys_zone=temp:10m;

第五階段:監(jiān)控與調(diào)優(yōu)

5.1 關(guān)鍵指標(biāo)監(jiān)控

# 啟用stub_status模塊
location/nginx_status {
 stub_statuson;
 access_logoff;
 allow127.0.0.1;
 denyall;
}

# 啟用實(shí)時(shí)監(jiān)控
location/nginx_real_status {
 rtmp_statall;
 rtmp_stat_stylesheetstat.xsl;
}

監(jiān)控腳本示例

#!/bin/bash
# nginx_monitor.sh
curl -s http://localhost/nginx_status | awk'
/Active connections/ {print "active_connections " $3}
/accepts/ {print "accepts " $1; print "handled " $2; print "requests " $3}
/Reading/ {print "reading " $2; print "writing " $4; print "waiting " $6}
'|whilereadmetric value;do
 echo"nginx.$metric:$value|g"| nc -u localhost 8125
done

5.2 性能基準(zhǔn)測試

# wrk壓測命令
wrk -t32 -c1000 -d60s --latency http://your-domain.com/

# ab壓測對(duì)比
ab -n 100000 -c 1000 http://your-domain.com/

# 自定義Lua腳本壓測
wrk -t32 -c1000 -d60s -s post.lua http://your-domain.com/api

極限優(yōu)化:突破百萬QPS

6.1 內(nèi)核旁路技術(shù)

# 使用DPDK進(jìn)行網(wǎng)絡(luò)優(yōu)化
# 編譯Nginx時(shí)添加DPDK支持
./configure --with-dpdk=/path/to/dpdk

# 啟用網(wǎng)絡(luò)隊(duì)列綁定
echo2 > /proc/irq/24/smp_affinity
echo4 > /proc/irq/25/smp_affinity

6.2 JIT編譯優(yōu)化

# 啟用OpenResty的LuaJIT
location/api {
 content_by_lua_block{
    -- 高性能Lua處理邏輯
    ngx.header.content_type="application/json"
    ngx.say('{"status": "ok"}')
  }
}

6.3 零拷貝優(yōu)化

# 啟用splice系統(tǒng)調(diào)用
spliceon;

# AIO異步IO
aiothreads;
aio_writeon;

# 直接IO
directio4m;
directio_alignment512;

實(shí)戰(zhàn)案例:電商秒殺系統(tǒng)

在某電商平臺(tái)的雙11秒殺活動(dòng)中,我們面臨的挑戰(zhàn):

? 預(yù)期峰值:150萬QPS

? 響應(yīng)時(shí)間要求:< 50ms

? 可用性要求:99.99%

優(yōu)化方案

# 秒殺專用配置
upstreamseckill_backend {
 hash$remote_addrconsistent;
 server10.0.1.10:8080weight=3max_conns=3000;
 server10.0.1.11:8080weight=3max_conns=3000;
 server10.0.1.12:8080weight=4max_conns=4000;
 
 keepalive1000;
}

# 限流配置
limit_req_zone$binary_remote_addrzone=seckill:100mrate=100r/s;
limit_conn_zone$binary_remote_addrzone=conn_seckill:100m;

server{
 location/seckill {
   # 應(yīng)用限流策略
   limit_reqzone=seckill burst=200nodelay;
   limit_connconn_seckill10;
   
   # 緩存熱點(diǎn)數(shù)據(jù)
   proxy_cacheseckill_cache;
   proxy_cache_valid2003025s;
   proxy_cache_valid4041m;
   
   # 快速失敗
   proxy_connect_timeout1s;
   proxy_send_timeout2s;
   proxy_read_timeout2s;
   
   proxy_passhttp://seckill_backend;
  }
}

結(jié)果:成功扛住了168萬QPS的峰值流量,平均響應(yīng)時(shí)間控制在32ms以內(nèi)。

優(yōu)化檢查清單

基礎(chǔ)優(yōu)化

? Worker進(jìn)程數(shù)設(shè)置為CPU核心數(shù)

? 啟用epoll事件模型

? 調(diào)整worker_connections

? 優(yōu)化keepalive設(shè)置

? 配置合適的緩沖區(qū)大小

系統(tǒng)優(yōu)化

? 調(diào)整內(nèi)核參數(shù)

? 設(shè)置文件描述符限制

? 優(yōu)化TCP參數(shù)

? 配置內(nèi)存參數(shù)

? 啟用透明大頁

高級(jí)優(yōu)化

? 配置upstream連接池

? 啟用gzip/brotli壓縮

? 優(yōu)化SSL/TLS設(shè)置

? 實(shí)現(xiàn)智能緩存策略

? 部署CDN加速

監(jiān)控優(yōu)化

? 設(shè)置性能監(jiān)控

? 配置告警規(guī)則

? 建立性能基線

? 定期壓力測試

? 分析訪問日志

常見陷阱與解決方案

陷阱1:worker_processes設(shè)置過多

現(xiàn)象:CPU上下文切換頻繁,性能下降
解決:使用worker_processes auto讓Nginx自動(dòng)決定

陷阱2:忽略u(píng)pstream連接復(fù)用

現(xiàn)象:后端連接數(shù)過多,建立連接開銷大
解決:合理設(shè)置keepalive參數(shù)

陷阱3:SSL握手開銷過大

現(xiàn)象:HTTPS性能遠(yuǎn)低于HTTP
解決:啟用SSL會(huì)話緩存和硬件加速

陷阱4:日志寫入成為瓶頸

現(xiàn)象:磁盤IO占用過高
解決:使用異步日志或關(guān)閉不必要的訪問日志

未來發(fā)展趨勢

HTTP/3與QUIC協(xié)議支持

# 啟用HTTP/3(實(shí)驗(yàn)性功能)
listen443quic reuseport;
listen443ssl http2;

add_headerAlt-Svc'h3=":443"; ma=86400';

邊緣計(jì)算集成

隨著5G和邊緣計(jì)算的發(fā)展,Nginx正在向邊緣節(jié)點(diǎn)擴(kuò)展,提供更低延遲的服務(wù)。

AI驅(qū)動(dòng)的智能優(yōu)化

未來的Nginx將集成機(jī)器學(xué)習(xí)算法,根據(jù)實(shí)時(shí)流量模式自動(dòng)調(diào)整配置參數(shù)。

總結(jié)

通過系統(tǒng)化的Nginx優(yōu)化,我們可以將性能從10萬QPS提升到百萬級(jí)別。關(guān)鍵在于:

1.分層優(yōu)化:從基礎(chǔ)配置到系統(tǒng)內(nèi)核,再到應(yīng)用層面

2.持續(xù)監(jiān)控:建立完善的監(jiān)控體系,及時(shí)發(fā)現(xiàn)性能瓶頸

3.壓測驗(yàn)證:每次優(yōu)化后都要進(jìn)行壓力測試驗(yàn)證效果

4.場景適配:根據(jù)具體業(yè)務(wù)場景調(diào)整優(yōu)化策略

記住,性能優(yōu)化是一個(gè)持續(xù)的過程,需要根據(jù)業(yè)務(wù)發(fā)展不斷調(diào)整和完善。希望這份實(shí)戰(zhàn)指南能夠幫助你在高并發(fā)優(yōu)化的路上少走彎路,早日實(shí)現(xiàn)性能突破!

交流與反饋

如果你在Nginx優(yōu)化過程中遇到問題,或者有更好的優(yōu)化經(jīng)驗(yàn)分享,歡迎在評(píng)論區(qū)討論。讓我們一起打造更高性能的Web服務(wù)!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 負(fù)載
    +關(guān)注

    關(guān)注

    2

    文章

    658

    瀏覽量

    36288
  • 均衡器
    +關(guān)注

    關(guān)注

    9

    文章

    226

    瀏覽量

    31851
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    13021

原文標(biāo)題:Nginx高并發(fā)優(yōu)化實(shí)戰(zhàn):從10萬到百萬QPS的性能調(diào)優(yōu)之路

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    解析keepalived+nginx實(shí)現(xiàn)可用方案技術(shù)

    的位置,Nginx可用影響到整個(gè)系統(tǒng)的穩(wěn)定性。如果nginx服務(wù)器宕機(jī),后端web服務(wù)將無法提供服務(wù),影響嚴(yán)重。所以如何保證Nginx 的穩(wěn)定和
    的頭像 發(fā)表于 09-30 15:52 ?4439次閱讀
    解析keepalived+<b class='flag-5'>nginx</b>實(shí)現(xiàn)<b class='flag-5'>高</b>可用<b class='flag-5'>方案</b>技術(shù)

    從服務(wù)端視角看并發(fā)難題

    ,比如:使用集群,分布式的系統(tǒng)架構(gòu)應(yīng)用優(yōu)化,比如:使用更高效的編程語言,優(yōu)化處理業(yè)務(wù)邏輯的算法,優(yōu)化訪問數(shù)據(jù)庫的SQL基本原則:分而治之,并提高單個(gè)請(qǐng)求的處理速度
    發(fā)表于 11-02 15:11

    Linux運(yùn)維Nginx軟件優(yōu)化之安全優(yōu)化

    一、Nginx優(yōu)化分類安全優(yōu)化(提升網(wǎng)站安全性配置)性能優(yōu)化(提升用戶訪問網(wǎng)站效率)二、Nginx安全優(yōu)
    發(fā)表于 12-17 15:12

    Linux運(yùn)維Nginx軟件優(yōu)化Nginx性能優(yōu)化

    1. 優(yōu)化nginx worker進(jìn)行個(gè)數(shù)nginx服務(wù)主要有兩個(gè)重要進(jìn)程:01) master進(jìn)程:可以控制nginx服務(wù)的啟動(dòng) 停止 或重啟02) worker進(jìn)程:處理用戶請(qǐng)求信
    發(fā)表于 12-18 15:11

    Linux運(yùn)維Nginx軟件優(yōu)化之日志優(yōu)化

    1. 配置Nginx服務(wù)相關(guān)日志操作1) 進(jìn)行日志的切割[code][root@oldboy ~]# mkdir /server/scripts/ -p[root@oldboy ~]# cd
    發(fā)表于 12-18 15:17

    PHP開發(fā)中,如何處理負(fù)載、并發(fā)

    如何處理負(fù)載、并發(fā)?(好好看看,經(jīng)常問到,能回答到主要的東西即可)?答:從低成本、高性能和擴(kuò)張性的角度來說有如下處理方案:1、HTML靜態(tài)化其實(shí)大家都知道,效率最高、消耗最小的就是
    發(fā)表于 07-03 10:33

    一文讀懂Nginx、Apache工作原理

    并發(fā)連接的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品。Nginx同時(shí)也可以作為7層負(fù)載均衡服務(wù)器來使用。根據(jù)我的測試結(jié)果,Nginx
    發(fā)表于 04-26 11:33 ?2730次閱讀

    Nginx的詳細(xì)知識(shí)點(diǎn)講解

    Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好 ngi
    的頭像 發(fā)表于 12-26 10:25 ?3222次閱讀
    <b class='flag-5'>Nginx</b>的詳細(xì)知識(shí)點(diǎn)講解

    如何徹底搞懂Nginx知識(shí)網(wǎng)結(jié)構(gòu)

    1.Nginx知識(shí)網(wǎng)結(jié)構(gòu)圖 Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx并發(fā)能力確實(shí)在
    的頭像 發(fā)表于 05-03 14:15 ?2358次閱讀
    如何徹底搞懂<b class='flag-5'>Nginx</b>知識(shí)網(wǎng)結(jié)構(gòu)

    為什么Nginx可以支持并發(fā)

    先說答案,Nginx之所以支持并發(fā),是因?yàn)樗腔趀poll的異步及非阻塞的事件驅(qū)動(dòng)模型。 在這個(gè)模型下,Nginx服務(wù)端可以同一時(shí)間接收成千上萬個(gè)客戶端請(qǐng)求而不阻塞。這是因?yàn)?/div>
    的頭像 發(fā)表于 02-13 10:48 ?2240次閱讀

    Nginx的特點(diǎn)和作用 Nginx常用命令和核心配置

    Nginx 是開源、高性能、可靠的 Web 和反向代理服務(wù)器,而且支持熱部署,幾乎可以做到 7 * 24 小時(shí)不間斷運(yùn)行,即使運(yùn)行幾個(gè)月也不需要重新啟動(dòng),還能在不間斷服務(wù)的情況下對(duì)軟件版本進(jìn)行熱
    的頭像 發(fā)表于 09-01 09:53 ?1449次閱讀
    <b class='flag-5'>Nginx</b>的特點(diǎn)和作用 <b class='flag-5'>Nginx</b>常用命令和核心配置

    Nginx目錄結(jié)構(gòu)有哪些

    很多,例如:新浪、網(wǎng)易、 騰訊等。 為什么要用Nginx? 跨平臺(tái)、配置簡單、方向代理、并發(fā)連接:處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā)
    的頭像 發(fā)表于 11-11 11:27 ?1340次閱讀
    <b class='flag-5'>Nginx</b>目錄結(jié)構(gòu)有哪些

    Nginx 如何實(shí)現(xiàn)高性能低消耗

    Nginx 是一個(gè)輕量級(jí)的HTTP 服務(wù)程序,相比其他服務(wù)器程序如Apache,Nginx占用內(nèi)存少,穩(wěn)定性,并發(fā)處理能力強(qiáng)。同時(shí)Nginx
    的頭像 發(fā)表于 11-11 11:31 ?1117次閱讀
    <b class='flag-5'>Nginx</b> 如何實(shí)現(xiàn)高性能低消耗

    Nginx配置終極指南

    Nginx 是開源、高性能、可靠的 Web 和反向代理服務(wù)器,而且支持熱部署,幾乎可以做到 7 * 24 小時(shí)不間斷運(yùn)行,即使運(yùn)行幾個(gè)月也不需要重新啟動(dòng),還能在不間斷服務(wù)的情況下對(duì)軟件版本進(jìn)行熱
    的頭像 發(fā)表于 06-18 15:56 ?927次閱讀
    <b class='flag-5'>Nginx</b>配置終極指南

    Nginx并發(fā)場景下的性能調(diào)優(yōu)技巧

    在一次雙十一大促中,我們的電商平臺(tái)在活動(dòng)開始后3分鐘內(nèi)涌入了800萬用戶,QPS瞬間飆升到50萬。就在所有人都捏著一把汗的時(shí)候,經(jīng)過優(yōu)化Nginx集群穩(wěn)穩(wěn)地扛住了這波流量沖擊,CPU使用率始終保持在60%以下。
    的頭像 發(fā)表于 09-02 16:26 ?680次閱讀