国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux丟包問題排查思路

這篇具有很好參考價值的文章主要介紹了Linux丟包問題排查思路。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Linux丟包問題排查思路

判斷問題與網(wǎng)絡(luò)丟包有關(guān)

通過抓tcpdump,通過wireshark提示查看數(shù)據(jù)包狀態(tài)。比如客戶端重傳多次失敗,服務(wù)端提示丟包等錯誤,均是可能由于丟包導(dǎo)致的異常。

linux網(wǎng)絡(luò)丟包排查,linux,服務(wù)器,網(wǎng)絡(luò)

丟包可能存在的位置

網(wǎng)絡(luò)丟包在交互過程中的每一個環(huán)節(jié)都有可能出現(xiàn)。主要環(huán)節(jié)如下:

  • 兩端服務(wù)器:主要表現(xiàn)在網(wǎng)卡異常、服務(wù)器資源限制(負(fù)載,TCP連接數(shù)等)、軟件異常、服務(wù)器配置等導(dǎo)致的丟包
  • 網(wǎng)絡(luò)鏈路(包括鏈路層、網(wǎng)絡(luò)層、傳輸層):主要是TCP/UDP傳輸過程中出現(xiàn)異常導(dǎo)致,比如:arp表溢出、路由過濾、防火墻攔截、tcp分片重組超時重組異常失敗、MTU丟包、限速限流、帶寬占滿等導(dǎo)致的丟包。
  • 應(yīng)用層:主要表現(xiàn)在應(yīng)用在處理socket連接時的異常。

丟包原因分析

網(wǎng)絡(luò)鏈路丟包

網(wǎng)絡(luò)鏈路的丟包主要通過網(wǎng)絡(luò)鏈路的監(jiān)控、以及客戶端抓包數(shù)據(jù)完整、但服務(wù)端收包內(nèi)容有截取等判斷,需要考慮鏈路中的防火墻等安全設(shè)備的影響,首先排除掉安全設(shè)備的原因。

我們在實(shí)際生產(chǎn)中有遇到過nginx響應(yīng)請求返回400/499,經(jīng)分析,存在WAF過濾報文中部分信息、大包未分片導(dǎo)致超過MTU限值的情況。

應(yīng)用層丟包

應(yīng)用層丟包主要出現(xiàn)在應(yīng)用使用線程池化的模式處理請求連接池,當(dāng)池化不合理導(dǎo)致池滿未釋放,無法建立新連接時容易出現(xiàn)。

服務(wù)器上的丟包情況

接下來著重討論應(yīng)該如何在服務(wù)器上排查丟包情況。

請求在服務(wù)器內(nèi)部的流程

linux網(wǎng)絡(luò)丟包排查,linux,服務(wù)器,網(wǎng)絡(luò)

  • 首先網(wǎng)絡(luò)報文通過物理網(wǎng)線發(fā)送到網(wǎng)卡

  • 網(wǎng)絡(luò)驅(qū)動程序會把網(wǎng)絡(luò)中的報文讀出來放到 ring buffer 中,這個過程使用 DMA(Direct Memory Access),不需要 CPU 參與

  • 內(nèi)核從 ring buffer 中讀取報文進(jìn)行處理,執(zhí)行 IP 和 TCP/UDP 層的邏輯,最后把報文放到應(yīng)用程序的 socket buffer 中

  • 應(yīng)用程序從 socket buffer 中讀取報文進(jìn)行處理

通過如上圖,可看出,在每一個環(huán)節(jié)都有存在丟包的可能性。接下來逐一分析。

網(wǎng)卡、網(wǎng)卡驅(qū)動丟包

首先可通過命令查看,是否網(wǎng)卡有丟包。

# ifconfig
#RX(receive 接收報文):packets 正確的數(shù)據(jù)包數(shù), bytes 數(shù)據(jù)量字節(jié),errors 產(chǎn)生錯誤的數(shù)據(jù)包數(shù),dropped 丟棄的數(shù)據(jù)包數(shù), overruns 速度過快丟失的數(shù)據(jù)包數(shù),frame 發(fā)生frame錯誤而丟失的數(shù)據(jù)包數(shù)。
#TX(transmit 發(fā)送報文):packets, bytes ,errors,dropped,overruns 與接收一致。carrier 發(fā)生carrier錯誤而丟失的數(shù)據(jù)包數(shù)。collisions 沖突信息包的數(shù)目。
[root@gavin ~] ifconfig ens33
ens33: flags=4163<UP ,BROADCAST,RUNNING,IULTICAST> mtu _1500
       inet 192.168.76.3 netmask 255.255.255.0 broadcast 192.168.76.255
       inet6 fe80::3dc2:5ebd:8970:475a prefixlen 64scopeid 0x20<link>
       ether 00:0c:29:d0:ef:9e txqueuelen 1000 (Ethernet)
       RX packets 3001 bytes 3447676(3.2 MiB)
       Rx errors 0 dropped 0 overruns 0 frame 0
       TX packets 949 bytes 62837(61.3 KiB)
       TX errors dropped 0 overruns 0 carrier 0 collisions 0 

#netstat
#netstat -i 打印網(wǎng)卡信息
#Iface:網(wǎng)卡名
#MTU:最大傳輸單元
#RX-OK:接收時,正確的數(shù)據(jù)包數(shù)
#RX-ERR:接收時,產(chǎn)生錯誤的數(shù)據(jù)包數(shù)
#RX-DRP:接收時,丟棄的數(shù)據(jù)包數(shù)
#RX-OVR:接收時,由于過速而丟失的數(shù)據(jù)包數(shù)
#TX-OK:發(fā)送時,正確的數(shù)據(jù)包數(shù)
#TX-ERR:發(fā)送時,產(chǎn)生錯誤的數(shù)據(jù)包數(shù)
#TX-DRP:發(fā)送時,丟棄的數(shù)據(jù)包數(shù)
#TX-OVR:發(fā)送時,由于過速而丟失的數(shù)據(jù)包數(shù)
[root@gavin ~]# netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33            1500    14586      0      0 0          7943      0      0      0 BMRU
ens37            1500      400      0      0 0            64      0      0      0 BMRU
lo              65536       50      0      0 0            50      0      0      0 LRU
privbr0          1500      399      0      0 0            64      0      0      0 BMRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU

#netstat -s 統(tǒng)計個協(xié)議信息

[root@gavin ~]# netstat -s
Ip:
    Forwarding: 1
    16333 total packets received
    15 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    15955 incoming packets delivered
    9039 requests sent out
    139 dropped because of missing route
Icmp:
    2 ICMP messages received
    0 input ICMP message failed
    ICMP input histogram:
        destination unreachable: 2
    2 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 2
IcmpMsg:
        InType3: 2
        OutType3: 2
Tcp:
    46 active connection openings    
    2 passive connection openings
    28 failed connection attempts
    3 connection resets received
    3 connections established
    15484 segments received
    8871 segments sent out
    0 segments retransmitted
    0 bad segments received
    30 resets sent
Udp:
    251 packets received
    2 packets to unknown port received
    0 packet receive errors
    194 packets sent
    0 receive buffer errors
    0 send buffer errors
    IgnoredMulti: 250
UdpLite:
TcpExt:
    8 TCP sockets finished time wait in fast timer
    17 delayed acks sent
    Quick ack mode was activated 2 times
    15228 packet headers predicted
    24 acknowledgments not containing data payload received
    58 predicted acknowledgments
    2 connections reset due to early user close
    IPReversePathFilter: 304
    TCPRcvCoalesce: 36
    TCPAutoCorking: 4
    TCPOrigDataSent: 89
    TCPDelivered: 105
IpExt:
    InMcastPkts: 141
    OutMcastPkts: 81
    InBcastPkts: 250
    InOctets: 17680346
    OutOctets: 385931
    InMcastOctets: 13407
    OutMcastOctets: 9914
    InBcastOctets: 72750
    InNoECTPkts: 18122
MPTcpExt:

#ethtool
# 有錯誤說明有丟包
[root@gavin ~]# ethtool -S ens33 | grep rx_ | grep errors
     rx_errors: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     rx_missed_errors: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     rx_csum_offload_errors: 0


buffer滿導(dǎo)致的丟包

主要是ring buffer 和socket buffer滿導(dǎo)致的丟包

ring buffer:環(huán)形緩沖器,在通信程序中,經(jīng)常使用環(huán)形緩沖器作為數(shù)據(jù)結(jié)構(gòu)來存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形緩沖區(qū)是一個先進(jìn)先出的循環(huán)緩沖區(qū),可以向通信程序提供對緩沖區(qū)的互斥訪問。

socket buffer:套接字緩存,Linux網(wǎng)絡(luò)核心數(shù)據(jù)結(jié)構(gòu)。它代表一個要發(fā)送或處理的報文,并貫穿于整個協(xié)議棧。

#查看是否因ring buffer 滿導(dǎo)致的丟包
#ethtool 或 /proc/net/dev 
[root@gavin ~]# ethtool -S ens33|grep rx_fifo
[root@gavin ~]# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:   46780     774    0    0    0     0          0         0    46780     774    0    0    0     0       0          0
 ens33: 18909713   22098    0    0    0     0          0         0   697617    9849    0    0    0     0       0          0
 ens37: 1125961    3788    0    3    0     0          0         0     8591      68    0    0    0     0       0          0
privbr0: 1069444    3768    0    0    0     0          0       635     8363      68    0    0    0     0       0          0
virbr0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
virbr0-nic:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

#查看ring buffer 設(shè)置
[root@gavin ~]# ethtool -g ens33
Ring parameters for ens33:
Pre-set maximums:
RX:		4096
RX Mini:	n/a
RX Jumbo:	n/a
TX:		4096
Current hardware settings:
RX:		256
RX Mini:	n/a
RX Jumbo:	n/a
TX:		256

#修改大小
ethtool -G ens33  rx 4096 tx 4096

# socket buffer 丟包一般由于系統(tǒng)高負(fù)載,導(dǎo)致 socket buffer占滿丟包
#可通過命令判斷
[root@gavin ~]# netstat -s | grep "buffer errors"
    0 receive buffer errors
    0 send buffer errors
#socket buffer 調(diào)整需要通過修改內(nèi)核參數(shù)的方式
net.ipv4.tcp_wmem
net.ipv4.tcp_rmem
net.ipv4.tcp_mem
net.core.rmem_default
net.core.rmem_max
net.core.wmem_max

服務(wù)器TCP連接、連接數(shù)限制等導(dǎo)致建連失敗丟包

此情況一般是查看TCP連接數(shù)和狀態(tài),確認(rèn)服務(wù)器最大文件打開數(shù),tcp 線程數(shù)限制等。

#統(tǒng)計TCP各連接狀態(tài)的數(shù)量
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

#修改limit 限制、最大文件打開數(shù),最大進(jìn)程數(shù)、最大連接數(shù),針對用戶。非針對系統(tǒng)服務(wù)的資源
 /etc/security/limits.conf
 # - core - limits the core file size (KB)    限制內(nèi)核文件的大小。
# - data - max data size (KB)    最大數(shù)據(jù)大小
# - fsize - maximum filesize (KB)    最大文件大小
# - memlock - max locked-in-memory address space (KB)    最大鎖定內(nèi)存地址空間
# - nofile - max number of open file descriptors 最大打開的文件數(shù)(以文件描敘符,file descripter計數(shù)) 
# - rss - max resident set size (KB) 最大持久設(shè)置大小
# - stack - max stack size (KB) 最大棧大小
# - cpu - max CPU time (MIN)    最多CPU占用時間,單位為MIN分鐘
# - nproc - max number of processes 進(jìn)程的最大數(shù)目
# - as - address space limit (KB) 地址空間限制 
# - maxlogins - max number of logins for this user    此用戶允許登錄的最大數(shù)目
# - maxsyslogins - max number of logins on the system    系統(tǒng)最大同時在線用戶數(shù)
# - priority - the priority to run user process with    運(yùn)行用戶進(jìn)程的優(yōu)先級
# - locks - max number of file locks the user can hold    用戶可以持有的文件鎖的最大數(shù)量
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19] max nice優(yōu)先級允許提升到值

 
 #設(shè)置內(nèi)核最大的文件句柄數(shù)
/proc/sys/fs/file-max  

#設(shè)置進(jìn)程最大的文件句柄數(shù),不能超過1
/proc/sys/fs/nr_open  
時間戳和TCP連接復(fù)用配置導(dǎo)致的連接丟包

主要是 tcp_tw_recycle,tcp_timestamps造成的影響。

  • net.ipv4.tcp_tw_recycle:用于快速回收處于TIME_WAIT 狀態(tài)的socket 連接;(通常在開啟net.ipv4.tcp_timestamps 時有效,1代表開啟,0代表關(guān)閉)

  • net.ipv4.tcp_timestamps:啟用時間戳,默認(rèn)缺省值為1,開啟;該值必須為單調(diào)遞增,否則接受到的包可能會被丟掉。

TCP協(xié)議中有一種機(jī)制,緩存了每個主機(jī)(即ip)過來的連接最新的timestamp值。這個緩存的值可以用于PAWS(Protect Against Wrapped Sequence numbers,是一個簡單的防止重復(fù)報文的機(jī)制)中,來丟棄當(dāng)前連接中可能的舊的重復(fù)報文。在tcp_tw_recycle/tcp_timestamps都開啟的條件下,60s內(nèi)同一源ip主機(jī)的tcp 鏈接請求中的timestamp必須是遞增的。

這兩個值開啟與否需要根據(jù)實(shí)際情況進(jìn)行判斷,我們在生產(chǎn)中曾經(jīng)遇到過未開啟而導(dǎo)致三次握手中最后一次握手丟包的情況,也存在開啟后,導(dǎo)致第一次握手無應(yīng)答的情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-610726.html

到了這里,關(guān)于Linux丟包問題排查思路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深入分析 Linux 網(wǎng)絡(luò)丟包問題

    深入分析 Linux 網(wǎng)絡(luò)丟包問題

    熱門IT課程【視頻教程】-華為/思科/紅帽/oracle https://xmws-it.blog.csdn.net/article/details/134398330 所謂丟包,是指在網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)過程中,由于種種原因,數(shù)據(jù)包還沒傳輸?shù)綉?yīng)用程序中,就被丟棄了。這些被丟棄包的數(shù)量,除以總的傳輸包數(shù),也就是我們常說的丟包率。丟包率是網(wǎng)

    2024年01月23日
    瀏覽(20)
  • (六)關(guān)于Linux中服務(wù)器磁盤爆滿問題的幾個解決思路

    (六)關(guān)于Linux中服務(wù)器磁盤爆滿問題的幾個解決思路

    在監(jiān)控服務(wù)器性能的時候,發(fā)現(xiàn)服務(wù)器的磁盤占用很大,幾乎快要爆滿,具體的表現(xiàn)可能如下: 1、應(yīng)用服務(wù)訪問卡頓甚至失?。?2、數(shù)據(jù)庫訪問失??; 3、文件上傳失敗 等等 通過命令 df -h 查看磁盤占用情況,發(fā)現(xiàn)如下: 這里的占用是清除過的,所以并不算特別高。 這種現(xiàn)

    2024年02月04日
    瀏覽(25)
  • linux主機(jī)宕機(jī)排查問題方法
1 排查思路

    linux主機(jī)宕機(jī)排查問題方法 1 排查思路

    1.1 查看宕機(jī)的時間記錄和歷史登陸還有重啟時間 1)查看歷史重啟 2)查看歷史異常登錄用戶 1.2?首先查看系統(tǒng)日志 linux下的/var/log/下的log日志,包括message,內(nèi)核報錯日志demsg等等,sa記錄,是記錄cpu,內(nèi)存等運(yùn)行的性能文件,記錄著運(yùn)行時的cpu的運(yùn)行狀態(tài)等。 1)利用sa文件

    2024年02月16日
    瀏覽(22)
  • 【Linux技術(shù)專題】「夯實(shí)基本功系列」帶你一同學(xué)習(xí)和實(shí)踐操作Linux服務(wù)器必學(xué)的Shell指令(排查問題指令 - 上)

    【Linux技術(shù)專題】「夯實(shí)基本功系列」帶你一同學(xué)習(xí)和實(shí)踐操作Linux服務(wù)器必學(xué)的Shell指令(排查問題指令 - 上)

    在線上排查問題時,查詢?nèi)罩尽⒉榭聪到y(tǒng)配置和分析操作系統(tǒng)信息是至關(guān)重要的。這些操作可以幫助我們深入了解軟件和服務(wù)的兼容性,并解決潛在的問題。在本次學(xué)習(xí)中,我們將介紹并深入學(xué)習(xí)一些我在處理類似問題時常用的指令。通過掌握這些指令,你將能夠更加高效地

    2024年01月16日
    瀏覽(42)
  • Linux服務(wù)器配置SSH免密碼登錄后,登錄仍提示輸入密碼(一次真實(shí)的問題排查解決記錄)

    Linux服務(wù)器配置SSH免密碼登錄后,登錄仍提示輸入密碼(一次真實(shí)的問題排查解決記錄)

    我們知道兩臺Linux服務(wù)器機(jī)器之間如果使用ssh命令登錄或scp/rsync命令傳輸文件每一次都需要輸入用戶名相對應(yīng)的密碼,如果要免密碼,則需要對兩臺Linux服務(wù)器機(jī)器之間進(jìn)行SSH互信。 雖然這是廢話,也希望大家了解一下。 SSH(Secure Shell)是一種安全的傳輸協(xié)議,它可以讓Lin

    2024年02月09日
    瀏覽(28)
  • Linux系統(tǒng)中負(fù)載高問題排查思路與解決方法

    Load 是對計算機(jī)干活多少的度量,Load Average 是一段時間(1分鐘、5分鐘、15分鐘)內(nèi)平均Load。 一、Load分析: 情況1:CPU高、Load高 通過top命令查找占用CPU最高的進(jìn)程PID; 通過top -Hp PID查找占用CPU最高的線程TID; 對于java程序,使用jstack打印線程堆棧信息(可聯(lián)系業(yè)務(wù)進(jìn)行排查定

    2024年02月16日
    瀏覽(14)
  • Linux系統(tǒng)CPU占用率較高問題排查思路

    Linux系統(tǒng)CPU占用率較高問題排查思路

    作為工程師,在日常工作中我們會遇到 Linux服務(wù)器上出現(xiàn)CPU負(fù)載達(dá)到100%居高不下的情況,如果CPU 持續(xù)跑高,則會影響業(yè)務(wù)系統(tǒng)的正常運(yùn)行,帶來企業(yè)損失。 對于CPU過載問題通常使用以下兩種方式即可快速定位: 方法一 第一步:使用 top命令,然后按shift+p按照CPU排序 找到占

    2024年02月07日
    瀏覽(19)
  • 【博客573】linux內(nèi)核層丟包排查方法匯總

    命令1: ifconfig xxx 解析: RX errors: 表示總的收包的錯誤數(shù)量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗(yàn)錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。 RX dropped: 表示數(shù)據(jù)包已經(jīng)進(jìn)入了 Ring Buffer,但是由于內(nèi)存不夠等系統(tǒng)原因,導(dǎo)致在拷貝到內(nèi)存的過程中被丟

    2024年02月16日
    瀏覽(18)
  • Linux開機(jī)rc.local不自啟動執(zhí)行腳本問題的排查思路及問題解決

    Linux開機(jī)rc.local不自啟動執(zhí)行腳本問題的排查思路及問題解決

    問題 Linux系統(tǒng)中,在rc.local里面配置的啟動命令等不能能夠在開機(jī)的時候進(jìn)行自啟動 問題解決 解決問題排查中最大的麻煩,需要進(jìn)行reboot重啟 查看rc-local的運(yùn)行狀態(tài) systemctl status rc-local 如果是loaded或者是faild類似,說明啟動確實(shí)出現(xiàn)了問題 首先查看檢查是否還有rc.local的軟連

    2024年02月16日
    瀏覽(21)
  • 一文解決ethtool 原理介紹和解決網(wǎng)卡丟包排查思路

    一文解決ethtool 原理介紹和解決網(wǎng)卡丟包排查思路

    之前記錄過處理因?yàn)?LVS 網(wǎng)卡流量負(fù)載過高導(dǎo)致軟中斷發(fā)生丟包的問題, RPS 和 RFS 網(wǎng)卡多隊(duì)列性能調(diào)優(yōu)實(shí)踐 [1],對一般人來說壓力不大的情況下其實(shí)碰見的概率并不高。這次想分享的話題是比較常見服務(wù)器網(wǎng)卡丟包現(xiàn)象排查思路,如果你是想了解點(diǎn)對點(diǎn)的丟包解決思路涉及面

    2023年04月18日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包