精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

技能篇:Linux服務(wù)性能問題排查及Jvm調(diào)優(yōu)思路

系統(tǒng) Linux
Swap 其實就是把一塊磁盤空間或者一個本地文件,當(dāng)成內(nèi)存來使用。swap 換出,把進(jìn)程暫時不用的內(nèi)存數(shù)據(jù)存儲到磁盤中,并釋放這些數(shù)據(jù)占用的內(nèi)存。

只要業(yè)務(wù)邏輯代碼寫正確,處理好業(yè)務(wù)狀態(tài)在多線程的并發(fā)問題,很少會有調(diào)優(yōu)方面的需求。最多就是在性能監(jiān)控平臺發(fā)現(xiàn)某些接口的調(diào)用耗時偏高,然后再發(fā)現(xiàn)某一SQL或第三方接口執(zhí)行超時之類的。如果你是負(fù)責(zé)中間件或IM通訊相關(guān)項目開發(fā),或許就需要偏向CPU、磁盤、網(wǎng)絡(luò)及內(nèi)存方面的問題排查及調(diào)優(yōu)技能。

  • CPU過高,怎么排查問題
  • linux內(nèi)存
  • 磁盤IO
  • 網(wǎng)絡(luò)IO
  • java 應(yīng)用內(nèi)存泄漏和頻繁 GC
  • java 線程問題排查
  • 常用 jvm 啟動參數(shù)調(diào)優(yōu)

linux CPU 過高,怎么排查問題

CPU 指標(biāo)解析

  • 平均負(fù)載

平均負(fù)載等于邏輯 CPU 個數(shù),表示每個 CPU 都恰好被充分利用。如果平均負(fù)載大于邏輯 CPU 個數(shù),則負(fù)載比較重

  • 進(jìn)程上下文切換

無法獲取資源而導(dǎo)致的自愿上下文切換

被系統(tǒng)強(qiáng)制調(diào)度導(dǎo)致的非自愿上下文切換

  • CPU 使用率

用戶 CPU 使用率,包括用戶態(tài) CPU 使用率(user)和低優(yōu)先級用戶態(tài) CPU 使用率(nice),表示 CPU 在用戶態(tài)運(yùn)行的時間百分比。用戶 CPU 使用率高,通常說明有應(yīng)用程序比較繁忙

系統(tǒng) CPU 使用率,表示 CPU 在內(nèi)核態(tài)運(yùn)行的時間百分比(不包括中斷),系統(tǒng) CPU 使用率高,說明內(nèi)核比較繁忙

等待 I/O 的 CPU 使用率,通常也稱為 iowait,表示等待 I/O 的時間百分比。iowait 高,說明系統(tǒng)與硬件設(shè)備的 I/O 交互時間比較長

軟中斷和硬中斷的 CPU 使用率,分別表示內(nèi)核調(diào)用軟中斷處理程序、硬中斷處理程序的時間百分比。它們的使用率高,表明系統(tǒng)發(fā)生了大量的中斷

查看系統(tǒng)的平均負(fù)載

$ uptime
10:54:52 up 1124 days, 16:31, 6 users, load average: 3.67, 2.13, 1.79
  • 10:54:52 是當(dāng)前時間;up 1124 days, 16:31 是系統(tǒng)運(yùn)行時間;6 users 則是正在登錄用戶數(shù)。而最后三個數(shù)字依次是過去 1 分鐘、5 分鐘、15 分鐘的平均負(fù)載(Load Average)。平均負(fù)載是指單位時間內(nèi),系統(tǒng)處于可運(yùn)行狀態(tài)和不可中斷狀態(tài)的平均進(jìn)程數(shù)
  • 當(dāng)平均負(fù)載高于 CPU 數(shù)量 70% 的時候,就應(yīng)該分析排查負(fù)載高的問題。一旦負(fù)載過高,就可能導(dǎo)致進(jìn)程響應(yīng)變慢,進(jìn)而影響服務(wù)的正常功能
  • 平均負(fù)載與 CPU 使用率關(guān)系

CPU 密集型進(jìn)程,使用大量 CPU 會導(dǎo)致平均負(fù)載升高,此時這兩者是一致的

I/O 密集型進(jìn)程,等待 I/O 也會導(dǎo)致平均負(fù)載升高,但 CPU 使用率不一定很高

大量等待 CPU 的進(jìn)程調(diào)度也會導(dǎo)致平均負(fù)載升高,此時的 CPU 使用率也會比較高

CPU 上下文切換

  • 進(jìn)程上下文切換:

進(jìn)程的運(yùn)行空間可以分為內(nèi)核空間和用戶空間,當(dāng)代碼發(fā)生系統(tǒng)調(diào)用時(訪問受限制的資源),CPU 會發(fā)生上下文切換,系統(tǒng)調(diào)用結(jié)束時,CPU 則再從內(nèi)核空間換回用戶空間。一次系統(tǒng)調(diào)用,兩次 CPU 上下文切換

系統(tǒng)平時會按一定的策略調(diào)用進(jìn)程,會導(dǎo)致進(jìn)程上下文切換

進(jìn)程在阻塞等到訪問資源時,也會發(fā)生上下文切換

進(jìn)程通過睡眠函數(shù)掛起,會發(fā)生上下文切換

當(dāng)有優(yōu)先級更高的進(jìn)程運(yùn)行時,為了保證高優(yōu)先級進(jìn)程的運(yùn)行,當(dāng)前進(jìn)程會被掛起

  • 線程上下文切換:

同一進(jìn)程里的線程,它們共享相同的虛擬內(nèi)存和全局變量資源,線程上下文切換時,這些資源不變

線程自己的私有數(shù)據(jù),比如棧和寄存器等,需要在上下文切換時保存切換

  • 中斷上下文切換:

為了快速響應(yīng)硬件的事件,中斷處理會打斷進(jìn)程的正常調(diào)度和執(zhí)行,轉(zhuǎn)而調(diào)用中斷處理程序,響應(yīng)設(shè)備事件

查看系統(tǒng)的上下文切換情況:

vmstat 和 pidstat。vmvmstat 可查看系統(tǒng)總體的指標(biāo),pidstat則詳細(xì)到每一個進(jìn)程服務(wù)的指標(biāo):

$ vmstat 2 1 
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 3498472 315836 3819540 0 0 0 1 2 0 3 1 96 0 0

--------
cs(context switch)是每秒上下文切換的次數(shù)
in(interrupt)則是每秒中斷的次數(shù)
r(Running or Runnable)是就緒隊列的長度,也就是正在運(yùn)行和等待 CPU 的進(jìn)程數(shù).當(dāng)這個值超過了CPU數(shù)目,就會出現(xiàn)CPU瓶頸
b(Blocked)則是處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)
# pidstat -w
Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU)

06:43:23 PM UID PID cswch/s nvcswch/s Command
06:43:23 PM 0 1 0.00 0.00 java
06:43:23 PM 0 102 0.00 0.00 bash
06:43:23 PM 0 150 0.00 0.00 pidstat

------各項指標(biāo)解析---------------------------
PID 進(jìn)程id
Cswch/s 每秒主動任務(wù)上下文切換數(shù)量
Nvcswch/s 每秒被動任務(wù)上下文切換數(shù)量。大量進(jìn)程都在爭搶 CPU 時,就容易發(fā)生非自愿上下文切換
Command 進(jìn)程執(zhí)行命令

怎么排查 CPU 過高問題

  • 先使用 top 命令,查看系統(tǒng)相關(guān)指標(biāo)。如需要按某指標(biāo)排序則 使用 top -o 字段名 如:top -o %CPU。 -o 可以指定排序字段,順序從大到小
# top -o %MEM
top - 18:20:27 up 26 days, 8:30, 2 users, load average: 0.04, 0.09, 0.13
Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 32762356 total, 14675196 used, 18087160 free, 884 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 6580028 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2323 mysql 20 0 19.918g 4.538g 9404 S 0.333 14.52 352:51.44 mysqld
1260 root 20 0 7933492 1.173g 14004 S 0.333 3.753 58:20.74 java
1520 daemon 20 0 358140 3980 776 S 0.333 0.012 6:19.55 httpd
1503 root 20 0 69172 2240 1412 S 0.333 0.007 0:48.05 httpd

---------各項指標(biāo)解析---------------------------------------------------
第一行統(tǒng)計信息區(qū)
18:20:27 當(dāng)前時間
up 25 days, 17:29 系統(tǒng)運(yùn)行時間,格式為時:分
1 user 當(dāng)前登錄用戶數(shù)
load average: 0.04, 0.09, 0.13 系統(tǒng)負(fù)載,三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值

Tasks:進(jìn)程相關(guān)信息
running 正在運(yùn)行的進(jìn)程數(shù)
sleeping 睡眠的進(jìn)程數(shù)
stopped 停止的進(jìn)程數(shù)
zombie 僵尸進(jìn)程數(shù)
Cpu(s):CPU相關(guān)信息
%us:表示用戶空間程序的cpu使用率(沒有通過nice調(diào)度)
%sy:表示系統(tǒng)空間的cpu使用率,主要是內(nèi)核程序
%ni:表示用戶空間且通過nice調(diào)度過的程序的cpu使用率
%id:空閑cpu
%wa:cpu運(yùn)行時在等待io的時間
%hi:cpu處理硬中斷的數(shù)量
%si:cpu處理軟中斷的數(shù)量
Mem 內(nèi)存信息
total 物理內(nèi)存總量
used 使用的物理內(nèi)存總量
free 空閑內(nèi)存總量
buffers 用作內(nèi)核緩存的內(nèi)存量
Swap 內(nèi)存信息
total 交換區(qū)總量
used 使用的交換區(qū)總量
free 空閑交換區(qū)總量
cached 緩沖的交換區(qū)總量
  • 找到相關(guān)進(jìn)程后,我們則可以使用 top -Hp pid 或 pidstat -t -p pid 命令查看進(jìn)程具體線程使用 CPU 情況,從而找到具體的導(dǎo)致 CPU 高的線程

%us 過高,則可以在對應(yīng) java 服務(wù)根據(jù)線程ID查看具體詳情,是否存在死循環(huán),或者長時間的阻塞調(diào)用。java 服務(wù)可以使用 jstack

如果是 %sy 過高,則先使用 strace 定位具體的系統(tǒng)調(diào)用,再定位是哪里的應(yīng)用代碼導(dǎo)致的

如果是 %si 過高,則可能是網(wǎng)絡(luò)問題導(dǎo)致軟中斷頻率飆高

%wa 過高,則是頻繁讀寫磁盤導(dǎo)致的。

linux 內(nèi)存

查看內(nèi)存使用情況

  • 使用 top 或者 free、vmstat 命令
# top 
top - 18:20:27 up 26 days, 8:30, 2 users, load average: 0.04, 0.09, 0.13
Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 32762356 total, 14675196 used, 18087160 free, 884 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 6580028 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2323 mysql 20 0 19.918g 4.538g 9404 S 0.333 14.52 352:51.44 mysqld
1260 root 20 0 7933492 1.173g 14004 S 0.333 3.753 58:20.74 java
....
  • bcc-tools 軟件包里的 cachestat 和 cachetop、memleak

achestat 可查看整個系統(tǒng)緩存的讀寫命中情況

cachetop 可查看每個進(jìn)程的緩存命中情況

memleak 可以用檢查 C、C++ 程序的內(nèi)存泄漏問題

free 命令內(nèi)存指標(biāo)

# free -m 
total used free shared buffers cached
Mem: 32107 30414 1692 0 1962 8489
-/+ buffers/cache: 19962 12144
Swap: 0 0 0

  • shared 是共享內(nèi)存的大小, 一般系統(tǒng)不會用到,總是0
  • buffers/cache 是緩存和緩沖區(qū)的大小,buffers 是對原始磁盤塊的緩存,cache 是從磁盤讀取文件系統(tǒng)里文件的頁緩存
  • available 是新進(jìn)程可用內(nèi)存的大小

內(nèi)存 swap 過高

Swap 其實就是把一塊磁盤空間或者一個本地文件,當(dāng)成內(nèi)存來使用。swap 換出,把進(jìn)程暫時不用的內(nèi)存數(shù)據(jù)存儲到磁盤中,并釋放這些數(shù)據(jù)占用的內(nèi)存。swap 換入,在進(jìn)程再次訪問這些內(nèi)存的時候,把它們從磁盤讀到內(nèi)存中來

  • swap 和 內(nèi)存回收的機(jī)制

內(nèi)存的回收既包括了文件頁(內(nèi)存映射獲取磁盤文件的頁)又包括了匿名頁(進(jìn)程動態(tài)分配的內(nèi)存)

對文件頁的回收,可以直接回收緩存,或者把臟頁寫回磁盤后再回收

而對匿名頁的回收,其實就是通過 Swap 機(jī)制,把它們寫入磁盤后再釋放內(nèi)存

  • swap 過高會造成嚴(yán)重的性能問題,頁失效會導(dǎo)致頻繁的頁面在內(nèi)存和磁盤之間交換

一般線上的服務(wù)器的內(nèi)存都很大,可以禁用 swap

可以設(shè)置 /proc/sys/vm/min_free_kbytes,來調(diào)整系統(tǒng)定期回收內(nèi)存的閾值,也可以設(shè)置 /proc/sys/vm/swappiness,來調(diào)整文件頁和匿名頁的回收傾向

linux 磁盤I/O 問題

文件系統(tǒng)和磁盤

  • 磁盤是一個存儲設(shè)備(確切地說是塊設(shè)備),可以被劃分為不同的磁盤分區(qū)。而在磁盤或者磁盤分區(qū)上,還可以再創(chuàng)建文件系統(tǒng),并掛載到系統(tǒng)的某個目錄中。系統(tǒng)就可以通過這個掛載目錄來讀寫文件
  • 磁盤是存儲數(shù)據(jù)的塊設(shè)備,也是文件系統(tǒng)的載體。所以,文件系統(tǒng)確實還是要通過磁盤,來保證數(shù)據(jù)的持久化存儲
  • 系統(tǒng)在讀寫普通文件時,I/O 請求會首先經(jīng)過文件系統(tǒng),然后由文件系統(tǒng)負(fù)責(zé),來與磁盤進(jìn)行交互。而在讀寫塊設(shè)備文件時,會跳過文件系統(tǒng),直接與磁盤交互
  • linux 內(nèi)存里的 Buffers 是對原始磁盤塊的臨時存儲,也就是用來緩存磁盤的數(shù)據(jù),通常不會特別大(20MB 左右)。內(nèi)核就可以把分散的寫集中起來(優(yōu)化磁盤的寫入)
  • linux 內(nèi)存里的 Cached 是從磁盤讀取文件的頁緩存,也就是用來緩存從文件讀寫的數(shù)據(jù)。下次訪問這些文件數(shù)據(jù)時,則直接從內(nèi)存中快速獲取,而不再次訪問磁盤

磁盤性能指標(biāo)

  • 使用率,是指磁盤處理 I/O 的時間百分比。過高的使用率(比如超過 80%),通常意味著磁盤 I/O 存在性能瓶頸。
  • 飽和度,是指磁盤處理 I/O 的繁忙程度。過高的飽和度,意味著磁盤存在嚴(yán)重的性能瓶頸。當(dāng)飽和度為 100% 時,磁盤無法接受新的 I/O 請求。
  • IOPS(Input/Output Per Second),是指每秒的 I/O 請求數(shù)
  • 吞吐量,是指每秒的 I/O 請求大小
  • 響應(yīng)時間,是指 I/O 請求從發(fā)出到收到響應(yīng)的間隔時間

IO 過高怎么找問題,怎么調(diào)優(yōu)

  • 查看系統(tǒng)磁盤整體 I/O
# iostat -x -k -d 1 1
Linux 4.4.73-5-default (ceshi44) 2021年07月08日 _x86_64_ (40 CPU)

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.08 2.48 0.37 11.71 27.80 507.24 88.53 0.02 1.34 14.96 0.90 0.09 0.10
sdb 0.00 1.20 1.28 16.67 30.91 647.83 75.61 0.17 9.51 9.40 9.52 0.32 0.57
------
rrqm/s: 每秒對該設(shè)備的讀請求被合并次數(shù),文件系統(tǒng)會對讀取同塊(block)的請求進(jìn)行合并
wrqm/s: 每秒對該設(shè)備的寫請求被合并次數(shù)
r/s: 每秒完成的讀次數(shù)
w/s: 每秒完成的寫次數(shù)
rkB/s: 每秒讀數(shù)據(jù)量(kB為單位)
wkB/s: 每秒寫數(shù)據(jù)量(kB為單位)
avgrq-sz: 平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)
avgqu-sz: 平均等待處理的IO請求隊列長度
await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)
svctm: 平均每次IO請求的處理時間(毫秒為單位)
%util: 采用周期內(nèi)用于IO操作的時間比率,即IO隊列非空的時間比率
  • 查看進(jìn)程級別 I/O
# pidstat -d
Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU)

06:42:35 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
06:42:35 PM 0 1 1.05 0.00 0.00 java
06:42:35 PM 0 102 0.04 0.05 0.00 bash
------
kB_rd/s 每秒從磁盤讀取的KB
kB_wr/s 每秒寫入磁盤KB
kB_ccwr/s 任務(wù)取消的寫入磁盤的KB。當(dāng)任務(wù)截斷臟的pagecache的時候會發(fā)生
Command 進(jìn)程執(zhí)行命令
  • 當(dāng)使用 pidstat -d 定位到哪個應(yīng)用服務(wù)時,接下來則需要使用 strace 和 lsof 定位是哪些代碼在讀寫磁盤里的哪些文件,導(dǎo)致IO高的原因
$ strace -p 18940 
strace: Process 18940 attached
...
mmap(NULL, 314576896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f7aee9000
mmap(NULL, 314576896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f682e8000
write(3, "2018-12-05 15:23:01,709 - __main"..., 314572844
) = 314572844
munmap(0x7f0f682e8000, 314576896) = 0
write(3, "\n", 1) = 1
munmap(0x7f0f7aee9000, 314576896) = 0
close(3) = 0
stat("/tmp/logtest.txt.1", {st_mode=S_IFREG|0644, st_size=943718535, ...}) = 0
  • strace 命令輸出可以看到進(jìn)程18940 正在往文件 /tmp/logtest.txt.1 寫入300m
$ lsof -p 18940 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 18940 root cwd DIR 0,50 4096 1549389 /

java 18940 root 2u CHR 136,0 0t0 3 /dev/pts/0
java 18940 root 3w REG 8,1 117944320 303 /tmp/logtest.txt
----
FD 表示文件描述符號,TYPE 表示文件類型,NODE NAME 表示文件路徑
  • lsof 也可以看出進(jìn)程18940 以每次 300MB 的速度往 /tmp/logtest.txt 寫入

linux 網(wǎng)絡(luò)I/O 問題

當(dāng)一個網(wǎng)絡(luò)幀到達(dá)網(wǎng)卡后,網(wǎng)卡會通過 DMA 方式,把這個網(wǎng)絡(luò)包放到收包隊列中;然后通過硬中斷,告訴中斷處理程序已經(jīng)收到了網(wǎng)絡(luò)包。接著,網(wǎng)卡中斷處理程序會為網(wǎng)絡(luò)幀分配內(nèi)核數(shù)據(jù)結(jié)構(gòu)(sk_buff),并將其拷貝到 sk_buff 緩沖區(qū)中;然后再通過軟中斷,通知內(nèi)核收到了新的網(wǎng)絡(luò)幀。內(nèi)核協(xié)議棧從緩沖區(qū)中取出網(wǎng)絡(luò)幀,并通過網(wǎng)絡(luò)協(xié)議棧,從下到上逐層處理這個網(wǎng)絡(luò)幀

  • 硬中斷:與系統(tǒng)相連的外設(shè)(比如網(wǎng)卡、硬盤)自動產(chǎn)生的。主要是用來通知操作系統(tǒng)系統(tǒng)外設(shè)狀態(tài)的變化。比如當(dāng)網(wǎng)卡收到數(shù)據(jù)包的時候,就會發(fā)出一個硬中斷
  • 軟中斷:為了滿足實時系統(tǒng)的要求,中斷處理應(yīng)該是越快越好。linux為了實現(xiàn)這個特點,當(dāng)中斷發(fā)生的時候,硬中斷處理那些短時間就可以完成的工作,而將那些處理事件比較長的工作,交給軟中斷來完成

網(wǎng)絡(luò)I/O指標(biāo)

  • 帶寬,表示鏈路的最大傳輸速率,單位通常為 b/s (比特 / 秒)
  • 吞吐量,表示單位時間內(nèi)成功傳輸?shù)臄?shù)據(jù)量,單位通常為 b/s(比特 / 秒)或者 B/s(字節(jié) / 秒)吞吐量受帶寬限制,而吞吐量 / 帶寬,也就是該網(wǎng)絡(luò)的使用率
  • 延時,表示從網(wǎng)絡(luò)請求發(fā)出后,一直到收到遠(yuǎn)端響應(yīng),所需要的時間延遲。在不同場景中,這一指標(biāo)可能會有不同含義。比如,它可以表示,建立連接需要的時間(比如 TCP 握手延時),或一個數(shù)據(jù)包往返所需的時間(比如 RTT)
  • PPS,是 Packet Per Second(包 / 秒)的縮寫,表示以網(wǎng)絡(luò)包為單位的傳輸速率。PPS 通常用來評估網(wǎng)絡(luò)的轉(zhuǎn)發(fā)能力,比如硬件交換機(jī),通常可以達(dá)到線性轉(zhuǎn)發(fā)(即 PPS 可以達(dá)到或者接近理論最大值)。而基于 Linux 服務(wù)器的轉(zhuǎn)發(fā),則容易受網(wǎng)絡(luò)包大小的影響
  • 網(wǎng)絡(luò)的連通性
  • 并發(fā)連接數(shù)(TCP 連接數(shù)量)
  • 丟包率(丟包百分比)

查看網(wǎng)絡(luò)I/O指標(biāo)

  • 查看網(wǎng)絡(luò)配置
# ifconfig em1
em1 Link encap:Ethernet HWaddr 80:18:44:EB:18:98
inet addr:192.168.0.44 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::8218:44ff:feeb:1898/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3098067963 errors:0 dropped:5379363 overruns:0 frame:0
TX packets:2804983784 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1661766458875 (1584783.9 Mb) TX bytes:1356093926505 (1293271.9 Mb)
Interrupt:83
-----
TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指標(biāo)不為 0 時,
通常表示出現(xiàn)了網(wǎng)絡(luò) I/O 問題。
errors 表示發(fā)生錯誤的數(shù)據(jù)包數(shù),比如校驗錯誤、幀同步錯誤等
dropped 表示丟棄的數(shù)據(jù)包數(shù),即數(shù)據(jù)包已經(jīng)收到了 Ring Buffer,但因為內(nèi)存不足等原因丟包
overruns 表示超限數(shù)據(jù)包數(shù),即網(wǎng)絡(luò) I/O 速度過快,導(dǎo)致 Ring Buffer 中的數(shù)據(jù)包來不及處理(隊列滿)而導(dǎo)致的丟包
carrier 表示發(fā)生 carrirer 錯誤的數(shù)據(jù)包數(shù),比如雙工模式不匹配、物理電纜出現(xiàn)問題等
collisions 表示碰撞數(shù)據(jù)包數(shù)
  • 網(wǎng)絡(luò)吞吐和 PPS
# sar -n DEV 1
Linux 4.4.73-5-default (ceshi44) 2022年03月31日 _x86_64_ (40 CPU)

15時39分40秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
15時39分41秒 em1 1241.00 1022.00 600.48 590.39 0.00 0.00 165.00 0.49
15時39分41秒 lo 636.00 636.00 7734.06 7734.06 0.00 0.00 0.00 0.00
15時39分41秒 em4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15時39分41秒 em3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15時39分41秒 em2 26.00 20.00 6.63 8.80 0.00 0.00 0.00 0.01
----
rxpck/s 和 txpck/s 分別是接收和發(fā)送的 PPS,單位為包 / 秒
rxkB/s 和 txkB/s 分別是接收和發(fā)送的吞吐量,單位是 KB/ 秒
rxcmp/s 和 txcmp/s 分別是接收和發(fā)送的壓縮數(shù)據(jù)包數(shù),單位是包 / 秒
  • 寬帶
# ethtool em1 | grep Speed 
Speed: 1000Mb/s
  • 連通性和延遲
[root@root ~]$>#ss -ant | awk '{++S[$1]} END {for(a in S) print a, S[a]}'
LISTEN 96
CLOSE-WAIT 527
ESTAB 8520
State 1
SYN-SENT 2
TIME-WAIT 660

[root@root ~]$>#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSE_WAIT 530
ESTABLISHED 8511
FIN_WAIT2 3
TIME_WAIT 809
  • 統(tǒng)計 TCP 連接狀態(tài)工具 ss 和 netstat
[root@root ~]$>#ss -ant | awk '{++S[$1]} END {for(a in S) print a, S[a]}'
LISTEN 96
CLOSE-WAIT 527
ESTAB 8520
State 1
SYN-SENT 2
TIME-WAIT 660

[root@root ~]$>#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSE_WAIT 530
ESTABLISHED 8511
FIN_WAIT2 3
TIME_WAIT 809

網(wǎng)絡(luò)請求變慢,怎么調(diào)優(yōu)

  • 高并發(fā)下 TCP 請求變多,會有大量處于 TIME_WAIT 狀態(tài)的連接,它們會占用大量內(nèi)存和端口資源。此時可以優(yōu)化與 TIME_WAIT 狀態(tài)相關(guān)的內(nèi)核選項

增大處于 TIME_WAIT 狀態(tài)的連接數(shù)量 net.ipv4.tcp_max_tw_buckets ,并增大連接跟蹤表的大小 net.netfilter.nf_conntrack_max

減小 net.ipv4.tcp_fin_timeout 和 net.netfilter.nf_conntrack_tcp_timeout_time_wait ,讓系統(tǒng)盡快釋放它們所占用的資源

開啟端口復(fù)用 net.ipv4.tcp_tw_reuse。這樣,被 TIME_WAIT 狀態(tài)占用的端口,還能用到新建的連接中

增大本地端口的范圍 net.ipv4.ip_local_port_range 。這樣就可以支持更多連接,提高整體的并發(fā)能力

增加最大文件描述符的數(shù)量。可以使用 fs.nr_open 和 fs.file-max ,分別增大進(jìn)程和系統(tǒng)的最大文件描述符數(shù)

  • SYN FLOOD 攻擊,利用 TCP 協(xié)議特點進(jìn)行攻擊而引發(fā)的性能問題,可以考慮優(yōu)化與 SYN 狀態(tài)相關(guān)的內(nèi)核選項

增大 TCP 半連接的最大數(shù)量 net.ipv4.tcp_max_syn_backlog ,或者開啟 TCP SYN Cookies net.ipv4.tcp_syncookies ,來繞開半連接數(shù)量限制的問題

減少 SYN_RECV 狀態(tài)的連接重傳 SYN+ACK 包的次數(shù) net.ipv4.tcp_synack_retries

  • 加快 TCP 長連接的回收,優(yōu)化與 Keepalive 相關(guān)的內(nèi)核選項

縮短最后一次數(shù)據(jù)包到 Keepalive 探測包的間隔時間 net.ipv4.tcp_keepalive_time

縮短發(fā)送 Keepalive 探測包的間隔時間 net.ipv4.tcp_keepalive_intvl

減少 Keepalive 探測失敗后,一直到通知應(yīng)用程序前的重試次數(shù) net.ipv4.tcp_keepalive_probes

java 應(yīng)用內(nèi)存泄漏和頻繁 GC

區(qū)分內(nèi)存溢出、內(nèi)存泄漏、內(nèi)存逃逸

  • 內(nèi)存泄漏:內(nèi)存被申請后始終無法釋放,導(dǎo)致內(nèi)存無法被回收使用,造成內(nèi)存空間浪費
  • 內(nèi)存溢出:指內(nèi)存申請時,內(nèi)存空間不足

1-內(nèi)存上限過小

2-內(nèi)存加載數(shù)據(jù)太多

3-分配太多內(nèi)存沒有回收,出現(xiàn)內(nèi)存泄漏

  • 內(nèi)存逃逸:是指程序運(yùn)行時的數(shù)據(jù),本應(yīng)在棧上分配,但需要在堆上分配,稱為內(nèi)存逃逸

java中的對象都是在堆上分配的,而垃圾回收機(jī)制會回收堆中不再使用的對象,但是篩選可回收對象,回收對象還有整理內(nèi)存都需要消耗時間。如果能夠通過逃逸分析確定對象不會逃出方法之外,那就可以讓這個對象在棧上分配內(nèi)存,對象所占用的內(nèi)存就可以隨棧幀出棧而銷毀,就減輕了垃圾回收的壓力

線程同步本身比較耗時,如果確定一個變量不會逃逸出線程,無法被其它線程訪問到,那這個變量的讀寫就不會存在競爭,對這個變量的同步措施可以清除

java 虛擬機(jī)中的原始數(shù)據(jù)類型(int,long及reference類型等) 都不能再進(jìn)一步分解,它們稱為標(biāo)量。如果一個數(shù)據(jù)可以繼續(xù)分解,那它稱為聚合量,java 中最典型的聚合量是對象。如果逃逸分析證明一個對象不會被外部訪問,并且這個對象是可分解的,那程序運(yùn)行時可能不創(chuàng)建該對象,而改為直接創(chuàng)建它的若干個被方法使用到的成員變量來代替。拆散后的變量便可以被單獨分析與優(yōu)化,可以各自分別在棧幀或寄存器上分配空間,原本的對象就無需整體分配空間

內(nèi)存泄漏,該如何定位和處理

  • 使用 jmap -histo:live [pid] 和 jmap -dump:format=b,file=filename [pid] 前者可以統(tǒng)計堆內(nèi)存對象大小和數(shù)量,后者可以把堆內(nèi)存 dump 下來
  • 啟動參數(shù)中指定-XX:+HeapDumpOnOutOfMemoryError來保存OOM時的dump文件
  • 使用 JProfiler 或者 MAT 軟件查看 heap 內(nèi)存對象,可以更直觀地發(fā)現(xiàn)泄露的對象

java線程問題排查

java 線程狀態(tài)

  • NEW:對應(yīng)沒有 Started 的線程,對應(yīng)新生態(tài)
  • RUNNABLE:對于就緒態(tài)和運(yùn)行態(tài)的合稱
  • BLOCKED,WAITING,TIMED_WAITING:三個都是阻塞態(tài)

sleep 和 join 稱為WAITING

sleep 和 join 方法設(shè)置了超時時間的,則是 TIMED_WAITING

wait 和 IO 流阻塞稱為BLOCKED

  • TERMINATED:死亡態(tài)

線程出現(xiàn)死鎖或者被阻塞

  • jstack –l pid | grep -i –E 'BLOCKED | deadlock' , 加上參數(shù) -l,jstack 命令可以快速打印出造成死鎖的代碼
# jstack -l 28764
Full thread dump Java HotSpot(TM) 64-Bit Server VM (13.0.2+8 mixed mode, sharing):
.....
"Thread-0" #14 prio=5 os_prio=0 cpu=0.00ms elapsed=598.37s tid=0x000001b3c25f7000 nid=0x4abc waiting for monitor entry [0x00000061661fe000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.Test$DieLock.run(Test.java:52)
- waiting to lock <0x0000000712d7c230> (a java.lang.Object)
- locked <0x0000000712d7c220> (a java.lang.Object)
at java.lang.Thread.run(java.base@13.0.2/Thread.java:830)

Locked ownable synchronizers:
- None

"Thread-1" #15 prio=5 os_prio=0 cpu=0.00ms elapsed=598.37s tid=0x000001b3c25f8000 nid=0x1984 waiting for monitor entry [0x00000061662ff000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.Test$DieLock.run(Test.java:63)
- waiting to lock <0x0000000712d7c220> (a java.lang.Object)
- locked <0x0000000712d7c230> (a java.lang.Object)
at java.lang.Thread.run(java.base@13.0.2/Thread.java:830)
.....
Found one Java-level deadlock:
=============================
"Thread-0":
waiting to lock monitor 0x000001b3c1e4c480 (object 0x0000000712d7c230, a java.lang.Object),
which is held by "Thread-1"
"Thread-1":
waiting to lock monitor 0x000001b3c1e4c080 (object 0x0000000712d7c220, a java.lang.Object),
which is held by "Thread-0"

Java stack information for the threads listed above:
===================================================
"Thread-0":
at com.Test$DieLock.run(Test.java:52)
- waiting to lock <0x0000000712d7c230> (a java.lang.Object)
- locked <0x0000000712d7c220> (a java.lang.Object)
at java.lang.Thread.run(java.base@13.0.2/Thread.java:830)
"Thread-1":
at com.Test$DieLock.run(Test.java:63)
- waiting to lock <0x0000000712d7c220> (a java.lang.Object)
- locked <0x0000000712d7c230> (a java.lang.Object)
at java.lang.Thread.run(java.base@13.0.2/Thread.java:830)
Found 1 deadlock.
  • 從 jstack 輸出的日志可以看出線程阻塞在 Test.java:52 行,發(fā)生了死鎖

常用 jvm 調(diào)優(yōu)啟動參數(shù)

  • -verbose:gc 輸出每次GC的相關(guān)情況。
  • -verbose:jni 輸出native方法調(diào)用的相關(guān)情況,一般用于診斷jni調(diào)用錯誤信息
  • -Xms n 指定jvm堆的初始大小,默認(rèn)為物理內(nèi)存的1/64,最小為1M;可以指定單位,比如k、m,若不指定,則默認(rèn)為字節(jié)
  • -Xmx n 指定jvm堆的最大值,默認(rèn)為物理內(nèi)存的1/4或者1G,最小為2M;單位與-Xms一致
  • -Xss n 設(shè)置單個線程棧的大小,一般默認(rèn)為512k
  • -XX:NewRatio=4 設(shè)置年輕代(包括Eden和兩個Survivor區(qū))與年老代的比值(除去持久代)。設(shè)置為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5
  • -Xmn 設(shè)置新生代內(nèi)存大小。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統(tǒng)性能影響較大,Sun官方推薦配置為整個堆的3/8
  • -XX:SurvivorRatio=4 設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:4,一個Survivor區(qū)占整個年輕代的1/6
  • -XX:MaxTenuringThreshold=0 設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對象不經(jīng)過Survivor區(qū),直接進(jìn)入年老代。對于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個較大值,則年輕代對象會在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概率
責(zé)任編輯:武曉燕 來源: 潛行前行
相關(guān)推薦

2017-07-21 08:55:13

TomcatJVM容器

2019-08-13 09:04:22

Linux性能調(diào)優(yōu)

2013-02-28 10:15:14

Ubuntu性能調(diào)優(yōu)故障排查

2017-09-22 15:15:23

jvm調(diào)優(yōu)命令

2017-10-17 14:02:30

jvm調(diào)優(yōu)工具

2024-12-04 15:49:29

2021-03-04 08:39:21

SparkRDD調(diào)優(yōu)

2010-09-27 10:20:09

JVMLinux

2014-02-21 10:40:39

GlusterFS性能調(diào)優(yōu)

2023-04-24 14:54:09

JVM性能調(diào)優(yōu)

2020-04-08 11:12:37

Linux開發(fā)工具

2012-01-10 14:35:08

JavaJVM

2018-07-18 12:12:20

Spark大數(shù)據(jù)代碼

2019-02-19 10:25:28

JVM性能工具

2021-12-06 11:03:57

JVM性能調(diào)優(yōu)

2019-11-01 08:49:07

JVM監(jiān)控性能

2020-11-09 07:34:49

JVM性能監(jiān)控

2011-05-19 14:11:29

Oracle

2023-11-11 19:07:23

JVMJava

2016-03-25 09:59:38

性能調(diào)優(yōu)LinuxMySQL
點贊
收藏

51CTO技術(shù)棧公眾號

在线观看一区二区视频| 免费xxxx性欧美18vr| 精品女同一区二区| av免费观看国产| 国产色a在线| 看片网站欧美日韩| 国产69精品99久久久久久宅男| 污片免费在线观看| 成人在线免费电影网站| 亚洲黄色片在线观看| 欧美第一黄网| 国产视频在线观看免费| 99视频精品| 久久久久999| 好吊一区二区三区视频| 成人影院网站ww555久久精品| 亚洲一区二区三区在线看| 欧美性色黄大片人与善| www日本高清| 日本午夜精品一区二区三区电影| 欧美成人在线免费| 亚洲av无码一区二区三区人| 久久久精品区| 欧美午夜精品理论片a级按摩| 日本一级黄视频| 成人午夜影视| 久久久久久**毛片大全| 成人高清在线观看| 一级片在线免费观看视频| 亚洲男人影院| 性色av一区二区三区| 91插插插插插插| 久久在线视频免费观看| 亚洲男人天堂网| 久草视频福利在线| av日韩久久| 欧美性猛交xxxxxxxx| 欧美日韩在线中文| h片在线观看视频免费| 亚洲免费观看高清完整版在线| 无码免费一区二区三区免费播放 | 在哪里可以看毛片| 国产成人一二片| 日韩欧美在线不卡| 夜夜夜夜夜夜操| 高清在线一区| 欧美专区在线观看一区| 国产乱子夫妻xx黑人xyx真爽| 免费在线看污片| 亚洲毛片av在线| 欧美亚洲视频一区| 日本精品在线| 亚洲欧美日韩国产另类专区 | 西西大胆午夜视频| 国产精品极品| 日韩av影视在线| 人妻少妇精品视频一区二区三区 | 日韩国产高清视频在线| 国产欧美视频一区| 亚洲91网站| 欧美刺激午夜性久久久久久久| 色婷婷综合在线观看| 国产精品一区二区精品| 欧美一区二区三区视频在线| 激情文学亚洲色图| 欧洲大片精品免费永久看nba| 欧美一区二区三区婷婷月色| 少妇熟女视频一区二区三区 | 久久99热国产| 成人福利在线视频| 国产成人精品毛片| 成人蜜臀av电影| 精品伦精品一区二区三区视频| 色网站免费观看| 26uuu国产一区二区三区 | 欧美电影《轻佻寡妇》| 日韩在线中文字幕| 无码人妻精品一区二区三区夜夜嗨| 综合天堂久久久久久久| 欧美激情亚洲国产| 亚洲 欧美 视频| 久久不射网站| 国产精品天天狠天天看| 99久久国产免费| 成人国产一区二区三区精品| 国产亚洲福利社区| 黄色在线视频观看网站| 亚洲国产精品成人综合| 欧美精品久久96人妻无码| 国模雨婷捆绑高清在线| 色国产综合视频| 91aaa精品| 久久99国产精品久久99大师| 亚洲一级一级97网| 亚洲一级生活片| 99精品国产在热久久婷婷| 国产精品2018| 精品人妻午夜一区二区三区四区 | 欧美日韩亚洲免费| 日本中文字幕在线播放| 亚洲一区在线视频观看| 欧美激情成人网| 亚洲综合资源| 日韩激情视频在线播放| 国产精品视频看看| 亚洲在线电影| 亚洲自拍av在线| 四虎影视精品成人| 中文字幕欧美一| 69堂免费视频| 亚洲精品午夜| 中文字幕欧美国内| av大片免费在线观看| 另类小说综合欧美亚洲| 精品日本一区二区三区| 黄色在线视频网站| 色狠狠综合天天综合综合| 免费观看黄网站| 欧州一区二区| 91精品国产91久久久久福利| 国产精品久久久久久久久久久久久久久久久久 | 久久大片网站| 黄色一级片在线观看| 激情亚洲一区二区三区四区 | 国产尤物在线视频| 国模娜娜一区二区三区| 欧洲av一区| www.youjizz.com在线| 91精品国产综合久久久蜜臀粉嫩| 久久亚洲AV成人无码国产野外| 欧美一区不卡| 成人疯狂猛交xxx| 国产高清视频免费最新在线| 午夜伦理一区二区| 制服下的诱惑暮生| 99re66热这里只有精品8| 欧美亚洲午夜视频在线观看| 亚洲免费一级片| 亚洲美女免费视频| 亚洲欧美天堂在线| 欧美激情黄色片| 国产精品一区二区三区久久 | 国产欧美一区在线| 凹凸国产熟女精品视频| 国产极品模特精品一二| 欧美高清第一页| 国产高清不卡视频| 自拍偷拍国产精品| 中文字幕天天干| 欧洲三级视频| 国产精品日韩在线| av播放在线观看| 欧美日韩亚洲丝袜制服| 少妇一级黄色片| 日韩电影一二三区| 日韩中文字幕一区二区| 国产精品久久久久77777丨| 亚洲网址你懂得| 伊人久久中文字幕| 国产精品午夜春色av| 欧美成人福利在线观看| 欧美第十八页| 91香蕉视频在线下载| 中文字幕在线观看网站| 亚洲成色999久久网站| 精品少妇一二三区| 91亚洲男人天堂| 国产精品无码一本二本三本色| 国产一区二区三区不卡视频网站| 成人免费精品视频| 成人av在线天堂| 成人三级网址| 亚洲第一中文字幕| 久久人妻免费视频| 欧美国产综合色视频| 亚洲欧美日韩三级| 欧美日韩一区二区三区四区在线观看| 国产精品免费一区二区三区在线观看 | 自慰无码一区二区三区| 国产精品免费大片| 国产欧美一区二区三区在线| 哥也色在线视频| 亚洲成色www8888| 小泽玛利亚一区二区三区视频| 国产精品九色蝌蚪自拍| 黄色一级片免费播放| 欧美三级网页| 欧美一区二区视频在线| 亚洲免费一区| 97精品久久久| 9191在线观看| 精品国产伦一区二区三区观看方式| 三级黄色在线视频| 国产精品毛片久久久久久| 韩国三级在线看| 首页欧美精品中文字幕| 成人性做爰片免费视频| 日本欧美三级| 91精品在线一区| 日韩精品极品| 久久偷看各类女兵18女厕嘘嘘| 人妻偷人精品一区二区三区| 欧美在线观看视频一区二区三区| 亚洲天堂黄色片| 久久婷婷成人综合色| 四虎1515hh.com| 天堂久久久久va久久久久| 日本道在线视频| 国产欧美日韩精品一区二区免费 | 日韩免费av片在线观看| 尤物yw193can在线观看| 一区二区欧美久久| 免费av一级片| 91 com成人网| 天堂网一区二区| 精品国产91久久久久久| 欧美日韩一级大片| 中国av一区二区三区| 国产男女猛烈无遮挡a片漫画| 国产精品一区二区不卡| 精品国产一区av| eeuss中文字幕| 91在线免费播放| 色男人天堂av| 久久99久久久久久久久久久| 日本三级免费网站| 一区久久精品| 大片在线观看网站免费收看| 色97色成人| 日韩电影大全在线观看| 亚洲警察之高压线| 国产区一区二区| 538任你躁精品视频网免费| 国产在线播放不卡| 日韩欧美2区| 热久久免费国产视频| 多野结衣av一区| 欧美激情视频在线免费观看 欧美视频免费一| av午夜在线| 国产亚洲精品久久| 欧美日韩免费做爰大片| 亚洲精品自拍偷拍| 日韩中文字幕免费在线观看| 欧美videossexotv100| 精品人妻一区二区三区换脸明星 | 免费a级片在线观看| 日韩午夜av一区| 国产成人精品亚洲精品色欲| 91精品国产aⅴ一区二区| 国产又粗又猛又色又| 欧美日韩激情在线| 亚洲自拍偷拍另类| 欧美日韩高清在线播放| 丰满熟女人妻一区二区三| 日本高清不卡aⅴ免费网站| 国产亚洲欧美在线精品| 色婷婷狠狠综合| 国产又粗又猛又爽又| 欧美午夜片在线观看| 一区二区 亚洲| 91精品国产欧美一区二区| 国产乱淫av免费| 日韩三级中文字幕| 丰满熟妇人妻中文字幕| 亚洲国产毛片完整版| 亚洲欧美自偷自拍| 亚洲欧美视频在线| av电影在线观看一区二区三区| yellow中文字幕久久| 性网站在线观看| 久久久亚洲成人| 神马久久午夜| 国产精品普通话| 涩爱av色老久久精品偷偷鲁| 国产精品伊人日日| 九一亚洲精品| 中文字幕黄色大片| 欧美先锋影音| 国产无套内射久久久国产| 美女精品在线| 欧美丝袜在线观看| 成人av在线一区二区三区| 日韩欧美中文字幕精品| 中文字幕网址在线| 欧美一区二区三区视频在线| 黄色aaa毛片| 亚洲人午夜精品| 欧美jizzhd69巨大| 久久久视频在线| 成人四虎影院| 国产高清自拍99| 欧美日韩一二| 强开小嫩苞一区二区三区网站| 亚洲一级网站| 国产日韩欧美久久| 成人高清在线视频| 大吊一区二区三区| 午夜精品123| 国产探花精品一区二区| 日韩精品免费在线视频| 欧美jizz18性欧美| 日韩av手机在线| 日韩一区二区三区精品| 深夜福利成人| 亚洲国产综合在线看不卡| 中文av一区二区三区| 成人av电影在线网| 肉色超薄丝袜脚交69xx图片| 婷婷综合五月天| 国产有码在线观看| 国产偷亚洲偷欧美偷精品| av网址在线| 国产精品日韩久久久久| 亚洲成人一品| 国产美女主播在线播放 | 午夜欧美2019年伦理| 国产精品一区二区黑人巨大 | 美女爆乳18禁www久久久久久| 亚洲精品国产高清久久伦理二区| 免费黄色小视频在线观看| 欧美精品一区二区久久婷婷| 日韩免费啪啪| 日韩av不卡在线| 福利欧美精品在线| 精品一区二区三区毛片| 久久精品久久精品| 美女100%无挡| 精品久久在线播放| 午夜精品久久久久久久91蜜桃| 最新的欧美黄色| 亚洲成人一区在线观看| 蜜桃视频在线观看成人| 亚洲美女色禁图| 水蜜桃av无码| 亚洲成人午夜影院| 亚洲爆乳无码一区二区三区| 久久国产精品免费视频| 欧美一区=区三区| 视频一区二区三区在线观看 | 香港成人在线视频| 亚洲av无码乱码国产麻豆 | 美女亚洲精品| 国产欧美一区二区色老头 | 亚瑟一区二区三区四区| 拔插拔插海外华人免费| 国产99久久久国产精品潘金 | 99视频在线免费观看| 亚洲91视频| 日本成人在线免费观看| 亚洲人成7777| 99精品在线视频观看| 欧美大尺度激情区在线播放| 国产成人久久精品一区二区三区| 久久av秘一区二区三区| 韩国成人在线视频| 日本福利片在线观看| 日韩视频永久免费| 午夜伦理大片视频在线观看| 亚洲最大的网站| 国内精品嫩模av私拍在线观看| 国产在线观看免费播放| 亚洲成人一区二区| 视频二区在线| 国产精品久久久久久久久久久久| 人人狠狠综合久久亚洲婷婷| 日韩大片一区二区| 亚洲欧美一区二区三区极速播放 | 欧美一二三不卡| av高清久久久| 加勒比在线一区| 中文字幕亚洲欧美日韩在线不卡| 视频欧美精品| 丁香色欲久久久久久综合网| 成人爱爱电影网址| 国产三级精品三级在线观看| 中文字幕日韩欧美精品在线观看| 一区二区三区| 欧洲精品一区二区三区久久| 久久久精品国产99久久精品芒果| a片在线免费观看| 免费不卡欧美自拍视频| 欧美顶级毛片在线播放| 黄色三级视频片| 尤物视频一区二区| 全色精品综合影院| 国产欧美精品日韩精品| 欧美福利在线| 欧美色图亚洲激情| 3d成人动漫网站| 国产乱码精品一区二三赶尸艳谈| 青青草久久网络| 国产自产2019最新不卡| 日本一级黄色大片| 最近2019免费中文字幕视频三 | 精品一区二区三区的国产在线播放| 免费视频一二三区| 亚洲天堂免费在线| 91蜜桃臀久久一区二区| mm1313亚洲国产精品无码试看| 一区二区三区精品视频在线|