主頁 >  其他 > 關于linux系統調優這一篇文章就夠了

關于linux系統調優這一篇文章就夠了

2021-06-13 09:03:32 其他

文章目錄

  • Linux 系統調性能調優詳解
    • 1.影響服務器性能因素
    • 2.系統性能評估標準
    • 3.系統性能分析工具
    • 4.linux 性能評估與優化
      • 4.1 系統整體性能評估
      • 4.2 CPU性能評估
      • 4.3 記憶體性能評估
      • 4.4 磁盤I/O性能評估
      • 4.5 網路性能評估
    • 5.系統優化實戰
      • 5.1找出系統中使用CPU最多的行程
      • 5.2 找出系統中使用記憶體最多的行程
      • 5.3 找出系統中對磁盤讀寫最多的行程
      • 5.4 找出系統中使用網路最多的行程
      • 5.5 優化linux檔案打開最大數
    • 6.內核引數優化
  • 總結

Linux 系統調性能調優詳解

在這里插入圖片描述

作為運維工程師來講,最主要的作業保障:企業門戶網站、業務系統、應用程式、軟體高效穩定的運行,密切關注業務系統、作業系統性能,對業務系統、作業系統實施性能優化,使其發揮最大的性能;

影響Linux服務器、業務網站等性能因素有哪些層面呢?下面我們就一起看看如何調優吧

1.影響服務器性能因素

  • 1.作業系統方面

    1.記憶體
    2.CPU
    3.磁盤I/O
    4.網路I/O帶寬
    
  • 2.程式應用方面

    1.Nginx
    2.Mysql
    3.Tomcat
    4.PHP
    5.應用程式代碼
    

在這里插入圖片描述

2.系統性能評估標準

  • %user:表示CPU處在用戶模式下的時間百分比,
  • %sys:表示CPU處在系統模式下的時間百分比,
  • %iowait:表示CPU等待輸入輸出完成時間的百分比,
  • swap in:即si,表示虛擬記憶體的頁匯入,即從SWAP DISK交換到RAM
  • swap out:即so,表示虛擬記憶體的頁匯出,即從RAM交換到SWAP DISK,
  • 如圖:
    在這里插入圖片描述

在這里插入圖片描述

3.系統性能分析工具

  • 3.1常用命令

    vmstat、sar、iostat、netstat、free、ps、top、iftop
    
  • 3.2常用系統性能組合分析命令

    top、uptime                      檢查系統整體的負載、承受能力;
    vmstat、sar、iostat	、top		檢測是否是CPU瓶頸;
    free、vmstat					    檢測是否是記憶體瓶頸;
    iostat、iotop						檢測是否是磁盤I/O瓶頸;
    netstat、iftop					    檢測是否是網路帶寬瓶頸,
    

    在這里插入圖片描述

4.linux 性能評估與優化

4.1 系統整體性能評估

  • uptime 命令(查看系統負載)

    [root@localhost ~]# uptime
     04:15:24 up 2 days, 13:05,  1 user,  load average: 0.01, 0.02, 0.05
    [root@localhost ~]# 
    現在時間、系統已經運行了多長時間、目前有多少登錄用戶、load average:系統在過去的1分鐘、5分鐘和15分鐘內的平均負載,
    load average:這三個值的大小一般不能大于系統CPU的個數,例如,本輸出中系統有8個CPU,如果load average的三個值長期大于8時,說明CPU很繁忙,負載很高,可能會影響系統性能,但是偶爾大于8時,倒不用擔心,一般不會影響系統性能,
    
    [root@localhost ~]# uptime -p   #以漂亮的格式顯示機器正常運行的時間          
    up 2 days, 13 hours, 9 minutes          
    [root@localhost ~]# uptime -s   #系統自開始運行時間 年-月-日 小時-分鐘-秒
    2021-06-08 15:09:34
    [root@localhost ~]# uptime -h   #顯示幫助資訊
    
    
    服務器1: load average: 0.15, 0.08, 0.01 1核
    服務器2: load average: 4**.15,** 6**.08,** 6**.01** 1核
    服務器3: load average: 10**.15,** 10**.08,** 10**.01** 4核
    答案:服務器2
    如果服務器的CPU為1核心,則load average中的數字 >=3 負載過高,如果服務器的CPU為4核心,則load
    average中的數字 >=12 負載過高,
    經驗:單核心,1分鐘的系統平均負載不要超過3,就可以,這是個經驗值
    

4.2 CPU性能評估

  • 1.vmstat 命令(監控系統CPU)

    [root@localhost ~]# vmstat 
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0      0 3059368   2104 230268    0    0     0     0   28   26  0  0 100  0  0
    r串列示運行和等待cpu時間片的行程數,這個值如果長期大于系統CPU的個數,說明CPU不足,需要增加CPU,
    
    b串列示在等待資源的行程數,比如正在等待I/O、或者記憶體交換等,
    
    us列顯示了用戶行程消耗的CPU 時間百分比,us的值比較高時,說明用戶行程消耗的cpu時間多,但是如果長期大于50%,就需要考慮優化程式或演算法,
    
    sy列顯示了內核行程消耗的CPU時間百分比,Sy的值較高時,說明內核消耗的CPU資源很多,
    根據經驗,us+sy的參考值為80%,如果us+sy大于 80%說明可能存在CPU資源不足,
    
    
    
    
  • 2.top命令(實時監控系統CPU)

    [root@localhost ~]# top
    top - 04:50:43 up 2 days, 13:41,  1 user,  load average: 0.10, 0.06, 0.06
    Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  3865308 total,  2912528 free,   573852 used,   378928 buff/cache
    KiB Swap:   524284 total,   524284 free,        0 used.  3028580 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND            
     38151 root      20   0       0      0      0 S   0.3  0.0   0:01.93 kworker/0:0        
         1 root      20   0  125332   3828   2496 S   0.0  0.1   0:04.48 systemd            
         2 root      20   0       0      0      0 S   0.0  0.0   0:00.33 kthreadd
         
         
     top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個行程的資源占用狀況,常用于服務端性能分析,
    
    第一行資料相當于uptime命令輸出,11:00:54是當前時間,up 54 days,23:55 是系統已經運行的時間,6 users表示當前有6個用戶在登錄,load average:16.32,18.75,21.04分別表示系統一分鐘平均負載,5分鐘平均負載,15分鐘平均負載,
    
    平均負載
    平均負載表示的平均活躍行程數,包括正在running的行程數,準備running(就緒態)的行程數,和處于不可中斷睡眠狀態的行程數,如果平均負載數剛好等于CPU核數,那證明每個核都能得到很好的利用,如果平均負載數大于核數證明系統處于過載的狀態,通常認為是超過核數的70%認為是嚴重過載,需要關注,還需結合1分鐘平均負載,5分鐘平均負載,15分鐘平均負載看負載的趨勢,如果1分鐘負載比較高,5分鐘和15分鐘的平均負載都比較低,則說明是瞬間升高,需要觀察,如果三個值都很高則需要關注下是否某個行程在瘋狂消耗CPU或者有頻繁的IO操作,也有可能是系統運行的行程太多,頻繁的行程切換導致,比如說上面的演示環境是一臺8核的centos機器,證明系統是長期處于過載狀態在運行,
    
    第二行的Tasks資訊展示的系統運行的整體行程數量和狀態資訊,102 total 表示系統現在一共有102個用戶行程,1 running 1個行程正在處于running狀態,101 sleeping 表示101 個行程正處于sleeping狀態,0 stopped 表示 0 個行程正處于stopped狀態,0 zombie表示 有0個僵尸行程,
    
    第3行的%Cpu(s)表示的是總體CPU使用情況,
    us user 表示用戶態的CPU時間比例
    sy system 表示內核態的CPU時間比例
    ni nice 表示運行低優先級行程的CPU時間比例
    id idle 表示空閑CPU時間比例
    wa iowait 表示處于IO等待的CPU時間比例
    hi hard interrupt 表示處理硬中斷的CPU時間比例
    si soft interrupt 表示處理軟中斷的CPU時間比例
    st steal 表示當前系統運行在虛擬機中的時候,被其他虛擬機占用的CPU時間比例,
    
    第4,5行顯示的是系統記憶體使用情況,單位是KiB,totol 表示總記憶體,free 表示沒使用過的內容,used是已經使用的記憶體,buff表示用于讀寫磁盤快取的記憶體,cache表示用于讀寫檔案快取的記憶體,avail表示可用的應用記憶體,
    
    第6行開始往后表示的是具體的每個行程狀態:
    
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
    PID 行程ID
    USER 行程所有者的用戶名,例如root
    PR 行程調度優先級
    NI 行程nice值(優先級),越小的值代表越高的優先級
    VIRT 行程使用的虛擬記憶體
    RES 行程使用的物理記憶體(不包括共享記憶體)
    SHR 行程使用的共享記憶體
    CPU 行程使用的CPU占比
    MEM 行程使用的記憶體占比
    TIME 行程啟動后到現在所用的全部CPU時間
    COMMAND 行程的啟動命令(默認只顯示二進制,top -c能夠顯示命令列和啟動引數)
    

4.3 記憶體性能評估

  • free指令監控記憶體

    [root@localhost ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3774         560        2844           8         370        2957
    Swap:           511           0         511
    [root@localhost ~]# 
    一般有這樣一個經驗公式:應用程式可用記憶體/系統物理記憶體>70%時,表示系統記憶體資源非常充足,不影響系統性能,應用程式可用記憶體/系統物理記憶體<20%時,表示系統記憶體資源緊缺,需要增加系統記憶體
    20%<應用程式可用記憶體/系統物理記憶體<70%時,表示系統記憶體資源基本能滿足應用需求,暫時不影響系統性能,
    
    

4.4 磁盤I/O性能評估

  • iostat命令

    iostat被用于監視系統輸入輸出設備和CPU的使用情況,它的特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況,
    [root@localhost ~]# iostat
    -bash: iostat: command not found
    [root@localhost ~]# yum -y install sysstat
    [root@localhost ~]# iostat -d 1 10              #沒隔1秒,持續10次
    Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     06/11/2021      _x86_64_        (2 CPU)
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.08         1.36         0.66     304530     146757
    scd0              0.00         0.00         0.00       1028          0
    dm-0              0.00         0.01         0.00       2228          0
    
    對上面每項的輸出解釋如下:
    kB_read/s表示每秒讀取的資料塊數,
    kB_wrtn/s表示每秒寫入的資料塊數,
    kB_read表示讀取的所有塊數,
    kB_wrtn表示寫入的所有塊數,
    可以通過kB_read/s和kB_wrtn/s的值對磁盤的讀寫性能有一個基本的了解,如果kB_wrtn/s值很大,表示磁盤的寫操作很頻繁,可以考慮優化磁盤或者優化程式,如果kB_read/s值很大,表示磁盤直接讀取操作很多,可以將讀取的資料放入記憶體中進行操作,
    
    
  • sar 命令系統運行狀態統計

    通過sar -d組合,可以對系統的磁盤IO做一個基本的統計,請看下面的一個輸出
    
    [root@localhost ~]# sar -d 2 6
    Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     06/11/2021      _x86_64_        (2 CPU)
    
    05:46:58 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    05:47:00 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    05:47:00 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    05:47:00 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    
    需要關注的幾個引數含義:
    await表示平均每次設備I/O操作的等待時間(以毫秒為單位),
    svctm表示平均每次設備I/O操作的服務時間(以毫秒為單位),
    %util表示一秒中有百分之幾的時間用于I/O操作,
    對以磁盤IO性能,一般有如下評判標準:
    正常情況下svctm應該是小于await值的,而svctm的大小和磁盤性能有關,CPU、記憶體的負荷也會對svctm值造成影響,過多的請求也會間接的導致svctm值的增加,
    await值的大小一般取決與svctm的值和I/O佇列長度以及I/O請求模式,如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高于svctm的值,則表示I/O佇列等待太長,系統上運行的應用程式將變慢,此時可以通過更換更快的硬碟來解決問題,
    %util項的值也是衡量磁盤I/O的一個重要指標,如果%util接近100%,表示磁盤產生的I/O請求太多,I/O系統已經滿負荷的在作業,該磁盤可能存在瓶頸,長期下去,勢必影響系統的性能,可以通過優化程式或者通過更換更高、更快的磁盤來解決此問題,
    
    

4.5 網路性能評估

  • 常用命令

    通過ping命令 檢測網路的連通性;
    通過netstat –i 組合檢測網路介面狀況;
    通過netstat –r組合 檢測系統的路由表資訊;
    通過sar -n組合 顯示系統的網路運行狀態;
    通過iftop -i eth0 查看網卡流量;

    fping 檢測主機是否存在

  • iftop 命令

    iftop是一款實時流量監控工具,監控TCP/IP連接等,缺點就是無報表功能,必須以root身份才能運行
    [root@localhost ~]# yum -y install iftop
    
    [root@localhost ~]# iftop           #默認監控第一塊網卡的流量
    [root@localhost ~]# iftop -i ens33  #指定監控ens33網卡流量
    [root@localhost ~]# iftop -n        #直接顯示IP, 不進行DNS反決議
    
  • fping 命令

    檢測192.168.1.1到192.168.1.10之間的主機是否存在:
    
    [root@localhost ~]# fping -a -g 192.168.1.1 192.168.1.10
    檢測192.168.1.1/24的主機是否存在:
    
    [root@localhost ~]# fping -a -g 192.168.1.1/24  
    將IP串列放在一個檔案里面,通過讀取檔案來檢測串列里的主機是否存在:
    
    [root@localhost ~]# fping -a -f ip.txt 
    檢測www.baidu.com是否存在:
    
    [root@localhost ~]#  fping www.baidu.com
    

在這里插入圖片描述

5.系統優化實戰

5.1找出系統中使用CPU最多的行程

  • 方法1

    運行top , 找出使用CPU最多的行程 ,按大寫的P,可以按CPU使用率來排序顯示
    
  • 方法2

    按照實際使用CPU,從大到小排序顯示所有行程串列
    [root@localhost ~]# ps -aux --sort -pcpu | more
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root        647  0.1  0.1 305032  6196 ?        Ssl  Jun08   4:11 /usr/bin/vmtoolsd
    root          1  0.0  0.0 125332  3844 ?        Ss   Jun08   0:04 /usr/lib/systemd/system
    d --switched-root --system --deserialize 21
    root          2  0.0  0.0      0     0 ?        S    Jun08   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    Jun08   0:00 [ksoftirqd/0]
    root          5  0.0  0.0      0     0 ?        S<   Jun08   0:00 [kworker/0:0H]
    root          6  0.0  0.0      0     0 ?        S    Jun08   0:02 [kworker/u256:0]
    root          7  0.0  0.0      0     0 ?        S    Jun08   0:01 [migration/0]
    root          8  0.0  0.0      0     0 ?        S    Jun08   0:00 [rcu_bh]
    root          9  0.0  0.0      0     0 ?        S    Jun08   0:20 [rcu_sched]
    root         10  0.0  0.0      0     0 ?        S    Jun08   0:02 [watchdog/0]
    root         11  0.0  0.0      0     0 ?        S    Jun08   0:02 [watchdog/1]
    root         12  0.0  0.0      0     0 ?        S    Jun08   0:01 [migration/1]
    root         13  0.0  0.0      0     0 ?        S    Jun08   0:00 [ksoftirqd/1]
    root         15  0.0  0.0      0     0 ?        S<   Jun08   0:00 [kworker/1:0H]
    
    注: -pcpu 可以顯示出行程絕對路徑,方便找出木馬程式運行的路徑
    

在這里插入圖片描述

5.2 找出系統中使用記憶體最多的行程

  • 方法1

    使用top命令
    運行top , 然后按下大寫的M 可以按記憶體使用率來排序顯示
    
  • 方法2

    按照實際使用記憶體,從大到小排序顯示所有行程串列
    [root@localhost ~]# ps -aux --sort -rss | more  降序
    [root@localhost ~]# ps -aux --sort rss | more   升序
    
    [root@localhost ~]# ps -aux --sort -rss | more
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    mysql     31977  0.0 11.8 1183068 456476 ?      Sl   Jun10   0:16 /usr/local/mysql55/bin/
    mysqld --basedir=/usr/local/mysql55 --datadir=/data/mysql --plugin-dir=/usr/local/mysql55
    /lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/da
    ta/mysql/localhost.localdomain.pid
    root        901  0.0  0.4 562428 16576 ?        Ssl  Jun08   0:32 /usr/bin/python -Es /us
    r/sbin/tuned -l -P
    root        911  0.0  0.3 610356 13988 ?        Ssl  Jun08   0:00 /usr/sbin/libvirtd
    polkitd     661  0.0  0.2 534264 10184 ?        Ssl  Jun08   0:00 /usr/lib/polkit-1/polki
    td --no-debug
    root        663  0.0  0.2 695264  9332 ?        Ssl  Jun08   0:21 /usr/sbin/NetworkManage
    r --no-daemon
    root        645  0.0  0.2 212120  8588 ?        Ssl  Jun08   0:17 /usr/sbin/rsyslogd -n
    root        464  0.0  0.1  36828  6548 ?        Ss   Jun08   0:09 /usr/lib/systemd/system
    d-journald
    

    在這里插入圖片描述

5.3 找出系統中對磁盤讀寫最多的行程

  • 查看系統中哪個磁盤或磁區最繁忙?

    對于這個服務器,8塊磁盤中,哪個硬碟最繁忙?哪個磁區最繁忙?
    
    通過iostat命令查看IO是否存在瓶頸
    [root@localhost ~]# iostat -d -k -p /dev/sda
    Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     06/11/2021      _x86_64_        (2 CPU)
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.08         1.35         0.67     305166     151035
    sda1              0.02         0.13         0.01      29849       2088
    sda2              0.00         0.01         0.00       2500          0
    sda3              0.06         1.20         0.66     270744     148946
    
    測驗: 給磁盤寫入一些內容, 寫入時盡可能不讀磁盤
    讀入的資料用/dev/zero ,/dev/zero不會讀磁盤的,
    sync #把記憶體中的資料快速寫到磁盤上,
    只做dd不執行sync,不容易看不出寫入效果
    
    [root@localhost ~]# dd if=/dev/zero of=h.txt bs=10M count=1000;sync
    ^C79+0 records in
    79+0 records out
    828375040 bytes (828 MB) copied, 32.059 s, 25.8 MB/s
    
    再次查看
    [root@localhost ~]#  iostat -p sda -dk
    Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     06/11/2021      _x86_64_        (2 CPU)
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.09         1.35         2.87     305242     650691
    sda1              0.02         0.13         0.01      29849       2088
    sda2              0.00         0.01         0.00       2500          0
    sda3              0.07         1.20         2.86     270820     648602
    
    [root@localhost ~]# 
    
    
  • iotop命令,查看哪個行程使用磁盤讀寫最多

    [root@localhost ~]# yum -y install iotop
    [root@localhost ~]# iotop -o -d 1
    
    o	只顯示有io操作的行程
    -b	批量顯示,無互動,主要用作記錄到檔案
    -n NUM	顯示NUM次,主要用于非互動式模式
    -d SEC	間隔SEC秒顯示一次
    -p PID	監控的行程pid
    -u USER	監控的行程用戶
    

在這里插入圖片描述

5.4 找出系統中使用網路最多的行程

  • nload 監控總體帶寬使用情況

    [root@localhost ~]# yum install nload -y     #安裝nload工具
    
    [root@localhost ~]# nload                    #開啟監控
    
    另外重新打開一個終端,然后產生一些測驗資料
    [root@localhost ~]# ab -n 1000 -c 2 http://www.baidu.com/index.html 
    
    
    測驗結果
    [root@localhost ~]# nload
    Device ens33 [192.168.10.10] (1/2):
    =========================================================================================
    Incoming:
                                                              #
                                                              #
                                                              #
                                                              #  Curr: 28.07 MBit/s
                                                              #  Avg: 28.07 MBit/s
                                                              #  Min: 28.07 MBit/s
                                                              #  Max: 28.07 MBit/s
                                                              #  Ttl: 145.24 MByte
    Outgoing:
    
    
    
    
                                                                 Curr: 350.62 kBit/s
                                                                 Avg: 350.62 kBit/s
                                                                 Min: 350.62 kBit/s
                                                                 Max: 350.62 kBit/s
                                                              .  Ttl: 4.76 MByte
    Device ens33 [192.168.10.10] (1/2):
    =========================================================================================
    Incoming:
                                                             ##
                                                             ##
                                                             ##
                                                             ##  Curr: 28.48 MBit/s
                                                             ##  Avg: 28.48 MBit/s
                                                             ##  Min: 28.07 MBit/s
                                                             ##  Max: 28.48 MBit/s
                                                             ##  Ttl: 147.06 MByte
    Outgoing:
    
    
    
    
                                                                 Curr: 353.68 kBit/s
                                                                 Avg: 353.68 kBit/s
                                                                 Min: 350.62 kBit/s
                                                                 Max: 353.68 kBit/s
                                                             ..  Ttl: 4.79 MByte
    
  • nethogs 使用帶寬最多的行程

    [root@localhost ~]# yum -y install nethogs  #安裝nethogs工具
    
    [root@localhost ~]# nethogs                 #開啟監控
    
    在另外開一個終端下載 wget東西
    [root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
    
    
    監控測驗顯示結果
    [root@localhost ~]# nethogs
    Ethernet link detected
                          Waiting for first packet to arrive (see sourceforge.net bug 1019381)
    NetHogs version 0.8.5
    
        PID USER     PROGRAM                             DEV        SENT      RECEIVED       
      39738 root     wget                                ens33      21.877    4158.442 KB/sec
      38492 root     sshd: root@pts/0                    ens33       0.870       0.211 KB/sec
          ? root     unknown TCP                                     0.000       0.000 KB/sec
    
      TOTAL                                                         22.747    4158.653 KB/sec
    
     
    

5.5 優化linux檔案打開最大數

在生產環境中,由于某些軟體、應用程式發揮最大的性能,使用Linux內核默認資源顯然不夠的,要對Linux內核資源進行重新修改和調整,對Linux內核資源進行優化

默認Linux內核對每個用戶設定了打開檔案最大數為1024,對于高并發網站,是遠遠不夠的,需要將默認值調整到更大

inux每個用戶打開檔案最大數永久設定方法,將如下代碼加入內核限制檔案/etc/security/limits.conf的末尾:
* 	soft 	noproc			65535
* 	hard 	noproc			65535
* 	soft 	nofile			65535
* 	hard 	nofile			65535
如上設定為對每個用戶分別設定nofile、noproc最大數,如果需要對Linux整個系統設定檔案最大數限制,需要修改/proc/sys/fs/file-max中的值,該值為Linux總檔案打開數,
例如設定為:echo 3865161233 >/proc/sys/fs/file-max,

在這里插入圖片描述

6.內核引數優化

vi /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 6000
timewait的數量,默認是180000,
net.ipv4.ip_local_port_range = 1024    65000
允許系統打開的埠范圍,
net.ipv4.tcp_tw_recycle = 1
啟用timewait快速回收,
net.ipv4.tcp_tw_reuse = 1
開啟重用,允許將TIME-WAIT sockets重新用于新的TCP連接,
net.ipv4.tcp_syncookies = 1
開啟SYN Cookies,當出現SYN等待佇列溢位時,啟用cookies來處理,
net.core.somaxconn = 262144
web應用中listen函式的backlog默認會給我們內核引數的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG默認為511,所以有必要調整這個值,
net.core.netdev_max_backlog = 262144
每個網路介面接收資料包的速率比內核處理這些包的速率快時,允許送到佇列的資料包的最大數目,
net.ipv4.tcp_max_orphans = 262144
系統中最多有多少個TCP套接字不被關聯到任何一個用戶檔案句柄上,如果超過這個數字,孤兒連接將即刻被復位并列印出警告資訊,這個限制僅僅是為了防止簡單的DoS攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了記憶體之后),
net.ipv4.tcp_max_syn_backlog = 262144
記錄的那些尚未收到客戶端確認資訊的連接請求的最大值,對于有128M記憶體的系統而言,預設值是1024,小記憶體的系統則是128,
net.ipv4.tcp_timestamps = 0
時間戳可以避免序列號的卷繞,一個1Gbps的鏈路肯定會遇到以前用過的序列號,時間戳能夠讓內核接受這種“例外”的資料包,這里需要將其關掉,
net.ipv4.tcp_synack_retries = 1
為了打開對端的連接,內核需要發送一個SYN并附帶一個回應前面一個SYN的ACK,也就是所謂三次握手中的第二次握手,這個設定決定了內核放棄連接之前發送SYN+ACK包的數量,
net.ipv4.tcp_syn_retries = 1
在內核放棄建立連接之前發送SYN包的數量,
net.ipv4.tcp_fin_timeout = 1
如果套接字由本端要求關閉,這個引數決定了它保持在FIN-WAIT-2狀態的時間,對端可以出錯并永遠不關閉連接,甚至意外當機,預設值是60秒,2.2 內核的通常值是180秒,你可以按這個設定,但要記住的是,即使你的機器是一個輕載的WEB服務器,也有因為大量的死套接字而記憶體溢位的風險,FIN- WAIT-2的危險性比FIN-WAIT-1要小,因為它最多只能吃掉1.5K記憶體,但是它們的生存期長些,
net.ipv4.tcp_keepalive_time = 30
當keepalive起用的時候,TCP發送keepalive訊息的頻度,預設是2小時,

總結

如果你閱讀到這里,我相信你一定和我一樣,正在努力的變成一個優秀的運維工程師,朝著心中的那一方凈土出發,

關于linux系統內核優化,總體從系統和應用程式出發,但如果在具體點,我們還是從以下方面去考慮:

硬體層面
CPU、記憶體、硬碟容量、硬碟I/O讀寫、網卡自身帶寬容量等,通常對硬體層面因素的優化主要是考慮增加其配置;

軟體層面
Linux系統下各個應用程式:Nginx、Tomcat、MYSQL、Redis、程式代碼、網站代碼等,對其網站代碼、軟體的組態檔引數優化、優化軟體架構、是否增加集群、分布式結構以擴展軟體的本身的性能;

系統層面
選擇比較穩定的Linux作業系統發行版、減少不必要的服務、埠、修改Linux內核自身的限制、對Linux內核實施優化(打開埠數、行程數、檔案數等);

網路層面
引入性能比較強硬體網路設備、交換機、路由器、防火墻,增加網路設備的背板帶寬、帶寬容量、吞吐率、運營商購買帶寬容量等;

寫作不易,點個贊,收藏下哦,方便以后查找,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287029.html

標籤:其他

上一篇:nginx下部署node.js服務器

下一篇:APP測驗---fiddler的應用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more