哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

3天內不再提示

聊聊在高并發(fā)場景下如何優(yōu)化服務器的性能?

OSC開源社區(qū) ? 來源:冰河技術 ? 2023-03-13 10:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫在前面

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

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

操作系統(tǒng)

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

CentOSLinuxrelease8.0.1905(Core)

對于高并發(fā)的場景,我們主要還是優(yōu)化操作系統(tǒng)的網(wǎng)絡性能,而操作系統(tǒng)中,有很多關于網(wǎng)絡協(xié)議的參數(shù),我們對于服務器網(wǎng)絡性能的優(yōu)化,主要是對這些系統(tǒng)參數(shù)進行調優(yōu),以達到提升我們應用訪問性能的目的。

系統(tǒng)參數(shù)

在CentOS 操作系統(tǒng)中,我們可以通過如下命令來查看所有的系統(tǒng)參數(shù)。

/sbin/sysctl-a

部分輸出結果如下所示。

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

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

/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類型就是我們要關注的與網(wǎng)絡相關的操作系統(tǒng)參數(shù)。我們可以獲取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操作系統(tǒng)中,這些與網(wǎng)絡相關的參數(shù)都可以在/etc/sysctl.conf 文件里修改,如果/etc/sysctl.conf 文件中不存在這些參數(shù),我們可以自行在/etc/sysctl.conf 文件中添加這些參數(shù)。

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

優(yōu)化套接字緩沖區(qū)

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

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

/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關鍵字的分別為:總內存、接收緩沖區(qū)內存、發(fā)送緩沖區(qū)內存。

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

如何優(yōu)化頻繁收發(fā)大文件

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

這里,我們可以修改的系統(tǒng)參數(shù)如下所示。

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

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

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

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

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

經(jīng)過上面的分析后,我們最終得出的系統(tǒng)調優(yōu)參數(shù)如下所示。

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

優(yōu)化TCP連接

對計算機網(wǎng)絡有一定了解的小伙伴都知道,TCP的連接需要經(jīng)過“三次握手”和“四次揮手”的,還要經(jīng)過慢啟動、滑動窗口、粘包算法等支持可靠性傳輸?shù)囊幌盗屑夹g支持。雖然,這些能夠保證TCP協(xié)議的可靠性,但有時這會影響我們程序的性能。

那么,在高并發(fā)場景下,我們該如何優(yōu)化TCP連接呢?

(1)關閉粘包算法

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

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

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

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

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)避免重復發(fā)送數(shù)據(jù)包

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

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

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

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

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







審核編輯:劉清

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

    關注

    37

    文章

    7437

    瀏覽量

    129621
  • Linux系統(tǒng)

    關注

    4

    文章

    616

    瀏覽量

    30150
  • CentOS
    +關注

    關注

    0

    文章

    85

    瀏覽量

    14836
  • TCP通信
    +關注

    關注

    0

    文章

    146

    瀏覽量

    4884

原文標題:高并發(fā)場景下如何優(yōu)化服務器的性能?

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Nginx性能優(yōu)化應該先改哪些參數(shù)

    Nginx 是高性能 HTTP 服務器和反向代理服務器,默認配置適合低流量場景。當 QPS(每秒請求數(shù))達到數(shù)千甚至數(shù)萬時,默認配置會成為性能
    的頭像 發(fā)表于 04-21 11:40 ?157次閱讀

    帶寬服務器大規(guī)模數(shù)據(jù)傳輸中的優(yōu)勢解析

    影響系統(tǒng)性能的重要因素。 如果服務器帶寬不足,就容易出現(xiàn)下載速度慢、視頻加載卡頓、數(shù)據(jù)同步延遲等問題。因此,很多企業(yè)開始部署帶寬服務器來滿足大規(guī)模數(shù)據(jù)傳輸需求。本文將詳細分析
    的頭像 發(fā)表于 03-11 09:14 ?432次閱讀

    Go 語言并發(fā)服務設計與性能調優(yōu)實戰(zhàn):從萬級到百萬級并發(fā)的演進之路

    10W+ 連接 性能滿意度 開發(fā)者滿意度 89% 微服務采用率 云原生項目中占比 67% 本文將從 并發(fā)模型 、 性能優(yōu)化 、 資源管理
    發(fā)表于 02-18 19:19

    電感服務器電源電路的核心應用:穩(wěn)定、高效、抗干擾的關鍵支撐

    “通直流、阻交流” 的特性,服務器電源的多個關鍵模塊中發(fā)揮不可替代的作用,尤其貼片電感因小型化、集成度優(yōu)勢,成為服務器電源的主流選擇。 一、
    發(fā)表于 01-24 11:10

    結合AI算法的邊緣計算服務器,城市管理場景有什么作用?

    桿塔安家落戶,日夜守護城市平安和高效運轉。以國內資深安防硬件廠家廣東天波的AI邊緣計算服務器為例,可以適配云天勵飛的AI算法,城市管理場景中發(fā)揮大作用:1、井蓋異常:邊緣計算服務器
    的頭像 發(fā)表于 10-17 15:31 ?550次閱讀
    結合AI算法的邊緣計算<b class='flag-5'>服務器</b>,<b class='flag-5'>在</b>城市管理<b class='flag-5'>場景</b>有什么作用?

    輕量云服務器和云服務器區(qū)別:2025年終極選擇指南

    資源、穩(wěn)定計算性能及完整管理權限,支持垂直與水平擴展,適合企業(yè)級應用和并發(fā)場景。選擇取決于業(yè)務需求:輕量服務器適用于成本敏感型
    的頭像 發(fā)表于 09-01 13:58 ?1568次閱讀
    輕量云<b class='flag-5'>服務器</b>和云<b class='flag-5'>服務器</b>區(qū)別:2025年終極選擇指南

    華納云:海外服務器負載均衡與可用架構設計

    現(xiàn)代互聯(lián)網(wǎng)應用中,海外服務器承擔著跨境業(yè)務、并發(fā)請求和實時數(shù)據(jù)傳輸?shù)年P鍵角色。單臺服務器難以支撐大量
    的頭像 發(fā)表于 08-28 18:32 ?794次閱讀

    多核服務器的CPU親和性配置與負載均衡優(yōu)化

    某大廠的資深架構師小王最近遇到了一個頭疼的問題:新采購的雙路AMD EPYC 7763(128核心)服務器,并發(fā)場景
    的頭像 發(fā)表于 08-27 14:45 ?1032次閱讀

    Nginx并發(fā)優(yōu)化方案

    作為一名在生產環(huán)境中摸爬滾打多年的運維工程師,我見過太多因為Nginx配置不當導致的性能瓶頸。今天分享一套完整的Nginx并發(fā)優(yōu)化方案,幫助你的系統(tǒng)從10萬QPS突破到百萬級別。
    的頭像 發(fā)表于 08-13 15:51 ?1219次閱讀

    服務器哪里好

    在當今數(shù)字化環(huán)境中,DDoS攻擊已成為企業(yè)網(wǎng)站癱瘓、數(shù)據(jù)泄露的首要威脅。服務器憑借T級流量清洗能力、智能攻擊識別系統(tǒng)和冗余網(wǎng)絡架構,成為眾多企業(yè)的“數(shù)字防彈衣”。服務器不僅過濾
    的頭像 發(fā)表于 06-10 10:32 ?1167次閱讀

    通SoC陣列服務器

    通SoC陣列服務器是基于通系統(tǒng)級芯片(SoC)構建的高密度計算解決方案,核心特點為低功耗、算力集成與模塊化設計,主要應用于邊緣計算和云服務
    的頭像 發(fā)表于 06-03 07:37 ?1423次閱讀

    HarmonyOS5云服務技術分享--ArkTS開發(fā)Node環(huán)境

    能力,尤其適合需要快速響應、彈性擴容的場景。通過ArkTS API 9+,你可以輕松實現(xiàn): ??事件驅動??:比如用戶登錄、數(shù)據(jù)更新時自動觸發(fā)邏輯。 ??零運維??:無需管理服務器,專注業(yè)務代碼
    發(fā)表于 05-22 17:21

    雙路服務器和單路服務器區(qū)別有多大?用實際應用場景對比一文講透

    性能、價格、擴展性三個關鍵點,帶大家系統(tǒng)地聊一聊雙路服務器和單路服務器的區(qū)別,并結合真實使用場景,幫你看清到底哪種服務器更適合你的業(yè)務。
    的頭像 發(fā)表于 05-22 15:53 ?2884次閱讀
    雙路<b class='flag-5'>服務器</b>和單路<b class='flag-5'>服務器</b>區(qū)別有多大?用實際應用<b class='flag-5'>場景</b>對比一文講透

    服務器哪家好?RAKsmart服務器全方位解析

    普通服務器缺乏專業(yè)防護能力,而服務器憑借帶寬儲備、智能流量清洗機制和實時監(jiān)控系統(tǒng),能有效抵御攻擊,保障業(yè)務連續(xù)性。不過,市場上高防服務器
    的頭像 發(fā)表于 05-12 09:28 ?2043次閱讀
    肇东市| 保亭| 荆州市| 全州县| 华容县| 株洲县| 丹江口市| 定南县| 繁昌县| 清河县| 威宁| 措勤县| 泰安市| 金坛市| 裕民县| 华容县| 营口市| 大荔县| 遂溪县| 迁西县| 玉林市| 深州市| 宁明县| 无极县| 邓州市| 班玛县| 永定县| 子长县| 鄂托克前旗| 海阳市| 工布江达县| 胶州市| 阿瓦提县| 苍山县| 兴文县| 鄂伦春自治旗| 绥德县| 辽宁省| 洛阳市| 屏山县| 城固县|