乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      性能評估之 network IO

       louy2 2019-02-12
      一、網(wǎng)絡(luò)性能指標
      1、speed: 延時 lantency
      ping的時間/2 就是一個網(wǎng)絡(luò)延時
      2、bandwidth 帶寬


      二、網(wǎng)絡(luò)運行狀況
      1、網(wǎng)卡運行情況
      (1)ifconfig ethx

      RX errors: 表示總的收包的錯誤數(shù)量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。 
      RX dropped: 表示數(shù)據(jù)包已經(jīng)進入了 Ring Buffer,但是由于內(nèi)存不夠等系統(tǒng)原因,導(dǎo)致在拷貝到內(nèi)存的過程中被丟棄。 
      RX overruns: 表示了 fifo 的 overruns,這是由于 Ring Buffer(aka Driver Queue) 傳輸?shù)?IO 大于 kernel 能夠處理的 IO 導(dǎo)致的,而 Ring Buffer 則是指在發(fā)起 IRQ 請求之前的那塊 buffer。很明顯,overruns 的增大意味著數(shù)據(jù)包沒到 Ring Buffer 就被網(wǎng)卡物理層給丟棄了,而 CPU 無法即使的處理中斷是造成 Ring Buffer 滿的原因之一,上面那臺有問題的機器就是因為 interruprs 分布的不均勻(都壓在 core0),沒有做 affinity 而造成的丟包。 
      RX frame: 表示 misaligned 的 frames。

      TX 表示發(fā)送,其參數(shù)與RX類似;

      (2)ethtool 可以查看網(wǎng)卡隊列長度等信息
      ethtool -g eth1


      2、系統(tǒng)情況
      (1)cat /proc/net/snmp | grep Udp 查看udp或者tcp鏈接情況



      (2)netstat -su/st


      方法(1)(2)得到的兩個結(jié)果接近;

      (3)socket隊列長度,cat /proc/sys/net/core/rmem_default (wmem_default是寫隊列長度)

      3、進程情況
      (1)netstat -au | grep 端口號,查看Recv-Q 和 Send-Q的大小,如果長期不為0,則說明該進程接收已經(jīng)處理不過來了或者該進程發(fā)送包過多;


      三、丟包常見原因(以下為轉(zhuǎn)載自http://blog.csdn.net/turkeyzhou/article/details/7526081)

      1)        linux內(nèi)核socket緩沖區(qū)設(shè)的太小
          通過 cat /proc/sys/net/core/rmem_default 和cat /proc/sys/net/core/rmem_max可以查看socket緩沖區(qū)的缺省值和最大值。rmem_default和rmem_max設(shè)置為多大合適呢?如果服務(wù)器的性能壓力不大,對處理時延也沒有很嚴格的要求,設(shè)置為1M左右即可。如果服務(wù)器的性能壓力較大,或者對處理時延有很嚴格的要求,則必須謹慎設(shè)置rmem_default 和rmem_max,如果設(shè)得過小,會導(dǎo)致丟包,如果設(shè)得過大,會出現(xiàn)滾雪球。

       

      2)        服務(wù)器負載過高,占用了大量cpu資源,無法及時處理linux內(nèi)核socket緩沖區(qū)中的udp數(shù)據(jù)包,導(dǎo)致丟包

      一般來說,服務(wù)器負載過高有兩個原因:收到的udp包過多;服務(wù)器進程存在性能瓶頸。如果收到的udp包過多,就要考慮擴容了,從日常運營的經(jīng)驗來看,公司現(xiàn)有的B5機器,在業(yè)務(wù)邏輯不復(fù)雜(簡單的打包解包和內(nèi)存hash等操作)、不超過網(wǎng)卡流量限制的情況下,每秒可以處理25萬個udp包。至于如何提高服務(wù)器的性能,屬于高性能服務(wù)器的設(shè)計和實現(xiàn)范疇,功力有限,不敢在這里班門弄斧,自己平時使用最多也就是三板斧:top+strace+ltrace,先使用top查看cpu內(nèi)核態(tài)時間和用戶態(tài)時間的比例,如果內(nèi)核態(tài)時間占大頭,就用strace查看主要的系統(tǒng)調(diào)用有哪些;如果如果用戶態(tài)時間占大頭,就用ltrace查看主要的庫函數(shù)調(diào)用有哪些。找到性能瓶頸后,想辦法優(yōu)化系統(tǒng)架構(gòu)和業(yè)務(wù)邏輯,減少不必要的系統(tǒng)調(diào)用和庫函數(shù)調(diào)用。從以往的經(jīng)驗來看,很容易犯的一個錯誤是調(diào)用不必要的memset或memcpy操作一大片內(nèi)存,當請求量小的時候,發(fā)現(xiàn)不了問題,一旦突發(fā)的請求過來,觸發(fā)大量的memset或memcpy操作,占用了cpu資源,導(dǎo)致丟包和滾雪球,讓人措手不及,所以系統(tǒng)上線前,一定要做好壓力測試,通過壓力測試找出性能瓶頸,將危險消滅在萌芽狀態(tài)。

       

      3)        磁盤IO忙

          服務(wù)器有大量IO操作,會導(dǎo)致進程阻塞,cpu都在等待磁盤IO,不能及時處理內(nèi)核socket緩沖區(qū)中的udp數(shù)據(jù)包。如果業(yè)務(wù)本身就是IO密集型的,要考慮在架構(gòu)上進行優(yōu)化,合理使用緩存降低磁盤IO。這里有一個容易忽視的問題:很多服務(wù)器都有在本地磁盤記錄日志的功能,由于運維誤操作導(dǎo)致日志記錄的級別過高,或者某些錯誤突然大量出現(xiàn),使得往磁盤寫日志的IO請求量很大,磁盤IO忙,導(dǎo)致udp丟包。對于運維誤操作,可以加強運營環(huán)境的管理,防止出錯。如果業(yè)務(wù)確實需要記錄大量的日志,可以使用內(nèi)存log或者遠程log。

         

      4)        物理內(nèi)存不夠用,出現(xiàn)swap交換

      swap交換本質(zhì)上也是一種磁盤IO忙,因為比較特殊,容易被忽視,所以單列出來。

          只要規(guī)劃好物理內(nèi)存的使用,并且合理設(shè)置系統(tǒng)參數(shù),可以避免這個問題。

       

      5)        磁盤滿導(dǎo)致無法IO

          沒有規(guī)劃好磁盤的使用,監(jiān)控不到位,導(dǎo)致磁盤被寫滿后服務(wù)器進程無法IO,處于阻塞狀態(tài)。公司的監(jiān)控中心對機器的磁盤使用率有監(jiān)控,使用率超過95%會通知機器負責人處理。但是如果機器負責人錯過了告警,或者沒有及時處理告警,仍然會導(dǎo)致磁盤被寫滿。最根本的辦法是規(guī)劃好磁盤的使用,防止業(yè)務(wù)數(shù)據(jù)或日志文件把磁盤塞滿,同時加強監(jiān)控,例如開發(fā)一個通用的工具,當磁盤使用率達到80%時就持續(xù)告警,留出充足的反應(yīng)時間。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多