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

刨根問底兒,看我如何處理 Too Many Open Files 錯誤!

開發 項目管理
如果你的項目中支持高并發,或者是測試過比較多的并發連接。那么相信你一定遇到過“Too many open files”這個錯誤。

[[381472]]

 本文轉載自微信公眾號「開發內功修煉」,作者張彥飛allen 。轉載本文請聯系開發內功修煉公眾號。   

如果你的項目中支持高并發,或者是測試過比較多的并發連接。那么相信你一定遇到過“Too many open files”這個錯誤。

這個錯誤的出現其實是正常的,因為每打開一個文件(包括socket),都需要消耗一定的內存資源。為了避免個別進程不受控制地打開了過多的文件而讓整個服務器崩潰,Linux 對打開的文件描述符數量有限制。

但是解決這個錯誤“奇葩”的地方在于,竟然需要修改三個參數:fs.nr_open、nofile(其實 nofile 還分 soft 和 hard) 和 fs.file-max。這幾個參數里有的是進程級的、有的是系統級的、有的是用戶進程級的,說一遍都覺得好亂。而且另外這幾個參數還有依賴關系,著實比較復雜。

不知道你,反正飛哥我是根本記不住哪個是哪個。每次遇到這種問題,還是都得再繼續 Google 一遍。但由于復雜性,所以其實網上的很多帖子里也都并沒有真正搞清楚。如果照搜索出來的文章改,稍有不慎就會踩雷,把機器搞出問題。

我在測試最大TCP連接數的時候就踩過兩次坑。

第一次是當時開了二十個子進程,每個子進程開啟了五萬個并發連接興高采烈準備測試百萬并發。結果倒霉催地忘了改 file-max 了。實驗剛開始沒多大一會兒就開始報錯“Too many open files”。但問題是這個時候更悲催的是發現所有的命令包括 ps、kill也同時無法使用了。因為它們也都需要打開文件才能工作。后來沒辦法,重啟系統解決的。

另外一次是重啟機器完了之后發現無法 ssh 登錄了。后來找運維工程部的同學報障以后才算是修復。最終發現是因為 hard nofile 比 fs.nr_open 高了,直接導致無法登陸。(其實我把 fs.nr_open 加大過,但是用的是 echo 命令 修改的。系統一重啟,還原了)。

一、找到源代碼

對于這三個家伙,我真的是無法言語更多了。所以我下定了決心,一定要把它們徹底搞清楚。怎么搞?那沒有比把它的源碼扒出來能看的更準確了。我們就拿創建 socket 來舉例,首先找到 socket 系統調用的入口

  1. //file: net/socket.c 
  2. SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) 
  3.  retval = sock_map_fd(sock, flags & (O_CLOEXEC | O_NONBLOCK)); 
  4.  if (retval < 0) 
  5.   goto out_release; 

我們看到 socket 調用 sock_map_fd 來創建相關內核對象。接著我們再進入 sock_map_fd 瞧瞧。

  1. //file: net/socket.c 
  2. static int sock_map_fd(struct socket *sock, int flags) 
  3.  struct file *newfile; 
  4.  
  5.  //在這里會判斷打開文件數是否超過 soft nofile 和 fs.nr_open 
  6.  //獲取 fd 句柄號 
  7.  int fd = get_unused_fd_flags(flags);   
  8.  if (unlikely(fd < 0)) 
  9.   return fd; 
  10.  
  11.  //在這里會判斷打開文件數是否超過 fs.file-max 
  12.  //創建 sock_alloc_file對象 
  13.  newfile = sock_alloc_file(sock, flags, NULL);  
  14.  if (likely(!IS_ERR(newfile))) { 
  15.   fd_install(fd, newfile); 
  16.   return fd; 
  17.  } 
  18.  
  19.  put_unused_fd(fd); 
  20.  return PTR_ERR(newfile); 

為什么創建一個socket又要申請 fd,又要申請 sock_alloc_file 呢?我們看一個進程打開文件時的內核數據結構圖就明白了

結合上圖,就能輕松理解這兩個函數的作用

  • get_unused_fd_flags:申請 fd,這只是一個在找一個可用的數組下標而已
  • sock_alloc_file:申請真正的 file 內核對象

二、找到進程級限制 nofile 和 fs.nr_open

接下來,我們再回到最大文件數量的判斷上。這里我直接把結論拋出來。get_unused_fd_flags 中判斷了 nofile、和 fs.nr_open。如果超過了這兩個參數,就會報錯。請看!

  1. //file: fs/file.c 
  2. int get_unused_fd_flags(unsigned flags) 
  3.  // RLIMIT_NOFILE 是 limits.conf 中配置的 nofile 
  4.  return __alloc_fd( 
  5.   current->files,  
  6.   0,  
  7.   rlimit(RLIMIT_NOFILE),  
  8.   flags 
  9.  ); 

在get_unused_fd_flags 中,調用了 rlimit(RLIMIT_NOFILE)。這個是讀取的 limits.conf 中配置的 soft nofile,代碼如下:

  1. //file: include/linux/sched.h 
  2. static inline unsigned long task_rlimit(const struct task_struct *tsk, 
  3.   unsigned int limit) 
  4.  return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_cur); 

通過當前進程描述訪問到 rlim[RLIMIT_NOFILE],這個對象的 rlim_cur 是 soft nofile(rlim_max 對應 hard nofile )。

緊接著讓我們進入 __alloc_fd() 中來

  1. //file: include/uapi/asm-generic/errno-base.h 
  2. #define EMFILE  24 /* Too many open files */ 
  3.  
  4. int __alloc_fd(struct files_struct *files, 
  5.         unsigned start, unsigned end, unsigned flags) 
  6.  ... 
  7.  error = -EMFILE; 
  8.  
  9.  //看要分配的文件號是否超過 end(limits.conf 中的 nofile) 
  10.  if (fd >= end
  11.   goto out
  12.  
  13.  error = expand_files(files, fd); 
  14.  if (error < 0) 
  15.   goto out
  16.  ... 

在__alloc_fd() 中會判斷要分配的句柄號是不是超過了 limits.conf 中 nofile 的限制。fd 是當前進程相關的,是一個從 0 開始的整數。如果超限,就報錯 EMFILE (Too many open files)。

這里注意個小細節,那就是進程里的 fd 是一個從 0 開始的整數。只要確保分配出去的 fd 編號不超過 limits.conf 中 nofile,就能保證該進程打開的文件總數不會超過這個數。

接著我們看到調用又會進入 expand_files:

  1. static int expand_files(struct files_struct *files, int nr) 
  2.  //2. 判斷打開文件數是否超過 fs.nr_open 
  3.  if (nr >= sysctl_nr_open)    
  4.   return -EMFILE; 

在 expand_files 我們看到,又到 nr (就是 fd 編號) 和 fs.nr_open 相比較了。超過這個限制,返回錯誤 EMFILE (Too many open files)。

由上可見,無論是和 fs.nr_open,還是和 soft nofile 比較,都用的是當前進程的文件描述符序號在比較的,所以這兩個參數都是進程級別的。

有意思的是和這兩個參數的比較幾乎是前后腳進行的,所以它兩的作用也基本一樣。Linux之所以分兩個參數來控制,那是因為 fs.nr_open 是系統全局的,而 nofile 則可以分用戶來分別控制。

所以,現在我們可以得出第一個結論。

結論1:soft nofile 和 fs.nr_open的作用一樣,它兩都是限制的單個進程的最大文件數量。區別是 soft nofile 可以按用戶來配置,而 fs.nr_open 所有用戶只能配一個。

三、找到系統級限制 fs.nr_open

我們在回過頭來看 sock_map_fd 中調用的另外一個函數 sock_alloc_file,在這個函數里我們發現它會和 fs.file-max 這個系統參數來比較。用啥比的呢?

  1. //file: fs/file_table.c 
  2. struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname) 
  3.  file = alloc_file(&path, FMODE_READ | FMODE_WRITE, 
  4.    &socket_file_ops); 
  5.  
  6. struct file *alloc_file(struct path *path, fmode_t mode, 
  7.   const struct file_operations *fop) 
  8.  file = get_empty_filp(); 
  9.  ... 
  10.  
  11. struct file *get_empty_filp(void) 
  12.  //files_stat.max_files就是 fs.file-max參數 
  13.  if (get_nr_files() >= files_stat.max_files  
  14.   && !capable(CAP_SYS_ADMIN) //注意這里root賬號并不受限制 
  15.   ) { 
  16.  } 

可見是用 get_nr_files() 來和 fs.file-max來比較的。根據該函數的注釋我們能看到它是當前系統打開的文件描述符總量。如下:

  1. /* 
  2.  * Return the total number of open files in the system 
  3.  */ 
  4. static long get_nr_files(void) 
  5.  ... 

另外注意下 !capable(CAP_SYS_ADMIN) 這行。看完這句,我才恍然大悟,原來 file-max 這個參數只限制非 root 用戶。開篇中我提到的文件打開過多時無法使用 ps,kill 等命令,是因為我用的非 root 賬號操作的。哎,下次再遇到這種文件直接用 root 去 kill 就行了。之前竟然丟臉地采用了重啟機器大法。。

所以現在我們可以得出另一個結論了。

結論2:fs.file-max: 整個系統上可打開的最大文件數,但不限制 root 用戶

總結一下

我們總結一下,其實在 Linux 上能打開多少個文件,限制有兩種:

  • 第一種,進程級別的,限制的是單個進程上可打開的文件數。具體參數是 soft nofile 和 fs.nr_open。它們兩個的區別是 soft nofile 可以不同用戶配置不同的值。而 fs.nr_open 在一臺 Linux 上只能配一次。
  • 第二種,系統級別的,整個系統上可打開的最大文件數,具體參數是fs.file-max。但是這個參數不限制 root 用戶。

另外這幾個參數之間還有耦合關系,因此還要注意以下三點:

  • 1、如果你想加大 soft nofile, 那么 hard nofile 也需要一起調整。因為如果 hard nofile 設置的低, 你的 soft nofile 設置的再高都沒用,實際生效的值會按二者里最低的來。
  • 2、如果你加大了 hard nofile,那么 fs.nr_open 也都需要跟著一起調整。如果不小心把 hard nofile 設置的比 fs.nr_open 大了,后果比較嚴重。會導致該用戶無法登陸。如果設置的是 * 的話,那么所有的用戶都無法登陸。
  • 3、還要注意如果你加大了 fs.nr_open,但是用的是 echo "xx" > ../fs/nr_open 的方式,剛改完你可能覺得沒問題。只要機器一重啟你的 fs.nr_open 設置就會失效,還是會無法登陸。

假如你想讓你的進程可以打開 100 萬個文件描述符,我覺得比較穩妥點的修改方法是干脆都直接用 conf 文件的方式來改。這樣比較統一,也比較安全。

  1. # vi /etc/sysctl.conf 
  2. fs.nr_open=1100000  //要比 hard nofile 大一點 
  3. fs.file-max=1100000 //多留點buffer 
  4. # sysctl -p 
  5. # vi /etc/security/limits.conf 
  6. *  soft  nofile  1000000 
  7. *  hard  nofile  1000000 

通過這種方式修改,你就可以繞過飛哥踩過的坑了。

 

責任編輯:武曉燕 來源: 開發內功修煉
相關推薦

2019-07-04 10:49:13

HTTPWebSocket協議

2015-07-02 15:04:53

CSS好奇心+

2017-01-09 16:35:25

socket函數fd備用

2022-04-20 11:41:45

Kafka數據解決方案

2013-10-10 15:41:38

綠色數據中心數據中心

2012-09-07 09:23:01

Win 8操作系統

2010-03-22 16:51:31

無線網絡穩定性

2023-04-26 00:06:22

服務器死循環報錯

2023-02-07 08:36:32

2020-11-13 07:14:55

Kafka消息中間件

2024-07-07 21:39:34

2019-08-09 11:25:01

Java虛擬機Java程序員

2019-06-18 15:20:01

MySQL連接錯誤數據庫

2024-09-04 16:00:24

PostgreSQL數據庫

2022-12-06 09:10:56

KVC原理數據篩選

2011-02-22 13:38:45

VSFTPD

2020-04-09 13:38:40

MySQL數據庫臟讀

2019-08-15 10:20:19

云計算技術安全

2011-05-05 10:32:54

激光打印機

2012-12-12 09:49:41

點贊
收藏

51CTO技術棧公眾號

亚洲国产精品va在线看黑人| 亚洲一区二区偷拍精品| 91精品国产自产在线观看永久| caoporn91| 免费看久久久| 欧美日韩国产不卡| 97超碰在线人人| xxxxx日韩| 国产高清无密码一区二区三区| 国产91精品视频在线观看| 国精产品一区一区| 欧美自拍视频| 日韩欧美中文一区二区| 日本精品久久久久中文字幕| 亚洲羞羞网站| 欧美激情一区在线| 久久免费99精品久久久久久| 午夜精品久久久久久久99老熟妇| 日韩av电影一区| 欧美精品久久久久久久免费观看| www成人啪啪18软件| 日韩成人动漫在线观看| 欧美一二区视频| 一本色道久久亚洲综合精品蜜桃 | 久久精品亚洲国产奇米99| 亚洲xxxxx| 亚洲视频在线观看免费视频| 母乳一区在线观看| 97在线视频一区| 欧美三级在线免费观看| 久久精品高清| 中国china体内裑精亚洲片| 成人手机在线免费视频| 成人一区视频| 老司机精品视频在线| 69**夜色精品国产69乱| www青青草原| 欧美激情偷拍自拍| 中文字幕亚洲一区二区三区| 国产成人av一区二区三区不卡| 99re8这里有精品热视频免费| 欧美日本在线一区| 污片在线免费看| 高清电影一区| 色偷偷久久人人79超碰人人澡| 一二三四视频社区在线| 免费在线看污片| 亚洲乱码国产乱码精品精的特点| 国产精品久久婷婷| 亚洲午夜国产成人| 91福利国产成人精品照片| 久草热视频在线观看| 97人澡人人添人人爽欧美| 亚洲制服欧美中文字幕中文字幕| 国产一二三四区在线观看| 欧美黑人激情| 亚洲欧美激情小说另类| 久久天天东北熟女毛茸茸| 成人免费高清| 亚洲一区二区三区国产| 91免费黄视频| 老司机2019福利精品视频导航| 日韩欧美中文字幕在线播放| 黄色一级片播放| 亚洲天堂免费电影| 在线日韩国产精品| 一区二区在线免费看| 成人在线视频www| 日韩欧美视频在线| 亚洲啪av永久无码精品放毛片| 国产精伦一区二区三区| 日韩福利在线播放| 国产一级久久久久毛片精品| 99久久婷婷| 色综合男人天堂| 国产成人亚洲精品自产在线 | wwwwxxxxx欧美| 日韩免费电影一区二区三区| 黄a在线观看| 亚洲国产精品尤物yw在线观看| 18禁免费无码无遮挡不卡网站| 欧美成人精品三级网站| 91精品麻豆日日躁夜夜躁| www男人天堂| 国产一区不卡| 九九热精品视频在线播放| 黄色小说在线观看视频| 天堂一区二区在线| 999在线观看免费大全电视剧| 全部免费毛片在线播放一个| 国产日韩一级二级三级| 国产日韩欧美大片| 精品日韩视频| 精品久久久久久综合日本欧美| www.狠狠爱| 91精品亚洲| 欧美做受高潮1| 国产欧美久久久| xfplay精品久久| 在线一区高清| 六月婷婷综合| 精品日本一线二线三线不卡| 国产熟女一区二区| 亚洲一本视频| 91精品国产自产在线观看永久| 四虎影院在线域名免费观看| 一区二区三区中文字幕电影| 无人在线观看的免费高清视频| 荡女精品导航| 久久国产精品久久久久| 中文字幕在线天堂| av影院午夜一区| 国产免费色视频| 日韩欧美一区二区三区在线观看 | 婷婷五月精品中文字幕| 久久一区91| 国产精品678| 亚洲人成色777777精品音频| 一区二区三区中文字幕精品精品| 三级a三级三级三级a十八发禁止| 欧美在线导航| 尤物精品在线| 欧美极品欧美精品欧美视频| 欧美性受xxx黑人xyx性爽| 成人av免费在线播放| 精品国产无码在线| 国产精品天堂蜜av在线播放| 亚洲精品自拍第一页| 国产一级特黄毛片| 国产激情精品久久久第一区二区 | 日本午夜精品视频在线观看| 精品久久一区二区三区蜜桃| 毛片在线导航| 日韩欧美一区二区久久婷婷| 亚洲伦理一区二区三区| 久久精品理论片| 亚洲精品国产精品久久| 日韩一级二级| 影音先锋日韩有码| 波多野结衣毛片| 国产亚洲污的网站| 已婚少妇美妙人妻系列| 欧美先锋资源| 国产欧美精品xxxx另类| av免费在线一区二区三区| 在线观看免费亚洲| 天天舔天天操天天干| 肉肉av福利一精品导航| 鲁鲁狠狠狠7777一区二区| 激情视频网站在线播放色| 亚洲国产精品推荐| 西西44rtwww国产精品| fc2成人免费人成在线观看播放| 777av视频| 欧美人成在线观看ccc36| 51ⅴ精品国产91久久久久久| 免费在线视频一级不卡| 91久久精品午夜一区二区| 色一情一交一乱一区二区三区| 视频一区二区欧美| 偷拍视频一区二区| 欧洲亚洲精品| 欧美片一区二区三区| 欧美熟女一区二区| 欧美视频在线观看免费| 最近中文字幕在线mv视频在线| 蜜桃av一区二区在线观看| 中文字幕久精品免| 99久久香蕉| 欧美做受高潮电影o| 最新真实国产在线视频| 337p亚洲精品色噜噜| 久一视频在线观看| 久久久久久久久蜜桃| 青青草原国产在线视频| 午夜精品婷婷| 欧美高清视频一区| 日韩av懂色| 97精品在线观看| wwwxxx在线观看| 欧美大肚乱孕交hd孕妇| 久久久久久久极品| 国产精品激情偷乱一区二区∴| 在线播放av中文字幕| 亚洲国产91| 丝袜足脚交91精品| jizz国产精品| 国产精品久久久久aaaa九色| 五月花成人网| 一区二区国产精品视频| 亚洲国产www| 欧美在线短视频| 精品无码av在线| 国产精品乱码久久久久久| 青青草视频网站| 老司机午夜精品| 中文字幕日本最新乱码视频| 亚洲精品小说| 青青成人在线| 国产精品调教| 91色中文字幕| 亚州一区二区三区| 77777亚洲午夜久久多人| 老司机在线永久免费观看| 亚洲乱码av中文一区二区| www.日韩在线观看| 欧美日本一区二区三区| 亚洲图片在线视频| 亚洲成人免费视| 26uuu成人网| 欧美国产丝袜视频| 污片免费在线观看| 蜜臀av国产精品久久久久| 人人妻人人添人人爽欧美一区| 久久一区二区三区喷水| 欧美一区二区三区四区夜夜大片| aaa国产精品| 91在线免费视频| www.久久.com| 国产精品美女久久久久久免费| 第一福利在线视频| 欧美国产日韩在线| 图片区小说区亚洲| www.日韩免费| 日韩精品黄色| 尤物九九久久国产精品的特点 | 欧美韩国日本在线| 国内精品久久久久久久97牛牛| 亚洲va韩国va欧美va精四季| 欧洲专线二区三区| 久久久免费看| 亚洲电影男人天堂| 国产在线一区二区三区欧美| 中文字幕一区二区三区四区久久 | 一区二区在线免费| www.99re7| 亚洲男人的天堂在线aⅴ视频| 日本成人免费在线观看| 国产精品私人影院| 黄大色黄女片18免费| 亚洲国产岛国毛片在线| 卡一卡二卡三在线观看| 欧美激情综合在线| www.xx日本| 亚洲男人电影天堂| 久久久无码精品亚洲国产| 一级日本不卡的影视| 久久这里只有精品国产| 午夜精品一区二区三区免费视频| 久久狠狠久久| 国产98在线|日韩| 4438全国亚洲精品观看视频| 97人人模人人爽人人喊38tv| 日韩精品三级| 国产精品二区三区| 欧美sss在线视频| 久久草视频在线看| 久久99高清| 91精品国产综合久久久久久丝袜| 精品黑人一区二区三区国语馆| 欧美一卡2卡3卡4卡| 99久久免费国产精精品| 91精品国产91久久久久久最新毛片| 无码aⅴ精品一区二区三区浪潮 | 国产精品欧美综合| 欧美在线视频全部完| 国产一区二区女内射| 国产日韩高清在线| 99久久久久久久久久| 久久久精品黄色| 久久免费手机视频| 亚洲美女视频在线观看| 久久综合激情网| 青春有你2免费观看完整版在线播放高清| 国产一区二区影视| 成人羞羞在线观看网站| 亚洲狠狠爱一区二区三区| 日韩福利影院| 久久夜色精品国产噜噜av小说| 国产精品激情av电影在线观看 | 一区二区视频在线| 99久久久久久久久久| 在线观看h网| 日韩午夜av在线| 欧美日韩亚洲综合在线 | 97在线播放视频| av一级黄色片| 欧美精品三区| 日韩午夜在线观看| 鬼打鬼之黄金道士1992林正英| 免费福利在线观看| 日韩视频免费在线观看| 色婷婷视频在线观看| 国产成人高潮免费观看精品| 成人51免费| 久久综合一区二区三区| 国产精品91一区二区三区| www.射射射| 国产又黄又大久久| 白白色免费视频| 性欧美大战久久久久久久久| 亚洲中文字幕在线一区| 日韩经典中文字幕在线观看| aa在线视频| 国产精品欧美一区二区| 女仆av观看一区| 日本黄网站色大片免费观看| 巨乳诱惑日韩免费av| 一区二区免费在线观看视频| 亚洲欧美一区二区三区极速播放 | 午夜久久久影院| 一区二区美女视频| 亚洲欧美日韩网| 国产精品一区hongkong| 成人激情春色网| 精品一区av| 黄色免费福利视频| 国产成人精品免费在线| 最新黄色av网址| 欧美视频一区二区| 黄色小视频在线免费观看| 97香蕉超级碰碰久久免费软件| 免费欧美网站| 热这里只有精品| 九九**精品视频免费播放| 色屁屁草草影院ccyy.com| 狠狠躁夜夜躁人人爽超碰91| 欧美 日韩 中文字幕| 欧美激情欧美狂野欧美精品| 欧美日韩黄色| 天天操天天干天天玩| 久久99久久99小草精品免视看| 亚洲国产日韩一区无码精品久久久| 精品国产精品三级精品av网址| 乱精品一区字幕二区| 欧美国产在线电影| 综合激情久久| 黄色一级在线视频| 99久久精品一区| 久久亚洲天堂网| 日韩av在线网页| 在线成人av观看| 日韩av电影免费在线| 免费成人你懂的| 中文字幕在线观看二区| 欧美日韩国产一级| 麻豆视频在线观看免费| 亚洲精品日韩激情在线电影| 综合天堂av久久久久久久| 国产男女无遮挡猛进猛出| 亚洲一区二区视频在线观看| 色哟哟中文字幕| 2019av中文字幕| 欧美人妖在线| 亚洲一区二区三区观看| 亚洲天堂免费看| 亚洲成熟女性毛茸茸| 久久久久在线观看| 天堂综合网久久| 国产免费人做人爱午夜视频| 国产欧美日韩精品一区| 91国内精品久久久| 欧美寡妇偷汉性猛交| 久久久精品国产**网站| 成人精品小视频| 18成人在线视频| 亚洲精品一区二区三区区别 | 国产精品一区在线免费观看| 丁香桃色午夜亚洲一区二区三区| 国产尤物在线视频| 亚洲性无码av在线| 国色天香久久精品国产一区| 久操网在线观看| 欧美国产综合色视频| 国产高潮在线观看| 日本成人免费在线| 亚洲激情久久| 国产精品成人一区二区三区电影毛片 | 在线永久看片免费的视频| 色狠狠久久aa北条麻妃| 一区二区三区视频播放| 韩国一区二区av| 亚洲精品老司机| 视频午夜在线| 亚洲va男人天堂| 久久不射网站| 欧美爱爱小视频| 在线观看欧美日韩国产| 亚洲超碰在线观看| 人妻丰满熟妇av无码区app| 亚洲精品中文字幕乱码三区| 黄色影院在线播放| 国产精品精品软件视频| 美女视频网站久久| 亚洲黄色小说图片| 欧美黑人性猛交| 久久一区二区三区喷水| 在线免费观看麻豆| 欧美不卡在线视频| 日本午夜精品久久久久|