成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大流量、高負載場景 Nginx+Linux 性能調優

系統 Linux
Nginx以高性能負載均衡、緩存和web服務器出名,支撐著世界上繁忙網站中的40%。大多數使用場景下,Nginx和Linux系統的默認配置表現較好,但是仍有必要做一些調優以期達到最佳性能。

 Nginx以高性能負載均衡、緩存和web服務器出名,支撐著世界上繁忙網站中的40%。大多數使用場景下,Nginx和Linux系統的默認配置表現較好,但是仍有必要做一些調優以期達到***性能。

這篇文章討論當調優系統時需要考慮的一些Nginx和Linux配置。這些配置有很多,但是在本文里我們只涉及適合大多數用戶的配置。那些沒有涉及到的配置,只有那些對Nginx和Linux有深入理解的人,或者Nginx專家服務團隊推薦,才會考慮到。

Nginx專家服務,已經和世界上一些繁忙網站合作來調優Nginx以達到***限度的性能,并且可以對任何需要充分發揮系統能力的客戶提供支持。

[[265760]]

簡介

這里假定讀者對Nginx架構和配置概念有個基本了解。本文不會重復Nginx文檔的內容,而是概述各種配置選項并提供相關文檔鏈接。

調優時,有一條較好的準則是,一次只改一個配置項,如果改后沒有性能上的提升,就退回為原先的值。

我們先討論Linux調優,因為有些值會影響在Nginx配置中可以用的值。

Linux配置

現代Linux內核(2.6+)能夠很好的調節各種配置,有些配置您可能想更改。如果操作系統配置太低,那么會在內核日志中看到錯誤信息,因此需要調節這些配置。Linux配置項很多,本文只提及那些在普通工作負載下最可能需要調優的配置項。如果需要這些配置的詳細信息,請參考Linux文檔。

Backlog隊列

以下設置與連接及其如何排隊直接相關。如果傳入的連接率很高而性能水平參差不齊,比如一些連接似乎被暫停了,那么更改這些配置可能會有用。

  • net.core.somaxconn 該項設置等待被Nginx接受的連接的排隊大小。由于Nginx接受連接速度非常快,這個值通常不需要非常大,但是默認值是非常低的,所以如果你有一個高流量網站,增加這個值是個好主意。如果設置過低,那么你能在內核日志中看到錯誤信息,這時你應該增加這個值直到沒有錯誤信息。注意:如果你將其設置為大于512的值,你應該同時用listen指令的backlog參數匹配這個值來更改Nginx的配置。
  • net.core.netdev_max_backlog 該項設置在交由CPU處理之前網卡緩沖數據包的速率。對于擁有高帶寬的機器,這個值可能需要增加。查看網卡文檔尋求相關建議,或者檢查內核日志相關錯誤信息。

文件描述符

文件描述符是一種操作系統資源,用來處理諸如連接和打開文件的事情。對每一個連接,Nginx可以用上多達兩個文件描述符。例如,如果Nginx用作代理,則其中一個用于客戶端連接,另一個用于連接到被代理的服務器。如果使用了HTTP keepalive,則連接描述符的使用會少得多。對于有大量連接的系統,如下設置可能需要進行調整:

  • sys.fs.file_max 這是系統范圍內的文件描述符限制。
  • nofile 這是用戶級別的文件描述符限制,在/etc/security/limits.conf文件中配置

臨時端口

當Nginx被當作代理使用時,每一個到upstream服務器的連接都使用一個臨時端口。

  • net.ipv4.ip_local_port_range 這個用來指定可以使用的起止端口號。如果你看到端口耗盡,你可以增加這個范圍。常見的設置為1024到65000。
  • net.ipv4.tcp_fin_timeout 這個用于指定一個不再被使用的端口多久之后可以被另一連接再次使用。通常,這個值默認為60秒,但是可以安全地減少到30甚至15秒。

Nginx配置

下面是一些可能影響性能的Nginx指令。如前所述,我們僅討論那些推薦大多數用戶調整的指令。這里未提及到的任何指令,如果沒有Nginx團隊的指導,不推薦更改。

工作進程

Nginx可以運行多個工作進程,每個都能處理大量連接。你可以用如下指令控制工作進程個數以及連接如何被處理:

  • worker_processes 這個控制Nginx運行的工作進程個數。大多數情況下,一個CPU核心跑一個工作進程能夠工作得很好。可以將該指令設為auto來達到與CPU核心數匹配的工作進程數。有時候,可以增加這個值,比如工作進程需要處理大量磁盤IO操作的時候。這個值默認為1。
  • worker_connections 這個表示每個工作進程同時能夠處理的***連接數。默認值是512,但是大多數系統能處理更大的值。這個值該設為多少取決于服務器硬件配置以及流量的特性,可以通過測試來發現。

Keepalives

持久連接可以減少打開和關閉連接所需要的CPU和網絡開銷,因而對性能有重大影響。Nginx終止所有客戶端連接,并具有到upstream服務器的單獨連接。Nginx支持客戶端和upstream服務器的持久連接。如下指令涉及客戶端持久連接:

  • keepalive_requests 這表示客戶端能在單個持久連接上發送多少請求。默認值是100,可以設置成更高的值,這在負載生成器從單個客戶端發送大量請求的測試場景中非常有用。
  • keepalive_timeout 表示一個空閑持久連接保持打開狀態多長時間。

如下指令涉及upstream持久連接:

  • keepalive 這個指定每個工作進程連接到upstream服務器的空閑持久連接數量。這個指令沒有默認值。

為了啟用到upstream的持久連接,需要增加如下指令:

  1. proxy_http_version 1.1;  
  2. proxy_set_header Connection ""

Access日志

記錄每個請求需要花費CPU和IO周期,減少這種影響的一種方法是啟用access日志緩沖。這將導致Nginx緩沖一系列日志條目,然后一次性寫入文件而不是單個單個寫入。

通過指定access_log指令的"buffer=size"選項可以打開access日志緩沖,該設置指定要使用的緩沖區的大小。你還可以使用"flush=time"選項告訴Nginx多長時間后把緩沖區中的條目寫入文件。

定義了這兩個選項后,當緩沖區放不下下一條日志,或者緩沖區中的條目超過了flush參數指定的時間,Nginx會將緩沖區中的條目寫入日志文件。當工作進程重新打開日志文件或者關閉時,緩沖區中的條目也會被寫入文件。也可以完全禁用access日志記錄。

Sendfile

Sendfile是一個操作系統特性,可以在Nginx上啟用。它通過在內核中從一個文件描述符向另一個文件描述符復制數據,往往能達到零拷貝,因而可以提供更快的TCP數據傳輸。Nginx可以使用該機制將緩存或者磁盤上的內容寫到socket,無需從內核空間到用戶空間的上下文切換,因而非常快并且使用較少的CPU開銷。由于數據永遠不會觸及用戶空間,所以不可能把需要訪問數據的過濾器插入到處理鏈中,不能使用任何需要改變內容的Nginx過濾器,比如gzip過濾器。Nginx默認沒有啟用該機制。

限制

Nginx和Nginx Plus允許設置各種限制,用來控制客戶端資源消耗,以防影響系統性能以及用戶體驗和安全。以下是一些相關指令:

  • limit_conn / limit_conn_zone 這些指令可以用來限制Nginx允許的連接數,比如來自單個客戶端IP地址的連接數。這可以防止單個客戶端打開太多連接而消耗太多資源。
  • limit_rate 這個用來限制客戶端在單個連接上允許使用的帶寬。這可以防止某些客戶端導致系統超載,因而有利于為所有客戶端提供QoS保證。
  • limit_req / limit_req_zone 這些指令可以用來限制Nginx的請求處理速率。與limit_rate一起,可以防止某些客戶端導致系統超載,因而有利于為所有客戶端提供QoS保證。這些指令也可以用來增強安全性,尤其是對登錄頁面,通過限制請求速率,使得其對人類用戶是合適的,而會減慢試圖訪問你的應用的程序。
  • max_conns 這個用來限制同時連接到upstream組中單個服務器的***連接數。這可以防止upstream服務器超載。默認值是0,表示沒有限制。
  • queue 如果設置了max_conns,那么queue指令用來決定當一個請求由于upstream組中沒有可用服務器或者這些服務器達到max_conns限制而不能得到處理時會發生什么。這個指令用來設定有多少請求將會排隊以及排多久。如果沒有設置這個指令,就不會有排隊行為。

其它考慮

Nginx還有一些特性可以用來提高web應用的性能。這些特性不常出現在調優討論中,但是有必要一提,因為它們的影響也可能比較可觀。我們將討論這些特性中的兩個。

緩存

對于一個為一組web服務器或者應用服務器作負載均衡的Nginx實例來說,啟用緩存可以顯著地降低響應時間,同時能顯著減輕后端服務器的負載。緩存本身就是一個主題,這里不會討論。

壓縮

壓縮響應可以大大減小響應的大小,減少帶寬占用。不過,這需要CPU資源來處理壓縮,所以***在值得減少帶寬占用的情況下使用。需要注意的是,不能對已經壓縮的東西(比如jpeg圖片)再次啟用壓縮。Nginx壓縮配置的更多信息請參考:Nginx管理指南 - 壓縮和解壓縮

責任編輯:武曉燕 來源: 民工哥技術之路
相關推薦

2020-11-30 11:40:35

NginxLinux性能調優

2010-12-20 09:58:15

LVS系統優化

2023-08-16 11:39:19

高并發調優

2019-09-11 09:30:44

2018-09-28 04:46:19

負載均衡JavaLVS

2020-08-18 13:50:04

Tomcat高并發Java

2017-11-07 09:06:32

2017-07-21 08:55:13

TomcatJVM容器

2013-03-20 17:18:07

Linux系統性能調優

2012-06-20 11:05:47

性能調優攻略

2021-03-04 08:39:21

SparkRDD調優

2024-11-11 17:39:01

2013-03-12 17:33:17

Linux系統性能調優

2019-08-13 09:04:22

Linux性能調優

2023-11-28 08:43:48

2011-03-10 14:40:54

LAMPMysql

2021-01-27 12:40:09

NginHTTPS前端

2011-05-20 15:02:01

Oracle性能調優

2020-09-03 14:30:40

Tomcat 拆解調優

2017-11-27 14:58:01

MySQL高并發優化性能調優
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区免费视频 | 久久99视频精品 | 亚洲风情在线观看 | 精品综合视频 | 日韩在线小视频 | 国内久久 | 中文字幕 在线观看 | 欧美一区二区二区 | 一区二区三区视频 | 久久精品国产免费看久久精品 | 成人夜晚看av | 亚洲精品区 | av高清 | 精品视频免费 | 久草网站 | 在线不卡一区 | 久久久精品一区二区三区四季av | 谁有毛片 | 成人精品国产免费网站 | 嫩草视频免费 | 国产h在线 | 成人av网站在线观看 | 欧美一区二区三区视频在线播放 | 欧美啪啪 | 免费精品视频在线观看 | 在线免费观看黄a | 日韩在线一区二区 | 亚洲成网| 精品成人| 久久久久国产精品 | 成年男女免费视频网站 | 黄色成人国产 | 自拍偷拍精品 | 午夜免费在线 | 亚洲国产精品一区二区三区 | 成人免费在线播放 | 天天射网站 | 亚洲精品视频在线 | 国产精品av久久久久久毛片 | 欧美aⅴ在线观看 | 久久久久久久久久久久久91 |