一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - linux 服務器性能分析及優化的一些方法

linux 服務器性能分析及優化的一些方法

2020-10-29 22:47后臺開發深度探索 Linux

本文主要為大家分享linux 服務器性能分析及優化的一些方法,有需要的朋友可以參考下

1. 首先查看網絡連接數

netstat -an

或者 ss -s 進行統計,如果帶上-p參數的話當連接數比較多的時候就會比較慢

或者查看系統:

/proc/net/sockstat:

sockets: used 160

TCP: inuse 0 orphan 0 tw 0 alloc 4 mem 0

UDP: inuse 0 mem 1

UDPLITE: inuse 0

RAW: inuse 0

FRAG: inuse 0 memory 0

2. 系統dmesg提示 socket out of memory

首先查看系統socket使用了多少,參考1.

3. 查看系統給tcp分配的內存大小限制

cat /proc/sys/net/ipv4/tcp_rmem #tcp read buffer bytes

4096 87380 629145

第一項是buffer最小4096字節,第二項是默認值87380字節,第三項是read buffer 最大限制629145 字節

cat /proc/sys/net/ipv4/tcp_wmem #tcp write buffer bytes

write buffer與read buffer類似

cat /proc/sys/net/ipv4/tcp_mem #tcp memory pages

21498 28665 42996

第一個值是內存使用的下限;第二個值是內存壓力模式開始對緩沖區使用應用壓力的上限;第三個值是內存使用的上限。在這個層次上可以將報文丟棄,從而減少對內存的使用socket out of memory。可以結合sockstat里的統計數據分析tcp使用內存是否超過了限制,注意這里單位是頁,查看頁大小getconf PAGESIZE

另外可以查看tcp讀寫發送窗口默認值:

/proc/sys/net/core/rmem_default

/proc/sys/net/core/rmem_max

/proc/sys/net/core/wmem_default

/proc/sys/net/core/wmem_max

另外socket out of memory 也有可能是孤兒socket過多導致的。

4. 內核配置最大的孤兒socket數:

cat /proc/sys/net/ipv4/max_orphans

4096

查看孤兒socket

cat /proc/net/sockstat

sockets: used 403

TCP: inuse 4 orphan 0 tw 0 alloc 10 mem 1

UDP: inuse 12 mem 7

UDPLITE: inuse 0

RAW: infuse 0

FRAG: inuse 0 memory 0

注意這里的orphan 往往會被內核x2 或者x4,所以有時候看到這里的orphan數比較小,但是卻有out of socket memory的提示,有可能就是這個放大倍數導致的。關于孤兒socket 可以參考:孤兒socket

5. 一個tcp socket占用多大內存

首先socket包括本地ip、端口,對端ip、端口;發送、接收緩沖區等(跟配置有關)。

如果按照上面最小的讀寫緩沖區來算那么一個socket大概占用8K的內存。

如果單從一個socket占用的內存來看,一個8GB的內存,一般情況下可以承受100萬得sock長連接,前提是系統文件句柄要調大

tcp內存最大也要進行調整。

tcp內核參數調優

tcp參數調優

6. 查看系統總共使用了多少文件描述符

cat /proc/sys/fs/file-nr

4096 0 9000

第一項就是當前系統已經打開的文件句柄(包括socket ),最后一項是整個系統最大可以打開的文件句柄數

cat /proc/sys/fs/file-max

系統最大的文件句柄數

cat /proc/sys/fs/nr_open

1048576

系統配置的單個進程最大可以打開的文件句柄數

7.dmesg or dmesg -T

查看內核的錯誤信息,比如tcp鏈接太多,句柄不夠用,內存不足導致某些進程被kill掉

8. 使用slabtop 查看內核內存分配

IOStat -d 1 10 -x

9. 查看系統統計

vmstat -n 1 10

可以通過該命令動態觀察swap內存是否在發生變化,如果一直在增長,那么可以初步斷定 系統內存不夠用。

當cache、buffer占用大量內存是可以通過調整內核參數釋放改內存:

$sync (必須要先執行)

$ echo “3” > /proc/sys/vm/drop_caches (該值默認是0,不釋放)

10. tcp keepalive time 如果想開啟tcp 半打開狀態的連接的回收,單單配置keep alive是不夠的,需要在程序中調用setsockopt 開啟探測功能,否則即使系統側配置了keepalive time也是不夠的。

11. top 然后按數字1,看各個cpu是否存在不均衡的情況,如果是則看下系統軟中斷一列的cpu是否使用過高,如果是則進一步確認是不是網卡軟中斷引起的:

linux 服務器性能分析及優化的一些方法

Fig 1:各個cpu使用情況

下圖是系統中斷在各個cpu的分布,通過分析上下兩個圖就可以知道是不是因為網卡導致軟中斷過高,如果是網卡收發包軟中斷過高則需要進行多網卡隊列配置優化或者是收發包軟中斷優化(RPS/RFS)

linux 服務器性能分析及優化的一些方法

查看網卡是否支持多網卡隊列可以通過以下命令:

ethtool -L eth0

RPS/RFS 優化配置(原理就是根據四元組進行hash選則對應的CPU進行CPU負載均衡、提升CPU緩存命中率):

RPS:

RPS指定哪些接收隊列需要通過rps平均到配置的cpu列表上。

/sys/class/net/(dev)/queues/rx-(n)/rps_cpus

RFS:

每個隊列的數據流表總數可以通過下面的參數來設置:

該值設置成rps_sock_flow_entries/N,其中N表示設備的接收隊列數量。

/sys/class/net/(dev)/queues/rx-(n)/rps_flow_cnt

全局數據流表(rps_sock_flow_table)的總數,紅帽是建議設置成32768,一般設置成最大并發鏈接數量

/proc/sys/net/core/rps_sock_flow_entries

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女被扒开屁股进去网 | а天堂中文最新版在线 | juy_661佐佐木明希在线播放 | 欧美日韩色图 | 男人捅女人漫画 | 乌克兰少妇大胆大BBW | 小嫩videos| 国产精品合集久久久久青苹果 | 91在线免费看 | 情缘1完整版在线观看 | 欧美日韩高清观看一区二区 | 我们中文在线观看免费完整版 | 3黑人巨大vs北岛玲 3d肉浦团在线观看 3d动漫免费 | 香蕉久久一区二区不卡无毒影院 | 四虎免费看片 | 日本邪恶动态 | 日日干影院 | 性奴公司 警花 | 垫底辣妹免费观看完整版 | 国士李风起全文在线阅读 | 日日碰日日操 | 操一操影院 | 好紧好爽的午夜寂寞视频 | 午夜成私人影院在线观看 | 精品国产精品国产偷麻豆 | 色先锋影音资源 | 闺蜜的样子小说安沁在线阅读 | 娇妻被健身教练挺进小说阅读 | 邪恶肉肉全彩色无遮琉璃神社 | 乌克兰呦12~14 | 亚洲国产欧美日韩在线一区 | 欧美亚洲天堂 | 欧美男女爱爱视频 | 日韩久久精品 | 日本一区二区三区精品 | 久久精品123| 无码欧美喷潮福利XXXX | 亚偷熟乱区视频在线观看 | 欧美激情精品久久久久久不卡 | 欧美黄站| 人与动人物性行为zozo共患病 |