tengine編譯安裝及nginx高並發內核參數優化


Tengine

Tengine介紹

  • Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。
  • Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。
  • 它的最終目標是打造一個高效、穩定、安全、易用的Web平台。

      官網:http://tengine.taobao.org

      官方文檔:http://tengine.taobao.org/documentation_cn.html

Tengine特性

  繼承Nginx-1.16.0的所有特性,兼容nginx的配置
支持HTTP的CONNECT方法,可用於正向代理場景
支持異步OpenSSL,可使用硬件如:QAT進行HTTPS的加速與卸載
增強相關運維、監控能力,比如異步打印日志及回滾,本地DNS緩存,內存監控等
Stream模塊支持server_name指令
更加強大的負載均衡能力,包括一致性hash模塊、會話保持模塊,還可以對后端的服務器進行主動健康檢查,根據服務器狀態自動上線下線,以及動態解析upstream中出現的域名
輸入過濾器機制支持。通過使用這種機制Web應用防火牆的編寫更為方便
支持設置proxy、memcached、fastcgi、scgi、uwsgi在后端失敗時的重試次數
動態腳本語言Lua支持。擴展功能非常高效簡單
支持按指定關鍵字(域名,url等)收集Tengine運行狀態
組合多個CSS、JavaScript文件的訪問請求變成一個請求
自動去除空白字符和注釋從而減小頁面的體積
自動根據CPU數目設置進程個數和綁定CPU親緣性;
監控系統的負載和資源占用從而對系統進行保護
顯示對運維人員更友好的出錯信息,便於定位出錯機器
更強大的防攻擊(訪問速度限制)模塊
更方便的命令行參數,如列出編譯的模塊列表、支持的指令等
可以根據訪問文件類型設置過期時間

源碼編譯安裝Tengine

1、下載tengine源碼包

[root@centos_47nginx]#wget http://tengine.taobao.org/download/tengine-2.1.2.tar.gz

 2、安裝依賴的包

[root@centos_47~]#yum install gcc pcre-devel openssl-devel zlib-devel

  3、解壓下載的tengine源碼包,並切換到解壓后的tengine包下

[root@centos_47nginx]#tar xvf tengine-2.1.2.tar.gz
[root@centos_47nginx]#cd tengine-2.1.2/

   4、開始編譯tengine

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-http_concat_module=shared

注:

  •  #指定運行權限的用戶   --user=nginx
  •  #指定運行的權限用戶組   --group=nginx
  •  #指定安裝路徑   --prefix=/apps/nginx
  •  #支持nginx狀態查詢 --with-http_stub_status_module
  •  #開啟ssl支持   --with-http_ssl_module
  •  #開啟GZIP功能   --with-http_gzip_static_module
  • #開啟concat功能  --with-http_concat_module=shared

 5、開始安裝編譯后的包。

[root@centos_47tengine-2.1.2]#make -j 4 && make install

 6、指定nginx軟鏈接,創建nginx用戶賬號,啟動nginx服務。

[root@centos_47tengine-2.1.2]#ln -s /apps/nginx/sbin/nginx  /usr/sbin
[root@centos_47tengine-2.1.2]#useradd -r -s /sbin/nologin nginx
[root@centos_47tengine-2.1.2]#nginx

 7、訪問網頁查看效果,編譯完成。

 

 實現nginx高並發Linux內核優化

默認的Linux內核參數考慮的是最通用場景,不符合用於支持高並發訪問的Web服務器的定義,根據業務特點來進行調整,當Nginx作為靜態web內容服務器、反向代理或者提供壓縮服務器的服務器時,內核參數的調整都是不同的,此處針對最通用的、使Nginx支持更多並發請求的TCP網絡參數做簡單的配置,修改/etc/sysctl.conf來更改內核參數:

fs.file-max = 1000000
#表示單個進程較大可以打開的句柄數


net.ipv4.tcp_tw_reuse = 1
#參數設置為 1 ,表示允許將TIME_WAIT狀態的socket重新用於新的TCP鏈接,這對於服務器來說意義重大,
因為總有大量TIME_WAIT狀態的鏈接存在


net.ipv4.tcp_keepalive_time = 600
#當keepalive啟動時,TCP發送keepalive消息的頻度;默認是2小時,將其設置為10分鍾,可更快的清理無效鏈接


net.ipv4.tcp_fin_timeout = 30
#當服務器主動關閉鏈接時,socket保持在FIN_WAIT_2狀態的較大時間


net.ipv4.tcp_max_tw_buckets = 5000
#表示操作系統允許TIME_WAIT套接字數量的較大值,如超過此值,TIME_WAIT套接字將立刻被清除並打印警告信息,默認為8000,過多的TIME_WAIT套接字會使Web服務器變慢


net.ipv4.ip_local_port_range = 1024 65000
#定義UDP和TCP鏈接的本地端口的取值范圍


net.ipv4.tcp_rmem = 10240 87380 12582912
#定義了TCP接受緩存的最小值、默認值、較大值


net.ipv4.tcp_wmem = 10240 87380 12582912
#定義TCP發送緩存的最小值、默認值、較大值

net.core.netdev_max_backlog = 8096
#當網卡接收數據包的速度大於內核處理速度時,會有一個列隊保存這些數據包。這個參數表示該列隊的較大值


net.core.rmem_default = 6291456
#表示內核套接字接受緩存區默認大小


net.core.wmem_default = 6291456
#表示內核套接字發送緩存區默認大小


net.core.rmem_max = 12582912
#表示內核套接字接受緩存區較大大小


net.core.wmem_max = 12582912
#表示內核套接字發送緩存區較大大小
注意:以上的四個參數,需要根據業務邏輯和實際的硬件成本來綜合考慮


net.ipv4.tcp_syncookies = 1
#與性能無關。用於解決TCP的SYN攻擊


net.ipv4.tcp_max_syn_backlog = 8192
#這個參數表示TCP三次握手建立階段接受SYN請求列隊的較大長度,默認1024,將其設置的大一些可使出現Nginx繁忙來不及accept新連接時,Linux不至於丟失客戶端發起的鏈接請求


net.ipv4.tcp_tw_recycle = 1
#這個參數用於設置啟用timewait快速回收


net.core.somaxconn=262114
#選項默認值是128,這個參數用於調節系統同時發起的TCP連接數,在高並發的請求中,默認的值可能會導致鏈接超時或者重傳,因此需要結合高並發請求數來調節此值。


net.ipv4.tcp_max_orphans=262114
#選項用於設定系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤立鏈接將立即被復位並輸出警告信息。這個限制指示為了防止簡單的DOS攻擊,不用過分依靠這個限制甚至認為的減小這個值,更多的情況是增加這個值

  

  

  

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM