在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊聊在高并發場景下如何優化服務器的性能?

OSC開源社區 ? 來源:冰河技術 ? 2023-03-13 10:16 ? 次閱讀

寫在前面

最近,有小伙伴在群里提問:Linux系統怎么設置tcp_nodelay參數?也有小伙伴說問我。那今天,我們就來根據這個問題來聊聊在高并發場景下如何優化服務器的性能這個話題

其實,tcp_nodelay參數并不是在操作系統級別進行配置的,而是在TCP套接字上添加tcp_nodelay參數來關閉粘包算法,以便使數據包能夠立即投遞出去。tcp_nodelay參數主要是對TCP套接字來說的,那對于服務器硬件,如果要使其能夠支撐上百萬甚至上千萬的并發,我們該如何對其進行優化呢?

操作系統

這里,我使用的操作系統為CentOS 8,我們可以輸入如下命令來查看操作系統的版本。

CentOSLinuxrelease8.0.1905(Core)

對于高并發的場景,我們主要還是優化操作系統的網絡性能,而操作系統中,有很多關于網絡協議的參數,我們對于服務器網絡性能的優化,主要是對這些系統參數進行調優,以達到提升我們應用訪問性能的目的。

系統參數

在CentOS 操作系統中,我們可以通過如下命令來查看所有的系統參數。

/sbin/sysctl-a

部分輸出結果如下所示。

454f3832-bfb6-11ed-bfe3-dac502259ad0.png

這里的參數太多了,大概有一千多個,在高并發場景下,我們不可能對操作系統的所有參數進行調優。我們更多的是關注與網絡相關的參數。如果想獲得與網絡相關的參數,那么,我們首先需要獲取操作系統參數的類型,如下命令可以獲取操作系統參數的類型。

/sbin/sysctl-a|awk-F"."'{print$1}'|sort-k1|uniq

運行命令輸出的結果信息如下所示。

abi
crypto
debug
dev
fs
kernel
net
sunrpc
user
vm
45643f98-bfb6-11ed-bfe3-dac502259ad0.png

其中的net類型就是我們要關注的與網絡相關的操作系統參數。我們可以獲取net類型下的子類型,如下所示。

/sbin/sysctl-a|grep"^net."|awk-F"[.|]"'{print$2}'|sort-k1|uniq

輸出的結果信息如下所示。

bridge
core
ipv4
ipv6
netfilter
nf_conntrack_max
unix
456bf4e0-bfb6-11ed-bfe3-dac502259ad0.png

在Linux操作系統中,這些與網絡相關的參數都可以在/etc/sysctl.conf 文件里修改,如果/etc/sysctl.conf 文件中不存在這些參數,我們可以自行在/etc/sysctl.conf 文件中添加這些參數。

在net類型的子類型中,我們需要重點關注的子類型有:core和ipv4。

優化套接字緩沖區

如果服務器的網絡套接字緩沖區太小,就會導致應用程序讀寫多次才能將數據處理完,這會大大影響我們程序的性能。如果網絡套接字緩沖區設置的足夠大,從一定程度上能夠提升我們程序的性能。

我們可以在服務器的命令行輸入如下命令,來獲取有關服務器套接字緩沖區的信息。

/sbin/sysctl-a|grep"^net."|grep"[r|w|_]mem[_|]"

輸出的結果信息如下所示。

net.core.rmem_default=212992
net.core.rmem_max=212992
net.core.wmem_default=212992
net.core.wmem_max=212992
net.ipv4.tcp_mem=435455806287090
net.ipv4.tcp_rmem=4096873806291456
net.ipv4.tcp_wmem=4096163844194304
net.ipv4.udp_mem=87093116125174186
net.ipv4.udp_rmem_min=4096
net.ipv4.udp_wmem_min=4096
45770ad8-bfb6-11ed-bfe3-dac502259ad0.png

其中,帶有max、default、min關鍵字的為分別代表:最大值、默認值和最小值;帶有mem、rmem、wmem關鍵字的分別為:總內存、接收緩沖區內存、發送緩沖區內存。

這里需要注意的是:帶有rmem 和 wmem關鍵字的單位都是“字節”,而帶有mem關鍵字的單位是“頁”。“頁”是操作系統管理內存的最小單位,在 Linux 系統里,默認一頁是 4KB 大小。

如何優化頻繁收發大文件

如果在高并發場景下,需要頻繁的收發大文件,我們該如何優化服務器的性能呢?

這里,我們可以修改的系統參數如下所示。

net.core.rmem_default
net.core.rmem_max
net.core.wmem_default
net.core.wmem_max
net.ipv4.tcp_mem
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem

這里,我們做個假設,假設系統最大可以給TCP分配 2GB 內存,最小值為 256MB,壓力值為 1.5GB。按照一頁為 4KB 來計算, tcp_mem 的最小值、壓力值、最大值分別是 65536、393216、524288,單位是“頁” 。

假如平均每個文件數據包為 512KB,每個套接字讀寫緩沖區最小可以各容納 2 個數據包,默認可以各容納 4 個數據包,最大可以各容納 10 個數據包,那我們可以算出 tcp_rmem 和 tcp_wmem 的最小值、默認值、最大值分別是 1048576、2097152、5242880,單位是“字節”。而 rmem_default 和 wmem_default 是 2097152,rmem_max 和 wmem_max 是 5242880。

注:后面詳細介紹這些數值是如何計算的~~

這里,還需要注意的是:緩沖區超過了 65535,還需要將 net.ipv4.tcp_window_scaling 參數設置為 1。

經過上面的分析后,我們最終得出的系統調優參數如下所示。

net.core.rmem_default=2097152
net.core.rmem_max=5242880
net.core.wmem_default=2097152
net.core.wmem_max=5242880
net.ipv4.tcp_mem=65536393216524288
net.ipv4.tcp_rmem=104857620971525242880
net.ipv4.tcp_wmem=104857620971525242880

優化TCP連接

對計算機網絡有一定了解的小伙伴都知道,TCP的連接需要經過“三次握手”和“四次揮手”的,還要經過慢啟動、滑動窗口、粘包算法等支持可靠性傳輸的一系列技術支持。雖然,這些能夠保證TCP協議的可靠性,但有時這會影響我們程序的性能。

那么,在高并發場景下,我們該如何優化TCP連接呢?

(1)關閉粘包算法

如果用戶對于請求的耗時很敏感,我們就需要在TCP套接字上添加tcp_nodelay參數來關閉粘包算法,以便數據包能夠立刻發送出去。此時,我們也可以設置net.ipv4.tcp_syncookies的參數值為1。

(2)避免頻繁的創建和回收連接資源

網絡連接的創建和回收是非常消耗性能的,我們可以通過關閉空閑的連接、重復利用已經分配的連接資源來優化服務器的性能。重復利用已經分配的連接資源大家其實并不陌生,像:線程池、數據庫連接池就是復用了線程和數據庫連接。

我們可以通過如下參數來關閉服務器的空閑連接和復用已分配的連接資源。

net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1800

(3)避免重復發送數據包

TCP支持超時重傳機制。如果發送方將數據包已經發送給接收方,但發送方并未收到反饋,此時,如果達到設置的時間間隔,就會觸發TCP的超時重傳機制。為了避免發送成功的數據包再次發送,我們需要將服務器的net.ipv4.tcp_sack參數設置為1。

(4)增大服務器文件描述符數量

在Linux操作系統中,一個網絡連接也會占用一個文件描述符,連接越多,占用的文件描述符也就越多。如果文件描述符設置的比較小,也會影響我們服務器的性能。此時,我們就需要增大服務器文件描述符的數量。

例如:fs.file-max = 10240000,表示服務器最多可以打開10240000個文件。

好了,本文結合群內讀者的提問進行了一些總結,希望能夠給小伙伴們帶來實質性的幫助。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    6896

    瀏覽量

    123766
  • Linux系統
    +關注

    關注

    4

    文章

    596

    瀏覽量

    27512
  • CentOS
    +關注

    關注

    0

    文章

    79

    瀏覽量

    13822
  • TCP通信
    +關注

    關注

    0

    文章

    146

    瀏覽量

    4292

原文標題:高并發場景下如何優化服務器的性能?

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    站群服務器與VPS的適用場景有什么不同嗎

    站群服務器與VPS虛擬專用服務器適用場景上確實存在顯著的差異。以下是兩者適用場景的具體對比,主機推薦小編為您整理發布群
    的頭像 發表于 02-05 10:08 ?76次閱讀

    Supermicro高性能服務器量產供貨,優化多重工作負載

    Supermicro, Inc.近日宣布其搭載Intel Xeon 6900系列性能核架構處理的高性能服務器已開始量產供貨。 這一系列服務器
    的頭像 發表于 01-21 11:00 ?171次閱讀

    做網站云服務器還是服務器好一些?

    做網站云服務器還是服務器好一些?做網站選擇云服務器通常更好,因為它提供成本效益、可擴展性、可用性和便捷的管理維護,尤其適合中小企業和個人
    的頭像 發表于 01-08 09:56 ?82次閱讀

    新加坡服務器性能測試報告

    新加坡服務器在此次測評中展現了出色的性能和多項顯著的優勢。速度與帶寬方面,測試結果顯示,服務器國內三網(電信、聯通、移動)以及國際鏈路
    的頭像 發表于 12-26 09:46 ?120次閱讀

    NTP服務器性能優化方法

    NTP(Network Time Protocol,網絡時間協議)服務器性能優化對于確保時間同步的準確性和可靠性至關重要。以下是一些NTP服務器
    的頭像 發表于 12-18 15:24 ?473次閱讀

    使用Python構建高效的HTTP代理服務器

    構建一個高效的HTTP代理服務器Python中涉及多個方面,包括性能優化并發處理、協議支持(HTTP/HTTPS)、錯誤處理以及日志記錄
    的頭像 發表于 10-23 07:41 ?228次閱讀

    GPU高性能服務器配置

    GPU高性能服務器作為提升計算速度和效率的關鍵設備,各大應用場景中發揮著越來越重要的作用。在此,petacloud.ai小編為你介紹GPU高性能
    的頭像 發表于 10-21 10:42 ?301次閱讀

    如何優化Linux服務器性能

    優化Linux服務器性能是一個綜合性的任務,涉及硬件、軟件、配置、監控等多個方面。以下是一個詳細的指南,旨在幫助系統管理員和運維人員提升Linux服務器
    的頭像 發表于 09-29 16:50 ?408次閱讀

    Linux服務器性能查看方法

    Linux服務器性能查看是系統管理員和開發人員日常工作中經常需要進行的任務,以確保系統穩定運行并優化資源使用。以下將詳細介紹多種Linux服務器
    的頭像 發表于 09-02 11:15 ?1244次閱讀

    服務器怎么樣

    服務器主要針對DDoS攻擊提供專業的防御服務,其性能和配置都旨在確保業務遭受大規模網絡攻擊時能夠保持正常運行。以下是具體分析,rak部
    的頭像 發表于 08-21 14:41 ?318次閱讀

    韓國服務器性能如何提升

    韓國服務器性能可以通過硬件升級、網絡優化、緩存優化和軟件優化來提升。具體方法如下,rak小編為您整理發布韓國
    的頭像 發表于 08-15 11:33 ?300次閱讀

    如何評估美國洛杉磯服務器性能

    評估美國洛杉磯服務器性能對于確保網站或應用程序的穩定性和安全性至關重要。服務器通常被用來抵御分布式拒絕
    的頭像 發表于 07-31 09:52 ?326次閱讀

    美國站群vps云服務器的應用場景和使用方法

    美國站群VPS云服務器多站點托管、SEO優化可用性與穩定性、成本效益、安全性以及特定行業應用等方面具有廣泛的應用場景。美國站群VPS云
    的頭像 發表于 07-26 15:56 ?501次閱讀

    洛杉磯云服務器適合哪些應用場景?

     洛杉磯云服務器怎么樣 ?適合哪些應用場景,RAKsmart小編為您整理發布洛杉磯云服務器適合哪些應用場景
    的頭像 發表于 03-08 09:51 ?344次閱讀

    linux服務器和windows服務器

    ,這在滿足個性化需求和增強服務器安全 性上具有優勢。 Linux服務器還具有出色的性能和穩定性。相比之下,Windows服務器
    發表于 02-22 15:46
    主站蜘蛛池模板: 午夜资源 | 色吧综合| 午夜在线观看免费高清在线播放 | 久久伦子沙发 | 久久sese| 国产精品理论片在线观看 | 激情六月天 | 孩交精品xxxx视频视频 | 午夜 福利 视频 | 性生大片免费观看无遮挡 | 国产婷婷色一区二区三区深爱网 | 国产第一页在线观看 | 欧美婷婷综合 | 男女网站在线观看 | 国产亚洲视频在线播放大全 | 91精品欧美激情在线播放 | 男女一进一出无遮挡黄 | 求网址你懂的手机在线观看网站 | 欧美成人性色xxxxx视频大 | 亚洲另类激情综合偷自拍 | 5566成人免费视频观看 | 成人在色线视频在线观看免费大全 | 加勒比色综合 | 免费观看午夜在线欧差毛片 | 日本欧美强乱视频在线 | 日本免费观看完整视频 | 手机看片精品国产福利盒子 | 亚洲色图偷窥自拍 | 中文字幕不卡免费高清视频 | 国产精品黄网站免费观看 | 在线观看免费高清 | 天天噜天天射 | 天天骑天天射 | 久久99精品久久久久久久不卡 | 国产五月| 5g国产精品影院天天5g天天爽 | 亚洲成在线观看 | 亚洲黄色激情网 | 亚洲二区视频 | 国产成人a一区二区 | 免费看日本黄色片 |