首頁 運維 linux運維 如何解決在伺服器維護中處理高並發所導致的一些常見問題

如何解決在伺服器維護中處理高並發所導致的一些常見問題

Jul 24, 2017 am 10:49 AM
導致 並行 伺服器

  這裡還是按照場景來吧,畢竟場景是最能體驗實用性的。首先說下伺服器配置以及環境

  阿里雲ECS雲主機,8G內存,4核的CPU,20M頻寬,20G系統盤+200G數據盤,CentOS6.564位,安裝的一件集成lnmp環境

  場景:微信發紅包

  這個場景是很常見的,一般客戶會在整點的時候進行一次微信公眾號的廣告推送,這兒時候伺服器的並發大概在3000到5000左右。說起來這其實不算高並發,但伺服器還是崩了,大概要等5分鐘才能恢復正常。這有點不應該啊,分析原因。查看CPU的使用率不高,記憶體使用也很正常,在阿里雲控制面板裡面查看網路出口流量滿載,問題大概是清楚了,網路原因導致。

  先查看靜態資源,發現圖片大部分沒有優化,於是脫下來進行無損壓縮,大概省略了1M左右的大小,提交上去後依然崩潰,伺服器頻繁出現502。

  再次檢查頁面的靜態資源css和js,把常用的js庫替換成CDN以減少請求數,提交後依然沒有太多變化,502依舊。

  於是查看nginx連線數,使用指令

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
登入後複製

結果顯示

TIME_WAIT 3828SYN_SENT 1FIN_WAIT1 107FIN_WAIT2 27ESTABLISHED 661SYN_RECV 23CLOSING 15LAST_ACK 284
登入後複製

  乖乖,TIME_WAITE很高,這裡務必說下TIME_WAITE的意思:TIME_WAIT:另一邊已初始化一個釋放。這個是啥意思呢?意思是伺服器已經主動關閉了,在等待客戶端給一個回應,如果客戶端一直沒有回應就會出現等待,這個值就會增加。很顯然,這個時候我們需要減少TIME_WAIT的值。

  這裡只需要修改sysctl.conf的一些參數即可,編輯/etc/sysctl.conf文件,檢查

      是否是這樣的設置,如果找不到對應的,在文件最後加上即可。儲存後執行

/sbin/sysctl -p
登入後複製

配置即可生效。

20分鐘後繼續查看nginx連線數,結果

TIME_WAIT 87SYN_SENT 1FIN_WAIT1 60FIN_WAIT2 19ESTABLISHED 477SYN_RECV 12CLOSING 2LAST_ACK 100
登入後複製

恢復正常,網路頻寬也降下來了。

但好景不長,第二次整點開始搶紅包的時候又出現了502。查看進程發現mysqld的CPU佔用率很高,導致CPU滿載,伺服器崩潰。修改mysql配置文件,調整max_connection為30000。其他相關參數進行了調整優化,情況有所緩解,但是短短幾分鐘之內CPU又滿載了。

詭異!於是查看mysql中的進程,發現頻繁的sql查詢,而查詢的幾個表資料量均在10萬左右,判斷是因為沒有設定索引導致。諮詢後端開發,果然只設定了主鍵。立刻修改,提交上去五分鐘後CPU降下來,穩定在10%左右,也沒有出現過502了。

以上是如何解決在伺服器維護中處理高並發所導致的一些常見問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java函數的並發和多執行緒如何提高效能? Java函數的並發和多執行緒如何提高效能? Apr 26, 2024 pm 04:15 PM

Java函數的並發和多執行緒如何提高效能?

如何在伺服器上安裝 PHP FFmpeg 擴充功能? 如何在伺服器上安裝 PHP FFmpeg 擴充功能? Mar 28, 2024 pm 02:39 PM

如何在伺服器上安裝 PHP FFmpeg 擴充功能?

並發和協程在Golang API設計中的應用 並發和協程在Golang API設計中的應用 May 07, 2024 pm 06:51 PM

並發和協程在Golang API設計中的應用

搭載 AMD EPYC 霄龍 4004 系列處理器,華碩推出多款伺服器與工作站產品 搭載 AMD EPYC 霄龍 4004 系列處理器,華碩推出多款伺服器與工作站產品 Jul 23, 2024 pm 09:34 PM

搭載 AMD EPYC 霄龍 4004 系列處理器,華碩推出多款伺服器與工作站產品

Go 並發函數的單元測試指南 Go 並發函數的單元測試指南 May 03, 2024 am 10:54 AM

Go 並發函數的單元測試指南

解決 PHP 多執行緒函數中的並發問題 解決 PHP 多執行緒函數中的並發問題 May 01, 2024 pm 09:45 PM

解決 PHP 多執行緒函數中的並發問題

Java 函數庫中都有哪些常用並發工具? Java 函數庫中都有哪些常用並發工具? Apr 30, 2024 pm 01:39 PM

Java 函數庫中都有哪些常用並發工具?

Java資料庫連線如何處理事務和並發? Java資料庫連線如何處理事務和並發? Apr 16, 2024 am 11:42 AM

Java資料庫連線如何處理事務和並發?

See all articles