nginx比apache處理靜態文件速度快,但是nginx處理大量併發的php請求時,容易出現502錯誤,頻率大概是多少

来源:https://www.cnblogs.com/zmdComeOn/archive/2018/09/19/9673417.html
-Advertisement-
Play Games

首先要明確一點的是502是怎麼出現的,為什麼會出現502呢?一般而言,出現502的錯誤是因為php-cgi連接數不夠導致的。舉個例子:php-cgi開10個進程,前端發20個請求,每個請求的腳本都sleep100s,那麼必然有至多10個請求會出現502錯誤。因此,出現502是因為php進程不夠用了, ...


首先要明確一點的是502是怎麼出現的,為什麼會出現502呢?

一般而言,出現502的錯誤是因為php-cgi連接數不夠導致的。
舉個例子:
php-cgi開10個進程,前端發20個請求,每個請求的腳本都sleep100s,那麼必然有至多10個請求會出現502錯誤。因此,出現502是因為php進程不夠用了,和nginx沒有多大關係。

如果非要是找出這種502錯誤的比例,需要綜合考慮:
1後端php-cgi的進程數,
2php-cgi對請求的處理時間,
3nginx的併發量,
要解決502也很容易,加大php-cgi的進程數。這裡又三種方式:
1增加nginx的upstream,其中upstream中為php-cgi的地址;
2利用nginx作為反向代理,分支法解決併發量;
3增加php-cgi的進程數,(這裡會受到機器資源的限制,因此,也並不能無限增加)

問:php-cgi怎麼開十個進程?求回答,謝謝啊
  追答:目前而言,php-cgi都是通過php-fpm去管理的。    在php/etc/php-fpm.conf文件中,有設置php進程數目的選項。

   項設置可以參考php-fpm.conf中的說明。每個配置項都有詳細的說明。

追問:開啟apache就會在任務管理器中看到fast-cgi線程了?一個fast-cgi線程是說在同一時刻只能處理一個客戶端的網頁請求嗎?求回答

  追答:是的,一個fast-cgi進程在同一時刻只能響應一個用戶請求。其他的用戶請求都會被放到一個隊列裡面。

 

1、為什麼Nginx的性能要比Apache高得多?

 

1  這得益於Nginx使用了最新的epoll(Linux 2.6內核)和kqueue(freebsd)網路I/O模型,而Apache則使用的是傳統的select模型。目前Linux下能夠承受高併發訪問的Squid、Memcached都採用的是epoll網路I/O模型。
2  處理大量的連接的讀寫,Apache所採用的select網路I/O模型非常低效。下麵用一個比喻來解析Apache採用的select模型和Nginx採用的epoll模型進行之間的區別:
3  假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。select版宿管大媽就會帶著你的朋友挨個房間去找,直到找到你為止。而epoll版宿管大媽會先記下每位同學的房間號,你的朋友來時,只需告訴你的朋友你住在哪個房間即可,不用親自帶著你的朋友滿大樓找人。如果來了10000個人,都要找自己住這棟樓的同學時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高併發伺服器中,輪詢I/O是最耗時間的操作之一,select和epoll的性能誰的性能更高,同樣十分明瞭。

 

2、為什麼會出現502錯誤呢?

nginx出現502有很多原因,但大部分原因可以歸結為資源數量不夠用,也就是說後端php-fpm處理有問題,nginx將正確的客戶端請求發給了後端的php-fpm進程,但是因為php-fpm進程的問題導致不能正確解析php代碼,最終返回給了客戶端502錯誤。優化php-fpm,優化代碼,加大記憶體才是解決502的根源。

3、10000併發的話,nginx的表現怎麼樣?

2009年9月3日下午2:30,金山游戲《劍俠情緣網路版叄》臨時維護1小時,大量玩家上官網,論壇、評論、客服等動態應用Nginx伺服器集群,每台伺服器的Nginx活動連接數達到2.8萬。

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  •     在awk中常用的內置函數大概分為:數值函數、字元函數、時間函數、二進位操作函數、數組函數、自定義函數等。 數值函數   常用的數值函數主要有int、rand、srand、sqrt等。詳細如下所示: | 函數 | 說明 | | | | | int(expr) | ...
  • 最近由於在學習STM32看到別人用寄存器編程式控制制跑馬燈,於是自己也想試一試。可是試了好久終究弄不出來。回頭看了下庫函數的調用關係才搞明白。首先通過查看GPIOA的設置函數發現設置如下: 改機構體根據結構體成員函數的大小自己形成了針對首地址的偏移量。從而與需要操作的寄存器地址偏移一一對應。通過查看設置 ...
  • 一、什麼是SSH? 簡單說,SSH是一種網路協議,用於電腦之間的加密登錄。 如果一個用戶從本地電腦,使用SSH協議登錄另一臺遠程電腦,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。 最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu ...
  • 一. 概述 linux安全系統的核心是用戶賬戶。 創建用戶時會分配用戶ID(UID)。 UID是唯一的,但在登錄系統時不是用UID,而是用登錄名。在講文件許可權之之前,先瞭解下linux是怎樣處理用戶賬戶的。以及用戶賬戶需要的文件和工具,這樣處理文件許可權問題時,就知道如何使用它們了。 1.1 /etc ...
  • 基於Keepalived+Varnish+Nginx實現的高可用LAMP架構 註意:各節點的時間需要同步(ntpdate ntp1.aliyun.com),關閉firewalld(systemctl stop firewalld.service,systemctl disable firewalld ...
  • 使用parted和resize2fs擴容GPT分區表格式 rootfs ...
  • 在做的項目在nginx下訪問緩衝時間過長,明顯比apache下訪問蠻11倍有餘, 解決辦法: 1增加nginx的upstream,其中upstream中為php-cgi的地址; 2利用nginx作為反向代理,分支法解決併發量; 3增加php-cgi的進程數,(這裡會受到機器資源的限制,因此,也並不能 ...
  • 環境搭建 無人值守搭建 LNMP一鍵安裝包無人值守命令生成器 支持LAMP/LNMP/LNMPA的一鍵搭建,根據自己的需求配置好之後點擊生成就會生成腳本,然後只需簡單的複製粘貼,再去喝杯咖啡回來後即可享受已經生成好的環境。 當然前提是你要把虛擬機的網路配置好吆~一定要能夠和外網連通哦(づ ̄ 3 ̄)づ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...