大數據集群內核參數調優

来源:https://www.cnblogs.com/hdpdriver/p/18405045
-Advertisement-
Play Games

tcp mem 相關 net.ipv4.tcp_rmem = 4096 131072 6291456 讀取緩衝區,單位位元組 net.ipv4.tcp_wmem = 4096 16384 4194304 發送緩衝區,單位位元組 net.ipv4.tcp_mem = 760707 1014278 1521 ...


tcp mem 相關

net.ipv4.tcp_rmem = 4096 131072 6291456 讀取緩衝區,單位位元組
net.ipv4.tcp_wmem = 4096 16384 4194304 發送緩衝區,單位位元組
net.ipv4.tcp_mem = 760707 1014278 1521414 記憶體大小,單位是 linux 記憶體頁的數目 ,占用記憶體大小還得乘以每個頁的大小,一般是 4 kb. 可以在節點上執行命令 getconf PAGESIZE 來獲得. 正在使用的頁數可以直接查看 cat /proc/net/sockstat

vm.min_free_kbytes = 512000 這個參數建議機器記憶體的1% ~ 3%

系統調用相關

零拷貝關閉
mapreduce.shuffle.transferTo.allowed=false
os.cache關閉
mapreduce.shuffle.manage.os.cache=false
關閉tuned
systemctl stop tuned

虛擬記憶體相關

vm.overcommit_memory nn=1 dn=0

0 – Heuristic overcommit handling. 這是預設值,它允許overcommit,但過於明目張膽的overcommit會被拒絕,比如malloc一次性申請的記憶體大小就超過了系統總記憶體。Heuristic的意思是“試探式的”,內核利用某種演算法(對該演算法的詳細解釋請看文末)猜測你的記憶體申請是否合理,它認為不合理就會拒絕overcommit。
1 – Always overcommit. 允許overcommit,對記憶體申請來者不拒。
2 – Don’t overcommit. 禁止overcommit。

vm.min_free_kbytes nn 預設 =90112 dn=1048576 預留給 linux 虛擬記憶體 的最小值, dn 節點同時也是 nm 計算節點,所以預留更多空間給系統調用

vm.swappiness=1 nn 未指定預設=30或60 dn=1 控制物理記憶體和虛擬記憶體交換行為,值越低,記憶體交換髮生就越少.對於 hadoop 生態,不建議使用預設值,因為頻繁的記憶體交換會引起 jvm 長時間 GC 停頓,影響關鍵服務,比如 NN 的穩定性.建議設置成 1

tcp 其他

net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_tw_reuse = 1

tcp_tw_recycle 和 tcp_tw_reuse 都是同樣的作用,用於快速回收處於 time_wait 的 tcp 連接.time_wait狀態是主動發起fin一方纔會轉入的狀態,例如: datanode 主動關閉了 dfs client 的連接.

如果 tcp_timestamps 開啟的話,會緩存每個連接的最新時間戳,對於 time_wait 的埠,如果後續請求時間戳小於緩存的時間戳,即視為無效,相應的包被丟棄。所以如果是在NAT(Network Address Translation)網路下,就可能出現數據包丟棄的現象,會導致大量的TCP連接建立錯誤。

net.ipv4.tcp_tw_reuse要比net.ipv4.tcp_tw_recycle安全,從協議的角度看,復用是安全的。復用條件:

  • net.ipv4.tcp_timestamps選項必須打開(客戶端也必須打開) ;
  • 重用TIME_WAIT的條件是收到最後一個包後超過1秒;

所以不建議使用 tcp_tw_recycle,這個參數在 Linux 4.12 後被廢棄了.建議使用 tcp_tw_reuse ,並且tcp_tw_reuse 要結合 tcp_timestamps 使用

參考連接: Coping with the TCP TIME-WAIT state on busy Linux servers (bernat.ch) :

tcp_max_tw_buckets=18000
設置太小了,會導致節點間不能相互通信. 集群高峰期 tcp 連接數很大,應該設置成一個較大的值. 可以設置成 tcp_max_tw_buckets=18000
參考,Changing tcp_fin_timeout and tcp_max_tw_buckets - Red Hat Customer Portal:

If you set too large value to tcp_max_tw_buckets, the system may become out of port, file-descripter and memory. If you set too small value, the system may not communicate another host.

net.core.somaxconn

對應三次握手結束,還沒有 accept 隊列時的 establish 狀態。accept 隊列較多則說明服務端 accept 效率不高,或短時間內突發了大量新建連接。該值過小會導致伺服器收到 syn 不回包,是由於 somaxconn 表滿而刪除新建的 syn 連接引起。若為高併發業務,則可嘗試增大該值,但有可能增大延遲。

批量腳本

#!/bin/bash
set -e

cp /etc/sysctl.conf /home/hadoop/sysctl.conf.bak
sed -i '/tcp_tw_recycle/d' sysctl.conf
cat <<EOF >> /etc/sysctl.conf

net.ipv4.tcp_mem = 760707 1014278 1521414
net.ipv4.tcp_wmem = 4096  16384   4194304
net.ipv4.tcp_rmem = 4096  131072  6291456
vm.min_free_kbytes = 512000

vm.swappiness=1
net.core.somaxconn=32768
net.ipv4.tcp_max_tw_buckets=18000
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_max_orphans = 16384
EOF
sysctl -p

系統參數配置一般在目錄 /proc/sys 下,例如 /proc/sys/net/ipv4/tcp_mem


雲伺服器 雲伺服器網路訪問丟包-故障處理-文檔中心-騰訊雲 (tencent.com)


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

-Advertisement-
Play Games
更多相關文章
  • rsync 是一個非常流行的命令行工具,用於高效地同步文件和目錄。它廣泛用於 Linux 和 UNIX 系統,但也可以在 Windows 上通過 Cygwin 或 WSL (Windows Subsystem for Linux) 使用。本文將介紹 rsync 的基本概念、特點以及如何使用它來同步文 ...
  • 作為Linux系統運維人員,日常工作中經常需要處理磁碟管理和文件系統調整的任務。這些任務包括但不限於查看磁碟分區、識別掛載點、以及調整文件系統大小等。今天,我們將通過幾個常用的命令——fdisk、lsblk、mount,以及一個需要註意的命令resize2fs——來探討如何在Linux環境下進行這些 ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 http 超文本傳輸​​協議(HTTP)是用於傳輸諸如HTML的超媒體文檔的應用層協議。它被設計用於Web瀏覽器和Web伺服器之間的通信,但它也可以用於其他目的。 HTTP遵循經典的客戶端-服務端模型,客戶端打開一個連接以發出請求,然後等待它收 ...
  • 新建文件夾——用於存放工程及工程管理 新建文件夾用於存放整個工程 打開“stm32-project”文件夾,新建一些文件夾用於工程源代碼的分類 這些文件夾都是自己建的用於不同類型代碼存放,文件夾個數,命名都因人而異。(後續所有文件放在“stm32-project”中也行,不嫌亂的話) Hardwar ...
  • 前言 第二年準備報名智能車了,當然還是創意組別。剛好買了今年新出的電腦光影精靈10,我想著也給它安一個雙系統。但是沒想到,相比於之前那個老電腦,新電腦的新硬體和驅動問題遠比老電腦麻煩的多。 在經歷了一系列踩坑和瘋狂查資料之後,加上重裝系統N次,終於成功下車。遂把過程記錄下來,以備後續不時之需 雙 ...
  • nohup [命令] >/dev/null 2>&1 & 示例: nohup /bin/sh -c 'cd /home/server/dotnet/DotnetDatamining && dotnet DotnetDatamining.dll "--desc=xxx服務 訪問埠號5028"' >/ ...
  • 1.Haproxy與Keepalived VRRP 介紹 軟體:haproxy 主要是做負載均衡的7層,也可以做4層負載均衡 apache也可以做7層負載均衡,但是很麻煩。實際工作中沒有人用。 nginx可以做7層的負載,性能強大,多在實際工作中使用。 負載均衡是通過OSI協議對應的【1】 7層負載 ...
  • Scoop 安裝 環境需求 PowerShell 5 + .NET Framework 4.5 + 安裝 指定安裝位置(配置環境變數) 以管理員身份打開PowerShell $env:SCOOP='D:\Applications\Scoop' [Environment]::SetEnvironmen ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...