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

聊聊容器與pod中的僵尸進程

運維 系統運維
在類UNIX系統中,僵尸進程是指完成執行(通過 exit 系統調用,或運行時發生致命錯誤或收到終止信號所致),但在操作系統的進程表中仍然存在其進程控制塊,處于"終止狀態"的進程。

[[423832]]

三種狀態的進程模型

按進程在執行過程中的不同情況至少要定義三種狀態:

  • 運行(running)態:進程占有處理器正在運行的狀態。進程已獲得CPU,其程序正在執行。在單處理機系統中,只有一個進程處于執行狀態;在多處理機系統中,則有多個進程處于執行狀態。
  • 就緒(ready)態:進程具備運行條件,等待系統分配處理器以便運行的狀態。當進程已分配到除CPU以外的所有必要資源后,只要再獲得CPU,便可立即執行,進程這時的狀態稱為就緒狀態。在一個系統中處于就緒狀態的進程可能有多個,通常將它們排成一個隊列,稱為就緒隊列。
  • 等待(wait)態:又稱阻塞態或睡眠態,指進程不具備運行條件,正在等待某個時間完成的狀態。也稱為等待或睡眠狀態,一個進程正在等待某一事件發生(例如請求I/O而等待I/O完成等)而暫時停止運行,這時即使把處理機分配給進程也無法運行,故稱該進程處于阻塞狀態。

引起進程狀態轉換的具體原因如下:

  • 運行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。
  • 等待態→就緒態:資源得到滿足;如外設傳輸結束;人工干預完成。
  • 運行態→就緒態:運行時間片到;出現有更高優先權進程。
  • 就緒態—→運行態:CPU 空閑時選擇一個就緒進程。

五種狀態的進程模型

五態模型在三態模型的基礎上增加了新建態(new)和終止態(exit)。

新建態:對應于進程被創建時的狀態,尚未進入就緒隊列。創建一個進程需要通過兩個步驟:1.為新進程分配所需要資源和建立必要的管理信息。2.設置該進程為就緒態,并等待被調度執行。

終止態:指進程完成任務到達正常結束點,或出現無法克服的錯誤而異常終止,或被操作系統及有終止權的進程所終止時所處的狀態。處于終止態的進程不再被調度執行,下一步將被系統撤銷,最終從系統中消失。終止一個進程需要兩個步驟:1.先等待操作系統或相關的進程進行善后處理(如抽取信息)。2.然后回收占用的資源并被系統刪除。

引起進程狀態轉換的具體原因如下:

  • NULL→新建態:執行一個程序,創建一個子進程。
  • 新建態→就緒態:當操作系統完成了進程創建的必要操作,并且當前系統的性能和虛擬內存的容量均允許。
  • 運行態→終止態:當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結。
  • 運行態→就緒態:運行時間片到;出現有更高優先權進程。
  • 運行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。
  • 就緒態→終止態:未在狀態轉換圖中顯示,但某些操作系統允許父進程終結子進程。
  • 等待態→終止態:未在狀態轉換圖中顯示,但某些操作系統允許父進程終結子進程。
  • 終止態→NULL:完成善后操作。

linux的進程狀態

無論進程還是線程,在 Linux 內核里其實都是用 task_struct{}這個結構來表示的。它其實就是任務(task),也就是 Linux 里基本的調度單位。

Linux進程狀態有:

  • TASK_RUNNING : 就緒態或者運行態,進程就緒可以運行,但是不一定正在占有CPU,對應進程狀態的R。
  • TASK_INTERRUPTIBLE:睡眠態,但是進程處于淺度睡眠,可以響應信號,一般是進程主動sleep進入的狀態,對應進程狀態S。
  • TASK_UNINTERRUPTIBLE:睡眠態,深度睡眠,不響應信號,典型場景是進程獲取信號量阻塞,對應進程狀態D。
  • TASK_ZOMBIE:僵尸態,進程已退出或者結束,但是父進程還不知道,沒有回收時的狀態,結束之前的一個狀態,對應進程狀態Z。
  • EXIT_DEAD:結束態,進程已經結束,也就是進程結束退出那一瞬間的狀態,對應進程狀態X。
  • TASK_STOPED:停止,調試狀態,對應進程狀態T。

孤兒進程

一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1,也有可能是容器中的init)所收養,并由init進程對它們完成狀態收集工作。孤兒進程是沒有父進程的進程,孤兒進程這個重任就落到了init進程身上,init進程就好像是一個民政局,專門負責處理孤兒進程的善后工作。每當出現一個孤兒進程的時候,內核就把孤 兒進程的父進程設置為init,而init進程會循環地wait()它的已經退出的子進程。這樣,當一個孤兒進程凄涼地結束了其生命周期的時候,init進程就會代表黨和政府出面處理它的一切善后工作。因此孤兒進程并不會有什么危害。

僵尸進程

在類UNIX系統中,僵尸進程是指完成執行(通過 exit 系統調用,或運行時發生致命錯誤或收到終止信號所致),但在操作系統的進程表中仍然存在其進程控制塊,處于"終止狀態"的進程。我們從上面的概念中得知,僵尸進程仍然存在在進程表中。進程會占用系統系統資源,僵尸進程過多會導致資源泄露,最主要的資源就是PID。我們來看一下linux系統中的PID。這個最大值可以我們在 /proc/sys/kernel/pid_max 這個參數中看到。

  1. [root@k8s-dev]# cat /proc/sys/kernel/pid_max 
  2. 32768 

Linux 內核在進行初始化時,會根據CPU 的數目對 pid_max 進行設置。

  • 如果CPU 的數目小于等于32,那么 pid_max 會被設置為32768;
  • 如果CPU 的數目大于32,那么 pid_max = 1024 * (CPU 數目)。

所以如果超過這個最大值,那么系統就無法創建出新的進程了,比如你想 SSH 登錄到這臺機器上就不行了。清理僵尸進程:了解了僵尸進程的危害,我們來看看怎么清理僵尸進程:收割僵尸進程的方法是通過kill命令手工向其父進程發送SIGCHLD信號。如果其父進程仍然拒絕收割僵尸進程,則終止父進程,使得init進程收養僵尸進程。init進程周期執行wait系統調用收割其收養的所有僵尸進程。為避免產生僵尸進程,實際應用中一般采取的方式是:

將父進程中對SIGCHLD信號的處理函數設為SIG_IGN(忽略信號);

  • fork兩次并殺死一級子進程,令二級子進程成為孤兒進程而被init所“收養”、清理。
  • docker容器中的進程

容器中的PID

在Docker中,進程管理的基礎就是Linux內核中的PID名空間技術。在不同PID名空間中,進程ID是獨立的;即在兩個不同名空間下的進程可以有相同的PID。

Linux內核為所有的PID名空間維護了一個樹狀結構:最頂層的是系統初始化時創建的root namespace(根名空間),再創建的新PID namespace就稱之為child namespace(子名空間),而原先的PID名空間就是新創建的PID名空間的parent namespace(父名空間)。通過這種方式,系統中的PID名空間會形成一個層級體系。父節點可以看到子節點中的進程,并可以通過信號等方式對子節點中的進程產生影響。反過來,子節點不能看到父節點名空間中的任何內容,也不可能通過kill或ptrace影響父節點或其他名空間中的進程。

在Docker中,每個Container都是Docker Daemon的子進程,每個Container進程缺省都具有不同的PID名空間。通過名空間技術,Docker實現容器間的進程隔離。另外Docker Daemon也會利用PID名空間的樹狀結構,實現了對容器中的進程交互、監控和回收。注:Docker還利用了其他名空間(UTS,IPC,USER)等實現了各種系統資源的隔離,由于這些內容和進程管理關聯不多,本文不會涉及。

容器退出

當創建一個Docker容器的時候,就會新建一個PID名空間。容器啟動進程在該名空間內PID為1。當PID1進程結束之后,Docker會銷毀對應的PID名空間,并向容器內所有其它的子進程發送SIGKILL。

當執行docker stop命令時,docker會首先向容器的PID1進程發送一個SIGTERM信號,用于容器內程序的退出。如果容器在收到SIGTERM后沒有結束, 那么Docker Daemon會在等待一段時間(默認是10s)后,再向容器發送SIGKILL信號,將容器殺死變為退出狀態。這種方式給Docker應用提供了一個優雅的退出(graceful stop)機制,允許應用在收到stop命令時清理和釋放使用中的資源。

docker kill可以向容器內PID1進程發送任何信號,缺省是發送SIGKILL信號來強制退出應用。

容器中的僵尸進程

產生原因

容器化后,由于單容器單進程,已經沒有傳統意義上的 init 進程了。應用進程直接占用了 pid 1 的進程號。從而導致以下兩個問題。

常見的使用是 docker run my-container script 。給 docker run進程發送SIGTERM 信號會殺掉 docker run 進程,但是容器還在后臺運行。

2.當進程退出時,它會變成僵尸進程,直到它的父進程調用 wait()( 或其變種 ) 的系統調用。process table 里面會把它的標記為 defunct 狀態。一般情況下,父進程應該立即調用 wait(), 以防僵尸進程時間過長。

如果父進程在子進程之前退出,子進程會變成孤兒進程, 它的父進程會變成 PID 1。因此,init進程就要對這些進程負責,并在適當的時候調用 wait() 方法。通常情況下,大部分應用進程不會處理偶然依附在自己進程上的隨機子進程,所以在容器中,會出現許多僵尸進程。

解決方案

解決這個的辦法就是pid為1的跑一個支持信號轉發且支持回收孤兒僵尸進程的進程就行了,為此有人開發出了tini項目,感興趣可以github上搜下下,現在tini已經內置在docker里了。使用tini可以在docker run的時候添加選項–init即可,底層我猜測是復制docker-init到容器的/dev/init路徑里然后啟動entrypoint cmd,大家可以在run的時候測試下上面的步驟會發現根本不會有僵尸進程遺留。這里不多說,如果是想默認使用tini可以把tini構建到鏡像里(例如k8s目前不支持docker run 的--init,所以需要把tini做到鏡像里),參照jenkins官方鏡像dockerfile和tini的github地址文檔 https://github.com/krallin/tini

k8s pod中的僵尸進程

k8s 可以將多個容器編排到一個 pod 里面,共享同一個 Linux Namespace。這項技術的本質是使用 k8s 提供一個 pause 鏡像,也就是說先啟動一個 pause 容器,相當于實例化出 Namespace,然后其他容器加入這個 Namespace 從而實現 Namespace 的共享。我們來介紹一下 pause。

pause 是 k8s 在 1.16 版本引入的技術,要使用 pause,我們只需要在 pod 創建的 yaml 中指定 shareProcessNamespace 參數為 true,如下:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: nginx 
  5. spec: 
  6.   shareProcessNamespace: true 
  7.   containers: 
  8.   - name: nginx 
  9.     image: nginx 
  10.   - name: shell 
  11.     image: busybox 
  12.     securityContext: 
  13.       capabilities: 
  14.         add
  15.         - SYS_PTRACE 
  16.     stdin: true 
  17.     tty: true 

attach到pod中,ps查看進程列表:

  1. / # kubectl attach POD -c CONTAINER  
  2. / # ps ax 
  3. PID   USER     TIME  COMMAND 
  4.     1 root      0:00 /pause 
  5.     8 root      0:00 nginx: master process nginx -g daemon off
  6.    14 101       0:00 nginx: worker process 
  7.    15 root      0:00 sh 
  8.    21 root      0:00 ps ax 

我們可以看到 pod 中的 1 號進程變成了 /pause,其他容器的 entrypoint 進程都變成了 1 號進程的子進程。這個時候開始逐漸逼近事情的本質了:/pause 進程是如何處理 將孤兒進程的父進程置為 1 號進程進而避免僵尸進程的呢?

pause 鏡像的源碼如下:pause.c

  1. #include <signal.h> 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4. #include <string.h> 
  5. #include <sys/types.h> 
  6. #include <sys/wait.h> 
  7. #include <unistd.h> 
  8.  
  9. static void sigdown(int signo) { 
  10.   psignal(signo, "Shutting down, got signal"); 
  11.   exit(0); 
  12. // 關注1 
  13. static void sigreap(int signo) { 
  14.   while (waitpid(-1, NULL, WNOHANG) > 0) 
  15.     ; 
  16.  
  17. int main(int argc, char **argv) { 
  18.   int i; 
  19.   for (i = 1; i < argc; ++i) { 
  20.     if (!strcasecmp(argv[i], "-v")) { 
  21.       printf("pause.c %s\n", VERSION_STRING(VERSION)); 
  22.       return 0; 
  23.     } 
  24.   } 
  25.  
  26.   if (getpid() != 1) 
  27.     /* Not an error because pause sees use outside of infra containers. */ 
  28.     fprintf(stderr, "Warning: pause should be the first process\n"); 
  29.  
  30.   if (sigaction(SIGINT, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0) 
  31.     return 1; 
  32.   if (sigaction(SIGTERM, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0) 
  33.     return 2; 
  34.   // 關注2 
  35.   if (sigaction(SIGCHLD, &(struct sigaction){.sa_handler = sigreap, 
  36.                                              .sa_flags = SA_NOCLDSTOP}, 
  37.                 NULL) < 0) 
  38.     return 3; 
  39.  
  40.   for (;;) 
  41.     pause(); // 編者注:該系統調用的作用是wait for signal 
  42.   fprintf(stderr, "Error: infinite loop terminated\n"); 
  43.   return 42; 

重點關注一下void sigreap(int signo){...}和if (sigaction(SIGCHLD,...) ,這個不就是我們上面說的 除了這種方式外,還可以通過異步的方式來進行回收,這種方式的基礎是子進程結束之后會向父進程發送 SIGCHLD 信號,基于此父進程注冊一個 SIGCHLD 信號的處理函數來進行子進程的資源回收就可以了。

SIGCHLD 信號的處理函數核心就是這一行 while (waitpid(-1, NULL, WNOHANG) > 0) ,其中各參數示意如下:

  • -1:meaning wait for any child process.
  • NULL:?
  • WNOHANG :return immediately if no child has exited.

結論

得出pause 容器的兩個最重要的特性:

  • 在 pod 中作為容器共享namespace的基礎
  • 作為 pod 內的所有容器的父容器,扮演 init 進程(即systemd)的作用。

最后

通過這篇文章的學習,大家能解決容器中出現僵尸進程的問題。

本文轉載自微信公眾號「運維開發故事」

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2024-08-26 08:39:26

PHP孤兒進程僵尸進程

2022-01-19 08:01:13

Linuxdocker容器

2024-02-05 18:23:23

父進程應用程序程序

2019-11-20 09:15:53

KubernetesPod

2017-12-15 09:40:47

Linux僵尸進程

2022-02-07 11:55:00

linux進程線程

2021-10-25 12:23:06

Linux僵尸進程

2020-10-10 11:02:09

Linux 系統 數據

2021-11-22 08:00:00

Kubernetes容器集群

2021-11-08 10:30:30

Linux僵尸命令

2021-11-06 10:17:38

Linux僵尸進程

2023-11-03 08:22:09

Android系統算法

2020-10-22 13:49:37

Docker容器僵死進程

2020-07-14 07:27:48

容器IoCSpring

2024-05-09 09:55:08

2022-10-12 09:01:52

Linux內核線程

2025-05-29 08:10:00

Linux進程系統

2022-03-04 08:45:11

Docker開源Linux

2021-03-28 08:32:58

Java

2025-03-20 09:54:47

點贊
收藏

51CTO技術棧公眾號

欧美精品亚洲| 欧洲精品毛片网站| 99久久人妻精品免费二区| 色黄视频在线观看| 亚洲国产精品精华液2区45| 91免费人成网站在线观看18| 久久亚洲AV无码| 精品高清久久| 99re热视频精品| 国产精品亚洲第一区| 久久免费黄色网址| 欧美午夜精品一区二区三区电影| 欧美成人性战久久| 亚洲天堂网一区| xxxcom在线观看| 国产乱理伦片在线观看夜一区| 午夜精品久久久久久久99黑人| 日本欧美一区二区三区不卡视频| 热三久草你在线| 亚洲欧美一区二区三区极速播放| 久99久视频| av综合在线观看| 日本美女一区二区三区| 性色av一区二区咪爱| 四虎884aa成人精品| 国产乱码精品一区二区亚洲| 日韩视频免费观看高清完整版在线观看| 激情六月丁香婷婷| 九色porny丨入口在线| 亚洲人成7777| 中文字幕中文字幕在线中心一区 | 亚洲国产一区二区三区在线观看 | 日韩在线视频免费播放| 中文字幕日韩一区二区不卡| 亚洲无av在线中文字幕| 涩视频在线观看| 电影一区二区三区久久免费观看| 在线亚洲精品福利网址导航| 欧美日韩二三区| 毛片大全在线观看| 亚洲精品少妇30p| 天天综合五月天| 婷婷在线视频| 国产精品国产成人国产三级 | 欧洲另类一二三四区| 女人天堂av手机在线| 国产蜜臀在线| 一级做a爱片久久| 男人的天堂视频在线| 黄色片网站在线| 国产精品国产三级国产aⅴ无密码| 日本视频一区在线观看| 国产女主播在线直播| 国产亚洲一区二区三区在线观看| 国产va免费精品高清在线| 国产真实乱人偷精品视频| 亚洲欧美综合| 欧美华人在线视频| 国产无码精品一区二区| 99国产精品自拍| 国产91精品高潮白浆喷水| 亚洲天堂视频网站| 日韩极品在线观看| 国产精品影片在线观看| 97精品人妻一区二区三区| 国内精品写真在线观看| 91传媒视频免费| 蜜桃av噜噜一区二区三区麻豆| 丁香亚洲综合激情啪啪综合| 奇米4444一区二区三区 | 一区二区三区免费在线观看视频 | 久久精品国产亚洲av麻豆色欲| 伊人狠狠色j香婷婷综合| 国内精品久久久久久久久| 国产香蕉视频在线| 日韩avvvv在线播放| 国产日韩精品入口| 天天操夜夜操视频| 久久福利影视| 欧美激情精品久久久久久久变态 | 欧美三级一区二区| 日本人69视频| 一级毛片精品毛片| 日韩黄色高清视频| 影音先锋男人看片资源| 欧美黄在线观看| 1769国产精品| 91国产免费视频| 成人h动漫精品一区二| 欧美乱偷一区二区三区在线| 福利片在线观看| 亚洲精品你懂的| 成人免费视频91| 91成人在线| 日韩欧美aaaaaa| 99久久人妻无码精品系列| 99久久久久久中文字幕一区| 欧美激情网站在线观看| 中文字幕免费在线看| 成人久久18免费网站麻豆| 日韩免费av电影| free性欧美| 8x8x8国产精品| a视频免费观看| 欧美91大片| 国产精品一区=区| 神马午夜电影一区二区三区在线观看 | 久久婷婷蜜乳一本欲蜜臀| 欧美极品少妇与黑人| 国产精品第六页| 成人av在线网站| 最新精品视频| 3d欧美精品动漫xxxx无尽| 欧美刺激午夜性久久久久久久| 亚洲午夜久久久久久久国产| 一区在线免费| 3d动漫精品啪啪一区二区三区免费| 欧美日韩伦理片| 亚洲一区二区三区国产| 五月天视频在线观看| 男男gay无套免费视频欧美| 久久成人精品一区二区三区| 国产三级理论片| 久久新电视剧免费观看| 国产精华一区二区三区| 丝袜美腿美女被狂躁在线观看| 婷婷开心久久网| 爱情岛论坛亚洲自拍| 日韩欧美视频专区| 国产精品第三页| 欧美一区二区三区少妇| 久久精品亚洲精品国产欧美| 无码熟妇人妻av在线电影| sm捆绑调教国产免费网站在线观看| 欧美性视频一区二区三区| 嫩草影院国产精品| 视频福利一区| 国内揄拍国内精品少妇国语| 精品久久久免费视频| 成人免费在线视频观看| jizz18女人| 成人羞羞在线观看网站| 国产91在线播放| 韩国三级av在线免费观看| 欧美性感美女h网站在线观看免费| 成人啪啪18免费游戏链接| 欧美va天堂在线| 成人在线看片| 成人超碰在线| 亚洲黄页网在线观看| 国产精品不卡av| 成人app下载| 久久久久久久午夜| 神马午夜久久| 国产成人高潮免费观看精品| 黄色在线播放| 欧美亚日韩国产aⅴ精品中极品| 亚洲一级黄色录像| 精品一区精品二区高清| 日韩中文在线字幕| av成人资源网| 欧美性资源免费| 国产日本在线视频| 91麻豆精品91久久久久久清纯| 国产女人18水真多毛片18精品| 国产麻豆成人传媒免费观看| 99久热在线精品视频| 国产精品18hdxxxⅹ在线| 91精品国产高清久久久久久久久 | 久久品道一品道久久精品| 国产又黄又猛视频| 色小子综合网| av在线不卡一区| 福利在线免费视频| 伊人久久综合97精品| 国产精品色综合| 亚洲成人tv网| 美女100%无挡| 国产在线一区二区| 每日在线观看av| 波多野结衣在线播放一区| 国产欧美在线看| 成人性生交大片免费看网站| 亚洲欧美制服中文字幕| 国产精品乱码一区二区| 亚洲成人免费视频| 成人午夜免费影院| 99久久婷婷国产综合精品电影 | 亚洲欧美中文在线视频| 亚洲综合精品国产一区二区三区| 亚洲精品美国一| 男人舔女人下部高潮全视频| 国产精选一区二区三区| 欧美亚洲一二三区| 888久久久| 欧美日韩国产一二| 综合激情五月婷婷| 国产精品国语对白| 精精国产xxxx视频在线中文版| 一区二区亚洲精品国产| 免费国产精品视频| 69堂精品视频| 69亚洲精品久久久蜜桃小说 | 99视频一区二区| 五月婷婷丁香色| 国产一区二区你懂的| eeuss中文| 精品毛片免费观看| 国产一区精品视频| 欧美成人精品一级| 国产欧美日韩免费| videos性欧美另类高清| 久久99精品久久久久久青青91| 国产一级片在线播放| 亚洲第一网中文字幕| 九九视频在线观看| 欧美—级在线免费片| 亚洲少妇18p| 国产乱子轮精品视频| 国产喷水theporn| 午夜在线一区二区| 九九爱精品视频| 欧美激情第8页| 日本精品免费视频| 天天色综合色| 亚洲精品欧美精品| 精品一区二区三区中文字幕老牛| 国模一区二区三区私拍视频| 日韩中文字幕| 欧美激情综合色综合啪啪五月| av在线之家电影网站| 亚洲欧美国产va在线影院| 人人妻人人澡人人爽人人欧美一区 | 日本亚州欧洲精品不卡| 91免费福利视频| 天天综合在线观看| 成人h猎奇视频网站| 欧美成a人片免费观看久久五月天| 国产精品av在线播放| 日韩av超清在线观看| 日本久久久久久久| 日韩免费小视频| 国产精品高潮视频| 欧美日韩五区| 国产伦精品免费视频| 日本精品不卡| 久久精品国产清自在天天线| 国产色在线 com| 永久免费精品影视网站| 成年人免费在线视频| 中文字幕亚洲欧美| 亚洲精品国产精| 欧美www视频| 亚洲欧美国产高清va在线播放| 日韩午夜在线影院| 国精产品一品二品国精品69xx| 精品日本一线二线三线不卡| 亚洲精品一级片| 亚洲精品suv精品一区二区| 西西人体44www大胆无码| 日韩精品一二三四区| 免费在线高清av| 色天天综合狠狠色| 国产成人l区| 69国产精品成人在线播放| 午夜影院在线播放| 国产精品一区二区久久国产| 不卡一区视频| 国产厕所精品在线观看| 欧美影院天天5g天天爽| 日韩在线三区| 一区二区三区中文| 欧美日本视频在线观看| 欧美aa在线视频| 中文字幕在线观看视频www| www.亚洲国产| 最新中文字幕av| 亚洲精品成人少妇| 日韩久久久久久久久| 欧美午夜电影一区| 精品人妻一区二区三区蜜桃| 精品夜色国产国偷在线| 欧美成年黄网站色视频| 国模精品视频一区二区| 99欧美精品| 国产亚洲一区在线播放 | av在线不卡免费看| 一区二区三区四区免费| 一区二区三区中文字幕| 欧美精品韩国精品| 欧美一区二区在线免费观看| 天天干天天摸天天操| 日韩在线观看免费网站| 久草在线资源福利站| 国产欧美va欧美va香蕉在线| 国产一区二区三区亚洲| 影音欧美亚洲| 亚洲欧美日韩一区在线观看| 亚洲涩涩在线观看| 91麻豆免费在线观看| 中文字幕av播放| 色999日韩国产欧美一区二区| 精品国产av 无码一区二区三区| 亚洲精品自拍第一页| 中文字幕在线三区| 国产精品久久久久久久av电影| av不卡一区| avove在线观看| 蜜桃av一区二区在线观看| av2014天堂网| 亚洲综合一区二区三区| 中文字幕乱码人妻无码久久| 亚洲精品视频在线观看视频| 中文字幕免费高清电视剧网站在线观看| 国产91在线播放| 欧美成人午夜77777| 亚洲精品天堂成人片av在线播放| 蜜桃视频免费观看一区| 国产男男chinese网站| 久久久国产精华| 午夜偷拍福利视频| 欧美一区二区三区日韩| 日本最新在线视频| 国产成人涩涩涩视频在线观看| 国产欧美一区二区三区米奇| 成年人三级视频| 精品在线免费视频| 精品在线观看一区| 欧美亚洲精品一区| 成人jjav| 国产精品电影久久久久电影网| 欧美福利在线播放网址导航| 精品人妻少妇一区二区| 丁香六月久久综合狠狠色| 国产女人被狂躁到高潮小说| 无吗不卡中文字幕| 亚洲第一天堂影院| 欧美肥老妇视频| 天堂av一区| 国产xxxx振车| 懂色av一区二区三区免费看| 青娱乐国产在线| 欧美一区2区视频在线观看| 成人黄色在线电影| 99精彩视频在线观看免费| 欧美成人一区二免费视频软件| 亚洲一区二区三区四区精品| 最新热久久免费视频| 国产麻豆免费观看| 久久91精品国产91久久久| 亚洲精品国产九九九| 无码人妻少妇伦在线电影| 91视频免费播放| 最近免费中文字幕大全免费版视频| 亚洲欧洲日产国产网站| 欧美日韩免费观看视频| 亚洲啪啪av| 国产乱一区二区| 精品一区在线视频| 精品呦交小u女在线| 91精品影视| 在线观看日韩羞羞视频| 国产精品18久久久久久久网站| 天堂久久久久久| 欧美视频13p| www在线播放| 91嫩草在线视频| 国产一区二区三区四区三区四| 中文字幕在线视频播放| 日韩欧美亚洲范冰冰与中字| 国产69久久| 亚洲影院高清在线| 制服诱惑一区二区| 精品人妻中文无码av在线| 欧美一区二区三区爱爱| h片精品在线观看| 手机成人在线| 粉嫩av一区二区三区在线播放 | 精品一区二区6| 日韩亚洲欧美一区| 自拍视频在线看| 99亚洲精品视频| 99综合电影在线视频| 一级aaaa毛片| 亚洲91精品在线观看| 日韩精品电影| 你懂得在线视频| 欧美精品日韩综合在线| free性护士videos欧美| 亚洲国产一区二区三区在线 | 欧美日韩dvd在线观看| brazzers在线观看| 亚洲精品一区二| 99国产精品久久久久久久久久| 中文字幕乱码无码人妻系列蜜桃| 久久91精品国产91久久久| 欧美精品一区二区三区中文字幕| 国产精品欧美性爱| 欧美日韩情趣电影| 手机在线观看av|