Nginx 學習筆記(六)引入執行緒池 效能提公升9倍

2021-09-22 17:07:15 字數 809 閱讀 8446

一、前言

1、nignx版本:1.7.11 以上

2、nginx採用了非同步、事件驅動的方法來處理連線。這種處理方式無需(像使用傳統架構的伺服器一樣)為每個請求建立額外的專用程序或者執行緒,而是在乙個工作程序中處理多個連線和請求。

3、nginx工作在非阻塞的socket模式下,並使用了epoll 和 kqueue這樣有效的方法。

4、nginx可以非常好地處理百萬級規模的併發請求。

5、阻塞操作可以毀掉nginx的效能,我們必須不惜一切代價避免使用阻塞。

6、即使在當前官方的nginx**中,依然無法在全部場景中避免使用阻塞,nginx1.7.11中實現的執行緒池機制解決了這個問題

二、問題

1、通常情況下,nginx是乙個事件處理器,即乙個接收來自核心的所有連線事件的資訊,然後向作業系統發出做什麼指令的控制器。

2、所謂「阻塞操作」是指任何導致事件處理迴圈顯著停止一段時間的操作

3、操作可以由於各種原因成為阻塞操作

三、執行緒池

1、對nginx而言,執行緒池執行的就是配貨服務的功能。它由乙個任務佇列和一組處理這個佇列的執行緒組成。

2、當工作程序需要執行乙個潛在的長操作時,工作程序不再自己執行這個操作,而是將任務放到執行緒池佇列中,任何空閒的執行緒都可以從佇列中獲取並執行這個任務。

3、磁碟的讀取速度不能比磁碟產生資料的速度快。

4、「從磁碟讀取」這個操作通常是阻塞操作最常見的示例,但是實際上,nginx中實現的執行緒池可用於處理任何不適合在主迴圈中執行的任務。

5、執行緒池中執行的兩個基本操作是大多數作業系統中的read()系統呼叫和linux中的sendfile()。

Nginx 學習筆記(六)引入執行緒池 效能提公升9倍

一 前言 1 nignx版本 1.7.11 以上 2 nginx採用了非同步 事件驅動的方法來處理連線。這種處理方式無需 像使用傳統架構的伺服器一樣 為每個請求建立額外的專用程序或者執行緒,而是在乙個工作程序中處理多個連線和請求。3 nginx工作在非阻塞的socket模式下,並使用了epoll 和...

Spring 學習 (一)引入

spring 介紹 spring是什麼?spring是乙個解決了許多在j2ee開發中常見的問題的強大框架。為什麼要用spring?spring能幹嘛?在實際web開發中,首先基於mvc這種設計思想進行開發,其次還要按照其功能將程式分為三種 資料的展示,業務邏輯的處理,資料訪問 個人覺得這樣分主要是為...

Python高階學習筆記 裝飾器(1) 引入

裝飾器基本語法格式 def 裝飾器函式 原函式fn 原函式 被裝飾的目標函式.definner 執行函式之前 fn 執行被裝飾的目標函式 執行函式之後 return inner 裝飾器函式 deff1 pass 靈魂語法 f1 裝飾器函式 f1 等價於 函式上寫 裝飾器函式def 裝飾器函式 原函式...