日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何面对你—LNMP高并发时502

發(fā)布時(shí)間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何面对你—LNMP高并发时502 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題:最近的搶購有點(diǎn)火,到點(diǎn)搶購的時(shí)候網(wǎng)站就會(huì)出現(xiàn)502錯(cuò)誤 頂不住消費(fèi)者的壓力。

傷。。。。。

之前php-fpm配置:

單個(gè)php-fpm實(shí)例,使用socket方式,內(nèi)存8G 靜態(tài)方式,啟動(dòng)php-fpm進(jìn)程數(shù)300,具體參數(shù)如下

1234567891011listen?=?/tmp/php-cgi.sock#listen?=?127.0.0.1:9000listen.backlog?=?2048listen.allowed_clients?=?127.0.0.1pm?=?staticpm.max_children?=?300pm.start_servers?=?50pm.min_spare_servers?=?30pm.max_spare_servers?=?250request_terminate_timeout?=?0request_slowlog_timeout?=?2

由于架構(gòu),代碼等原因,單臺(tái)幾百并發(fā)就出現(xiàn)502錯(cuò)誤。

初步解決:各種相關(guān)優(yōu)化,

增大pm.max_children為400

nginx和fpm 添加了 listen.backlog = 2048

最大打開文件句柄數(shù) 65535

/etc/sysctl.conf 都進(jìn)行了微調(diào),高并發(fā)時(shí)nginx發(fā)起的連接數(shù),遠(yuǎn)遠(yuǎn)超過了php-fpm所能處理的數(shù)目,導(dǎo)致端口(或socket)頻繁被鎖,造成堵塞。依然出現(xiàn)502錯(cuò)誤?

終極解決方法:

啟用兩個(gè)php-fpm實(shí)例,把php-fpm分為兩部分,每部分各聽一個(gè)端口或socket,這樣就減少了lock,依然保持400個(gè)php-fpm進(jìn)程,每個(gè)實(shí)例啟用200個(gè),采用nginx的upstream負(fù)載均衡,輪詢每個(gè)socket來處理請(qǐng)求。

具體操作:

123456789101112131415161718192021222324252627cp?php-fpm.conf?php-fpm2.confvi?php-fpm2.conf?做相應(yīng)的修改[global]pid?=?/usr/local/php/var/run/php-fpm2.piderror_log?=?/usr/local/php/var/log/php-fpm2.loglog_level?=?notice[www]listen?=?/tmp/php-cgi2.sock#listen?=?127.0.0.1:9000listen.backlog?=?2048listen.allowed_clients?=?127.0.0.1pm?=?staticpm.max_children?=?200pm.start_servers?=?50pm.min_spare_servers?=?30pm.max_spare_servers?=?250request_terminate_timeout?=?0request_slowlog_timeout?=?2slowlog?=?var/log/slow.logcp?/etc/init.d/php-fpm?/etc/init.d/php-fpm2??vi??/etc/init.d/php-fpm2?修改prefix=/usr/local/phpexec_prefix=${prefix}php_fpm_BIN=${exec_prefix}/sbin/php-fpmphp_fpm_CONF=${prefix}/etc/php-fpm2.confphp_fpm_PID=${prefix}/var/run/php-fpm2.pid

啟動(dòng)php-fpm2即可


配置nginx

編輯nginx.conf 主配置文件,如果后端采用虛擬主機(jī),跟我一樣,

添加

upstream backend{

? ? ? ? ? ? ? server unix:/tmp/php-cgi.sock;

? ? ? ? ? ? ? server unix:/tmp/php-cgi2.sock;

? ? ? ? ? ? ? ? }


vi vhost/test.conf

修改此處 fastcgi_pass ?backend; 調(diào)用fastcgi是,使用負(fù)載均衡的方式。

location ~ [^/]\.php(/|$)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try_files $uri =404;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fastcgi_pass ?backend;

? ? ? ? ? ? ? ? ? ? ? ? # ? ? ? fastcgi_pass ?127.0.0.1:9000;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fastcgi_index index.php;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? include fastcgi.conf;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# include pathinfo.conf;

? ? ? ? ? ? ? ? ? ? ? ? }

重啟nginx。

等待驗(yàn)證吧,502錯(cuò)誤會(huì)大大地減少,網(wǎng)站搶購甚歡,消費(fèi)者甚歡。

總結(jié):

高并發(fā)時(shí)使用tcp端口的方式比socket方式相對(duì)穩(wěn)定一點(diǎn),但是使用端口的方式,處理的效率確實(shí)比socket效率低了那么一點(diǎn)。LNMP環(huán)境下,在面對(duì)高并發(fā)時(shí),除了一個(gè)合理的架構(gòu),與合理的調(diào)優(yōu)之外,開發(fā)者的代碼邏輯與高效的代碼也是影響高并發(fā)的一個(gè)重要因素。一個(gè)請(qǐng)求調(diào)用多少次php-fpm,每個(gè)php-fpm處理多少時(shí)間,都是開發(fā)者需要考慮的點(diǎn)。


本文出自 “章小魚兒_linux” 博客,請(qǐng)務(wù)必保留此出處http://zhangxylinux.blog.51cto.com/5041623/1563427


轉(zhuǎn)載于:https://blog.51cto.com/ss991/1564629

總結(jié)

以上是生活随笔為你收集整理的如何面对你—LNMP高并发时502的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。