国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入淺出 -- 系統(tǒng)架構(gòu)之負載均衡Nginx的性能優(yōu)化

這篇具有很好參考價值的文章主要介紹了深入淺出 -- 系統(tǒng)架構(gòu)之負載均衡Nginx的性能優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、Nginx性能優(yōu)化

? ?到這里文章的篇幅較長了,最后再來聊一下關(guān)于Nginx的性能優(yōu)化,主要就簡單說說收益最高的幾個優(yōu)化項,在這塊就不再展開敘述了,畢竟影響性能都有多方面原因?qū)е碌模热缇W(wǎng)絡(luò)、服務(wù)器硬件、操作系統(tǒng)、后端服務(wù)、程序自身、數(shù)據(jù)庫服務(wù)等,對于性能調(diào)優(yōu)比較感興趣的可以參考之前《JVM性能調(diào)優(yōu)》中的調(diào)優(yōu)思想。

優(yōu)化一:打開長連接配置

? ?通常Nginx作為代理服務(wù),負責(zé)分發(fā)客戶端的請求,那么建議開啟HTTP長連接,用戶減少握手的次數(shù),降低服務(wù)器損耗,具體如下:

upstream xxx {
    # 長連接數(shù)
    keepalive 32;
    # 每個長連接提供的最大請求數(shù)
    keepalived_requests 100;
    # 每個長連接沒有新的請求時,保持的最長時間
    keepalive_timeout 60s;
}

優(yōu)化二、開啟零拷貝技術(shù)

? ?零拷貝這個概念,在大多數(shù)性能較為不錯的中間件中都有出現(xiàn),例如Kafka、Netty等,而Nginx中也可以配置數(shù)據(jù)零拷貝技術(shù),如下:

 
sendfile on; # 開啟零拷貝機制

零拷貝讀取機制與傳統(tǒng)資源讀取機制的區(qū)別:

  • 傳統(tǒng)方式:硬件-->內(nèi)核-->用戶空間-->程序空間-->程序內(nèi)核空間-->網(wǎng)絡(luò)套接字
  • 零拷貝方式:硬件-->內(nèi)核-->程序內(nèi)核空間-->網(wǎng)絡(luò)套接字

從上述這個過程對比,很輕易就能看出兩者之間的性能區(qū)別。

優(yōu)化三、開啟無延遲或多包共發(fā)機制

? ?在Nginx中有兩個較為關(guān)鍵的性能參數(shù),即tcp_nodelay、tcp_nopush,開啟方式如下:

 
tcp_nodelay on;
tcp_nopush on;

TCP/IP協(xié)議中默認是采用了Nagle算法的,即在網(wǎng)絡(luò)數(shù)據(jù)傳輸過程中,每個數(shù)據(jù)報文并不會立馬發(fā)送出去,而是會等待一段時間,將后面的幾個數(shù)據(jù)包一起組合成一個數(shù)據(jù)報文發(fā)送,但這個算法雖然提高了網(wǎng)絡(luò)吞吐量,但是實時性卻降低了。

因此你的項目屬于交互性很強的應(yīng)用,那么可以手動開啟tcp_nodelay配置,讓應(yīng)用程序向內(nèi)核遞交的每個數(shù)據(jù)包都會立即發(fā)送出去。但這樣會產(chǎn)生大量的TCP報文頭,增加很大的網(wǎng)絡(luò)開銷。

相反,有些項目的業(yè)務(wù)對數(shù)據(jù)的實時性要求并不高,追求的則是更高的吞吐,那么則可以開啟tcp_nopush配置項,這個配置就類似于“塞子”的意思,首先將連接塞住,使得數(shù)據(jù)先不發(fā)出去,等到拔去塞子后再發(fā)出去。設(shè)置該選項后,內(nèi)核會盡量把小數(shù)據(jù)包拼接成一個大的數(shù)據(jù)包(一個MTU)再發(fā)送出去.

當(dāng)然若一定時間后(一般為200ms),內(nèi)核仍然沒有積累到一個MTU的量時,也必須發(fā)送現(xiàn)有的數(shù)據(jù),否則會一直阻塞。

tcp_nodelay、tcp_nopush兩個參數(shù)是“互斥”的,如果追求響應(yīng)速度的應(yīng)用推薦開啟tcp_nodelay參數(shù),如IM、金融等類型的項目。如果追求吞吐量的應(yīng)用則建議開啟tcp_nopush參數(shù),如調(diào)度系統(tǒng)、報表系統(tǒng)等。

注意:
tcp_nodelay一般要建立在開啟了長連接模式的情況下使用。
tcp_nopush參數(shù)是必須要開啟sendfile參數(shù)才可使用的。

優(yōu)化四、調(diào)整Worker工作進程

? ?Nginx啟動后默認只會開啟一個Worker工作進程處理客戶端請求,而我們可以根據(jù)機器的CPU核數(shù)開啟對應(yīng)數(shù)量的工作進程,以此來提升整體的并發(fā)量支持,如下:

# 自動根據(jù)CPU核心數(shù)調(diào)整Worker進程數(shù)量
worker_processes auto;

工作進程的數(shù)量最高開到8個就OK了,8個之后就不會有再大的性能提升。

同時也可以稍微調(diào)整一下每個工作進程能夠打開的文件句柄數(shù):

 
# 每個Worker能打開的文件描述符,最少調(diào)整至1W以上,負荷較高建議2-3W
worker_rlimit_nofile 20000;

操作系統(tǒng)內(nèi)核(kernel)都是利用文件描述符來訪問文件,無論是打開、新建、讀取、寫入文件時,都需要使用文件描述符來指定待操作的文件,因此該值越大,代表一個進程能夠操作的文件越多(但不能超出內(nèi)核限制,最多建議3.8W左右為上限)。

優(yōu)化五、開啟CPU親和機制

? ?對于并發(fā)編程較為熟悉的伙伴都知道,因為進程/線程數(shù)往往都會遠超出系統(tǒng)CPU的核心數(shù),因為操作系統(tǒng)執(zhí)行的原理本質(zhì)上是采用時間片切換機制,也就是一個CPU核心會在多個進程之間不斷頻繁切換,造成很大的性能損耗。

而CPU親和機制則是指將每個Nginx的工作進程,綁定在固定的CPU核心上,從而減小CPU切換帶來的時間開銷和資源損耗,開啟方式如下:

worker_cpu_affinity auto;

優(yōu)化六、開啟epoll模型及調(diào)整并發(fā)連接數(shù)

? ?在最開始就提到過:Nginx、Redis都是基于多路復(fù)用模型去實現(xiàn)的程序,但最初版的多路復(fù)用模型select/poll最大只能監(jiān)聽1024個連接,而epoll則屬于select/poll接口的增強版,因此采用該模型能夠大程度上提升單個Worker的性能,如下:

events {
    # 使用epoll網(wǎng)絡(luò)模型
    use epoll;
    # 調(diào)整每個Worker能夠處理的連接數(shù)上限
    worker_connections  10240;
}

這里對于select/poll/epoll模型就不展開細說了,后面的IO模型文章中會詳細剖析。

二、放在最后的結(jié)尾

? ?至此,Nginx的大部分內(nèi)容都已闡述完畢,關(guān)于最后一小節(jié)的性能優(yōu)化內(nèi)容,其實在前面就談到的動靜分離、分配緩沖區(qū)、資源緩存、防盜鏈、資源壓縮等內(nèi)容,也都可歸納為性能優(yōu)化的方案。文章來源地址http://www.zghlxwxcb.cn/news/detail-851206.html

到了這里,關(guān)于深入淺出 -- 系統(tǒng)架構(gòu)之負載均衡Nginx的性能優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深入淺出Nginx的基本原理和配置指南「負載均衡篇」

    深入淺出Nginx的基本原理和配置指南「負載均衡篇」

    6.1 四層負載均衡 6.1.1 四層負載均衡與七層負載均衡的區(qū)別 四層負載均衡數(shù)據(jù)包是在底層就進行了分發(fā),而七層負載均衡數(shù)據(jù)包則在最頂端進行分發(fā),所以四層負載均衡的效率比七層負載均衡的要高。四層負載均衡不識別域名,而七層負載均衡識別域名。 6.1.2 四層負載均衡配

    2024年02月09日
    瀏覽(41)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之單體架構(gòu)

    深入淺出 -- 系統(tǒng)架構(gòu)之單體架構(gòu)

    單體架構(gòu)(Monolithic Architecture)是一種傳統(tǒng)的軟件架構(gòu)模式,將整個應(yīng)用程序作為一個單一的、統(tǒng)一的單元進行開發(fā)、部署和擴展。在單體架構(gòu)中,所有的功能模塊都被打包在一起,共享同一個代碼庫和數(shù)據(jù)庫。 例如,在網(wǎng)上商城系統(tǒng)中,JavaWeb工程通常會被打成WA R包部署在

    2024年04月10日
    瀏覽(23)
  • 深入淺出推薦系統(tǒng)(一):推薦系統(tǒng)基本架構(gòu)

    深入淺出推薦系統(tǒng)(一):推薦系統(tǒng)基本架構(gòu)

    過去八九年在廣告、生活服務(wù)、電商等領(lǐng)域從事大數(shù)據(jù)及推薦系統(tǒng)相關(guān)工作,近來打算對過去的工作做一個系統(tǒng)性的梳理。一方面幫自己查缺補漏、進行更深入的學(xué)習(xí);另一方面也希望能通過博客結(jié)交同好,增進交流。 這一博客系列以介紹推薦系統(tǒng)為主,會少量涉及廣告系統(tǒng)

    2023年04月26日
    瀏覽(24)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)架構(gòu)選型參考圖

    深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)架構(gòu)選型參考圖

    技術(shù)選型架構(gòu)圖 是一個用于展示項目中所采用的各種技術(shù)和組件之間關(guān)系的圖表。 它通常包括以下幾個部分: 1. 項目名稱和描述:簡要介紹項目的背景和目標。 2. 技術(shù)棧:列出項目中使用的主要技術(shù)和工具,如編程語言、框架、數(shù)據(jù)庫等。 3. 組件關(guān)系:用箭頭表示各個組

    2024年04月09日
    瀏覽(27)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)架構(gòu)的新挑戰(zhàn)

    深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)架構(gòu)的新挑戰(zhàn)

    盡管微服務(wù)架構(gòu)有著高度獨立的軟件模塊、單一的業(yè)務(wù)職責(zé)、可靈活調(diào)整的技術(shù)棧等優(yōu)勢,但也不能忽略它所帶來的弊端。本篇文章,我們從網(wǎng)絡(luò)、性能、運維、組織架構(gòu)和集成測試五個方面來聊一下設(shè)計微服務(wù)架構(gòu)需要考慮哪些問題,對設(shè)計有哪些挑戰(zhàn)呢? 前面我們聊過了

    2024年04月09日
    瀏覽(36)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之Keepalived搭建雙機熱備

    深入淺出 -- 系統(tǒng)架構(gòu)之Keepalived搭建雙機熱備

    Keepalived+重啟腳本+雙機熱備搭建 ①首先創(chuàng)建一個對應(yīng)的目錄并下載 keepalived 安裝包(提取碼:s6aq)到 Linux 中并解壓: ②進入解壓后的 keepalived 目錄并構(gòu)建安裝環(huán)境,然后編譯并安裝: ③進入安裝目錄的 /soft/keepalived/etc/keepalived/ 并編輯配置文件: ④編輯主機的 keepalived.conf

    2024年04月11日
    瀏覽(24)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)中Nacos的部署

    深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)中Nacos的部署

    前面我們提到過,在微服務(wù)架構(gòu)中,Nacos注冊中心屬于核心組件,通常我們會采用高性能獨立服務(wù)器進行部署,下面我們一起來看看Nacos部署過程: 因為Nacos是支持windows和Linux系統(tǒng)的,且服務(wù)器操作系統(tǒng)一般都是Linux的,為了大家看完文章,可以按照步驟一步步把Nacos部署好,

    2024年04月10日
    瀏覽(26)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)標準組件及職責(zé)

    深入淺出 -- 系統(tǒng)架構(gòu)之微服務(wù)標準組件及職責(zé)

    我們來認識一下微服務(wù)架構(gòu)在Java體系中依托哪些組件實現(xiàn)的。 相對于單體架構(gòu)的簡單粗暴,微服務(wù)的核心是將應(yīng)用打散,形成多個獨立提供的微服務(wù),雖然從管理與邏輯上更符合業(yè)務(wù)需要。但微服務(wù)架構(gòu)也帶來了很多急需解決的核心問題: 1、如何發(fā)現(xiàn)新節(jié)點以及檢查各節(jié)點

    2024年04月12日
    瀏覽(20)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之分布式多形態(tài)的存儲型集群

    深入淺出 -- 系統(tǒng)架構(gòu)之分布式多形態(tài)的存儲型集群

    在上階段,我們簡單聊了下集群的基本知識,以及快速過了一下邏輯處理型集群的內(nèi)容,下面重點來看看存儲型集群,畢竟這塊才是重頭戲,集群的形態(tài)在其中有著多種多樣的變化。 邏輯處理型的應(yīng)用,部署集群架構(gòu)是為了解決單點故障、獲得更高的吞吐量,集群內(nèi)各節(jié)點之

    2024年04月10日
    瀏覽(103)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之分布式CAP理論和BASE理論

    深入淺出 -- 系統(tǒng)架構(gòu)之分布式CAP理論和BASE理論

    科技進步離不開理論支撐,而當(dāng)下大行其道的分布式架構(gòu),透過繁榮昌盛表象,底層同樣離不開諸多分布式理論撐持。當(dāng)然,相信諸位在學(xué)習(xí)分布式相關(guān)技術(shù)時,必然學(xué)到過兩個分布式領(lǐng)域中的基礎(chǔ)理論,即: CAP與BASE理論 。 當(dāng)一個從邏輯上被視為整體的系統(tǒng),拆散到多個節(jié)

    2024年04月13日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包