黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

復雜應用環境下監控Oracle數據庫性能

瀏覽:14日期:2023-11-14 09:51:03
前言 : 在單一的應用環境或業務相對簡單的系統下,系統性能問題 , 瓶頸所在往往是不言自明,解決問題的前提 -- 定位問題是比較輕易解決的 , 但在一個復雜的應用環境下,各應用系統對系統資源往往是一種共享和競爭的關系,而且應用系統之間也可能存在著共生或制約的關系,資源利益的均衡往往是此消彼長,而這種環境下的應用系統一旦出現資源競爭,系統的瓶頸往往難以斷定,甚至會發生不同應用設計人員之間互相推諉責任的扯皮現象 , 本文僅就此問題對 Linux 平臺下各應用系統對 Oracle 數據庫的使用情況作一探討,ORACLE 數據庫的 TUNING 不是一個可以一言以蔽的主題,本文無意概全,內容僅涉及問題的定位及各應用對數據庫資源的共享與競爭問題。 本文試驗及問題取證的環境 : RedHat6.1 Web server(Apache1.3.9+PHP4.0)+Client/Server(Pro*C) 之 Server 端 RedHat6.2 + Oracle8.1.6.1.0 RedHat7.1 Web server(Apache1.3.20+PHP4.06) + Oracle8.1.7.0.0 為方便問題的討論 , 應用系統已做簡化 , 競爭方僅包括一個 Pro*C 的 daemon 程序作為 C/S 模式的服務端 , 和由 Apache+PHP 所支持的 WEB 網站業務。 1. 單個 SQL 語句的處理 首先,最簡單的情況莫過于單個 SQL 語句的分析 , SQL 語句的優化也是數據庫優化的一個最直接最立竿見影的因素 . SQL 語句的性能監控從監控工具來說大致可分為由高級語言提供和由 ORACLE 本身提供 , 高級語言以典型的應用 C 語言和 WEB 開發語言 PHP 為例 , C 語言中可以用 gettimeofday 函數來在某一數據庫操作之前和之后分別獲取一個時間值 , 將兩個時間值之差做為衡量該數據庫操作的效率 , 在 PHP 中 , 也可以用 gettimeofday, 操作方法當然與 C 語言中有所不同 . 當然 , PHP 中也有其它一些函數可以達到同樣的時間精度 , 關于時間精度的考慮 , 不能簡單以大小衡量微秒級的時間數值 , 因為時鐘中斷的時間間隔從根本上決定了時間計算所能達到的精度 , 此外 , 操作系統本身對進程的時間片分配 , 及進程切換的開銷等因素也在一定程度上影響時間數據的意義 . 所以 , 以下時間的計算最理想的情況是對同一操作在盡可能避免緩存的情況下進行多次的循環操作 , 取總的時間值加以平均,從而得到比較接近真實情況的時間值。 C 語言的例子 : #define TV_START 0 #define TV_END 1 int how_long(int cmd, char *res); strUCt CMD_TIME{ int times; /* times occured within specified package number */ struct timeval time; /* total time consumed by the cmd */ }; void foo() { int id; how_long(TV_START, NULL); EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL WHENEVER NOT FOUND CONTINUE; EXEC SQL select user_id into :id from users where name='slimzhao';2; how_long(TV_END, time_consume); puts(time_consume); } int how_long(int cmd, char *res) /* return value: -1 error, 0 sucess , res: 20 bytes is enough */ { static struct timeval before, after; if(cmd == TV_START) { gettimeofday(&before, NULL); return 0; } else if(cmd == TV_END) { gettimeofday(&after, NULL); if(res) { if(after.tv_usec > before.tv_usec) { sprintf(res, '%ld %ld', after.tv_sec - before.tv_sec, after.tv_usec - before.tv_usec); } else { sprintf(res, '%ld %ld', after.tv_sec - before.tv_sec - 1, 1000000 + after.tv_usec - before.tv_usec); } } return 0; } else { return -1; } }下面是一個 PHP 的例子( 為簡化起見 , 程序的錯誤檢查被忽略) <? include '<path_to_file>/how_long.inc'; how_long(TV_START, $timestr); $conn = OCILogon('username', 'passWord', 'dblink'); $stmt = OCIParse($conn, 'select ID from users where name='slimzhao''); OCIDefineByName($stmt, ID, $id); OCIExecute($stmt); OCIFetch($stmt); OCIFreeStatement($stmt); OCILogoff($conn); how_long(TV_END, $timestr); echo ' 用戶 ID: $id , 該操作消耗時間 :$timestr<br>'; ?> 其中 how_long 函數的 PHP 版本如下 : <? # 作者 : slimzhao@21cn.com # 當前維護人 : slimzhao@21cn.com # 創建日期 : 2001.12.04 00:18:00 # 目的 , 在一個操作之前或之后調用該函數的不同版本 , 將得到一個記載了該操作 # 耗費時間的字符串 , 該函數本身的開銷不計入其中 . define('TV_START', 0); define('TV_END', 1); function how_long($operation, &$str) # 返回值 : 0-- 成功 , -1-- 傳遞了非法的參數 . { global $before_SQL, $after_SQL; if($operation == TV_START) { $before_SQL = gettimeofday(); return 0; } else if($operation == TV_END) { $after_SQL = gettimeofday(); if($before_SQL['usec'] > $after_SQL['usec']) { $str = ($after_SQL['sec'] - $before_SQL['sec'] - 1).' 秒 '. ($after_SQL['usec'] + 1000*1000 -$before_SQL['usec']).' 微秒 '; } else { $str = ($after_SQL['sec'] - $before_SQL['sec']).' 秒 '. ($after_SQL['usec']-$before_SQL['usec']).' 微秒 '; } } else { return -1; } } ?>上面的數據庫操作開銷的計算僅限于對時間消耗的計算 , 對同時使用同一數據庫的其它應用軟件的影響 , 對磁盤操作的頻繁程度 , 數據庫操作所采取的具體策略等等因素 , 都未考慮在內 , 高級語言也不可能提供這樣的參考數據 . 而數據庫本身提供的監測手段彌補了這一不足 . 最簡單的操作控制臺 : sqlplus SQL> set timing on將為每次執行的數據庫操作進行計時 , 精度為 1/100 秒 , 筆者對該功能的使用中發現其時間的計算也有一定的偏差 . 而且時間偏差很大 , 嚴格說來 , 已不屬于誤差的范圍 , 該歸錯誤了 , 下面是一個例子中得到的數據 : [bash$] cat tmp.sql set timing on host date; select count(*) from users; host date; SQL> @tmp.sql Wed Dec 5 00:21:01 CST 2001 COUNT(*) ---------- 1243807 Elapsed: 00:00:06.16 Wed Dec 5 00:21:05 CST 2001從系統的時間差來看 , 為 4 秒左右 , 但 ORACLE 卻報告了 6.16 秒 ! 假如說 ORACLE 工具在時間計算上太差強人意的話 , 在 SQL 語句的執行方案上可算是對 SQL 語句如何執行的最權威的詮釋了 . 解讀這樣的信息需要對 ORACLE 內部對 SQL 操作的過程有一定了解 , 下面是該功能的一樣典型示例 : SQL> set autotrace on SQL> select count(*) from users; COUNT(*) ---------- 1243807 Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=1) 1 0 SORT (AGGREGATE) 2 1 INDEX (FAST FULL SCAN) OF 'USER_BASEINFO$NAME' (UNIQUE) (Cost=4 Card=1244840) Statistics 0 recursive calls 4 db block gets 3032 consistent gets 3033 physical reads 0 redo size 370 bytes sent via SQL*Net to client 424 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processedExecution Plan 下的信息顯示 ORACLE 制定了一個什么樣的計劃來完成 SQL 操作的 ,SQL 語言是一種 4GL 語言 , 其特點是告訴系統做什么 , 而不提供如何做的信息 . 當然 , 最終的具體工作總得有人做的 , 只是由數據庫自動制定而不是程序員人為指定一個具體的操作步驟 , 制作這個步驟當然要有所依據 , ORACLE 有兩個基本原則來決定如何優化 : cost-based( 基于開銷的優化 ) 和 rule-based( 基于規則的優化 ). 基于開銷的優化的工作方式依靠于數據庫對 SQL 語句所操作的數據對象 ( 可簡單認為就是表 ) 的數據特征的統計特性進行收集和分析 . 收集分析的工作由 DBA 來定期執行 , 時間間隔依數據變化頻率而定 , 以保持統計數據一定的準確性 , 具體操作請參照 analyze 語句 . Oracle 預備在將來的版本中取消對基于開銷的優化方案的支持 , 因為這種方案需要大量的數據收集與分析工作 , 且總會有一定的誤差 , 這造成最終的執行方案往往不是最優的。 基于規則的優化則是依據一些數據操作效率的規則進行選擇 , 優化的核心在于效率 , 時間上盡可能短 , 空間上盡可能少進行 IO 操作 . 兩種優化方案都絕非十全十美 , ORACLE 雖將其稱為優化方案 , 筆者的觀察結果表明 , ORACLE 制定出一個不是最優或錯誤的執行方案也是完全可能的 . 以上為例 , Oracle 的優化策略是 Choose, 所謂 Choose 就是 cost-based 或 rule-based , 讓 ORACLE 自己選擇 , 可以通過數據庫啟動初始化文件 initXXX.ora 文件中的 optimizer_mode 參數來指定。 言歸正傳 , 上面的具體策略是 Oracle 對該表的一個唯一索引進行全掃描 , 因為在數據庫里一個字段假如可以建立一個 UNIQUE 類型的索引 , 那么它就與表中的記錄有一一對應的關系。所以對該索引進行 count(*) 可以保證其值等于對表進行 count(*) 操作。對索引進行全掃描后的上層操作是一個集合操作 , 即對找到的每個索引記錄進行計數。對這些信息的觀察主要用來確定 ORACLE 是否選用了 SQL 程序員希望 ORACLE 選用的索引操作。 Statistics 給出了執行該 SQL 操作所消耗的資源的統計數據 , 信息的表達一目了然 , 所有這些值都是越小越好 , 以通過 SQL*Net 的數據吞吐量為例 , 在 OCI 編程中使用以下技術可顯著減少網絡流量 : 通過將 Commit 操作與 Execute 操作綁定為一個操作 . 通過對數組進行成批數據的 delete, insert, update, 通過對一個 SELECT 語句指定一個預取記錄數 . 這些統計數據中 , 尤其需要避免的是涉及磁盤存取的操作 , 因為多級存儲的操作速度是 CPU >> Memory >> HD > Disc > network > disk。2. 對投入運營的系統中 PHP 程序的監控 理想的開發流程是 設計 -> 文檔 -> 編碼 -> 測試 -> 投入使用 , 但實際運行的系統往往是由良莠不齊的程序所組成 , 有些缺乏文檔 , 有些可讀性差 , 有些程序極為脆弱。對于這樣的既成事實 , 假如系統中出現了瓶頸 , 不可能一條語句一條語句地來進行測試 , 只能是用一種統一的方法定位主要問題的所在。由于 PHP 程序中的 SQL 語句使用了所謂動態 SQL 語句 , 即用 戶可以在程序運行時動態生成一個 SQL 語句, 所以假如對靜態的 PHP 程序文件進行。 ( 如用 grep 工具 ) 可能會搜捕不到成形的完整 SQL 語句 , 這就要求用一種動態方法來攔截實際執行的每一個完整的 SQL 語句 , 觀察 PHP 中關于 ORACLE 數據庫操作的函數簇 , 發現 OCIParse 和 Ora_Parse 兩個函數是 SQL 語句的入口 , 而將這兩個函數統一替換為一個用戶自定義的函數即可實現對 SQL 語句的攔截 , 在筆者涉入的實際系統中 , 是這樣解決的 : 首先分析該系統中所有的 PHP 程序文件 , 發現凡涉及 ORACLE 數據庫操作的都需要包含一個以 *.conf 結尾的配置文件 , 該配置文件是數據庫的用戶名 , 密碼和連接標識符的定義文件 , 這些是開發初期定下的規范 , 以便于對程序中共用的配置信息進行統一的治理 , 以下是一個 oracle.conf: <? $oracle_user='oracle_user'; $oracle_password='oracle_password'; $oracle_dbid = 'oracle_dbid'; ?>在涉及數據庫操作的 PHP 程序中 , 總有一行語句以引入該配置文件 : include('<path_to_file>/oracle.conf');設計一個函數如 debug_OCIParse 如下 , 以替換 OCIParse, 并將該文件放入一個叫 debug.conf 的別一個配置文件中 , 如下 : oracle.conf: <? global $impossible_conflit_with_this_oracle,$user,$password,$dbname; if(!$impossible_conflit_with_this_oracle) require('/home/httpd/debug.conf'); $impossible_conflit_with_this_oracle=1; $user='username'; $password='password'; $dbname='dblink'; ?> ========================================================== debug.conf: ========================================================== <? function debug_OCIParse($debug_conn, $debug_sql, $filename, $line) { debug_WriteLog($debug_sql, $filename, $line); return OCIParse($debug_conn, $debug_sql); } function debug_Ora_Parse($debug_conn, $debug_sql, $filename, $line) { debug_WriteLog($debug_sql, $filename, $line); return Ora_Parse($debug_conn, $debug_sql); } function debug_WriteLog($debug_sql, $filename, $line) { #if(!strstr($filename,'message.pHtml')) return; $string = date('Y-m-d H:i:s').' $filename:$linent$debug_sqln'; $fp = fopen('/home/httpd/sql.log', 'a'); fwrite($fp, $string, strlen($string)); fclose($fp); } ?>然后 , 統一將所有 PHP 程序中的 OCIParse 函數替換為 debug_OCIParse 函數 , 并要求 PHP 程序員以后使用 debug_OCIParse 函數進行開發 , 如下將: $stmt = OCIParse($conn, $sql);替換為 : $stmt = debug_OCIParse($conn, $sql, __FILE__, __LINE__);這個工作可由系統治理員統一做一次,以后就要要求 PHP 程序員形成規范。例 , 可用如下腳本: find /home/httpd/html -name '*.ph*' xargs -n1 while read i do ex -c ':se icg/ociparse/s/ociparse/debug_&/s/);$/,__FILE__,__LINE__&/' -c ':x!' $i done這幾行腳本并非放之皆準 , 但對于規范的 php 文件 , 一般來說沒有問題 , 筆者的系統中用該方法維護幾百 M 的 PHP 程序 , 少有例外 , 由于這是只運行一次的腳本 , 所以只要根據自己具體的系統做適當的調整即可 , 如上 , 假如對含有 OCIParse 的程序行的內容不太確定 , 可以用如下方法先進行查看 : find /home/httpd/html -name '*.ph*' xargs grep -in ociparse > ~/list這段腳本中的 ex 命令稍作解釋: ex 是 vi 編輯器的后端工具 , 可以在命令行上使用一些編輯命令 , 每個編輯命令以 -c 選項開頭 , 如上:se ic 是改變編輯器對大小寫不敏感 , 全稱是 :set ignorecase。 號用來間隔多個編輯命令。 g/ociparse/s/ociparse/debug_&/ 的編輯語意為 : 找到含有 ociparse 的行 , 對這些行執行如下編輯命令。 s/ociparse/debug_&/, s 意為 substitute, 將 ociparse 替換為 debug_&, 這其中 & 代表前面找到的匹配字符串 , 由于是忽略大小寫的 , 所以用 & 來保留前面找到的不管是大小寫如何混合的字符串的原型 . 這樣 , ociparse 就會被替換為 debug_ociparse, 而 OCIParse 將會被替換為debug_OCIParse。 接下來的 s/);$/,__FILE__,__LINE__&/ 是將 ociparse 語句的右括號進行替換,將用于調試監控的兩個參數(PHP 中的宏 ) 加上,$ 不是指一個真正的字符,而是指一個特定的位置 -- 行尾,以避免無辜的 ); 被替換掉。另一個命令 -c ':x!' 是將該文件存盤退出。 打出這么一套組合拳需要你對這些命令了如指掌 , 假如你對某個文件沒有寫權 , 或出了其它岔子 , 那簡直是一場災難 , 這種魔法級的指令總是高風險的 , 搞不好會走火入魔 , 讓你發下毒誓有生之年不再碰它 . 所以謹慎與備份總是對的。3. 對各種應用程序中的情況進行監控 假設一個系統中不僅僅有 PHP 程序,還有 C 程序與數據庫進行連接,那么數據庫系統一旦出了問題 , 如資源消耗過多,造成死鎖等,僅憑 ps ax grep oracleORCL是看不出什么東西的 , 因為這個進程是 Oracle 的 shadow 進程,命令名字都被改了,從 /proc 文件系統中提供的信息中也榨不出什么有用的東西了,所以,假如發現一個進程 ( 這是 ps ax 的實際輸出 ) 如下: 10406 ? R 159:10 oracleORCL (DESCRIPTION=(LOCAL=no)(ADDRESS=(PROTOCOL=確定這個進程長時間處于 running 狀態的肇事者就成為一個難題 , 首先 , 進程的運行者是 oracle, 連接者卻可能是來自本機 , 來自局域網絡 , 來自 internet 的 nobody 用戶 , 所以冤無頭,債無主。查看 v$session, v$process, v$..., 也沒有關于客戶端的足夠信息 . 可以用來縮小范圍的是 SQL 語句 , 但仍不足以構成充分的說服力讓某一應用的開發人員確信是自己的程序出了問題 . 觀察字段豐富的 v$session 視圖 , 里面有一個十分誘人的 client_info 字段 , 顧名思義 , 不能不讓人想入非非 : 一定是關于 ORACLE 客戶端的信息的 , 可惜它一般是 NULL 值 :-(, 筆者從 ORACLE 文檔中終于發現了 dbms_application_info.set_client_info(string);是用來設置連接 ORACLE 的客戶端信息的一個包 , 拿來 PRO*C 中運行: EXEC SQL EXECUTE BEGIN dbms_application_info.set_client_info(' 某應用程序 : 其 PID, 文件名 , 行號 '); END: END-EXEC;運行該 PRO*C 程序 , 執行一條 SQL 語句 , 并在關閉光標之前故意讓它: sleep(1000);以騰出足夠多的時間來觀察 v$session 中的 client_info 字段: [bash$] sqlplus sys/change_on_install@orcl SQL> select distinct * from (select a.client_info,b.sql_text,c.spid > from v$session a,v$sql b , v$process c where a.client_info is not null > and a.sql_hash_value=b.hash_value and a.paddr=c.addr);正是你剛才設定的'某應用程序:其PID,文件名,行號'信息 , 別嫌短,這個 client_info 字段是 64 個字節夠了??茨懿荒茏屵@寶貴功能施于 PHP: <? $conn = OCILogon('username', 'password', 'dblink'); $stmt_client = OCIParse($conn, 'call dbms_application_info.set_client_info('PHP:$filename:$line')'); OCIExecute($stmt_client); OCIFreeStatement($stmt_client); $stmt = OCIParse($conn, 'select ID from users where name='slimzhao''); OCIDefineByName($stmt, ID, $name); OCIExecute($stmt); OCIFetch($stmt); sleep(1000); // 故意的 OCIFreeStatement($stmt); OCILogoff($conn); ?>到 SQLPLUS 下一看 , 果不其然 !!! 將該功能加入前面的配置文件中 , 將會對 PHP 中的 SQL 語句進行更精確的跟蹤定位。 至此,可以將數據庫服務器下某一 oracle 的 shadow 進程與具體哪一個應用程序,甚至是哪一個源文件,哪一行的信息以及所執行的 SQL 語句等一一對應起來,有了這根主線,其它問題的分析就可步步深入,耗了多少時間,讀了多少個數據塊 , 進行了多少次排序,等等問題,都可通過 v$... 視圖收集到足夠的信息。本文重點不在于此,僅作拋磚,就此打住。
標簽: Oracle 數據庫
主站蜘蛛池模板: 一级视频在线播放 | 日本aaa视频 | 成人在线观看国产 | 日韩中文字幕视频 | 呦呦在线视频 | 欧美日韩精品一区二区三区在线 | 制服丝袜另类专区制服 | 丰满双乳峰白嫩少妇视频 | 天堂视频一区二区 | 国产精品美女www爽爽爽动态图 | 久久无码av中文出轨人妻 | 久久久不卡 | 国产剧情av网站 | 十八女人水多三级 | 黄色小视频链接 | 四虎影| 国产自产在线 | 亚洲4p| av第一页 | 国产目拍亚洲精品99久久精品 | 欧美xxxx黑人又粗又长密月 | 日日爱886 | 欧美性做爰大片免费 | 亚洲精品国产一区二区 | 亚洲免费砖区 | 风韵少妇性饥渴推油按摩视频 | 国产精品一区二区香蕉 | 丰满少妇高潮久久三区 | 激情综合色五月六月婷婷 | 亚洲综合欧美在线一区在线播放 | 欧美日韩在大午夜爽爽影院 | 午夜性色福利在线视频福利 | 国产成人啪精品视频免费软件 | 婷婷嫩草国产精品一区二区三区 | 久久天天东北熟女毛茸茸 | 久久国产热精品波多野结衣av | 在线中文字日产幕 | 国产乱码精品一区二区三区爽爽爽 | 国产一区二区三区四区五区tv | 亚洲国产欧美一区二区潘金莲 | 黄色aaa视频 | 亚洲国产精彩中文乱码av | 国产男女无套 | av中文字幕一区 | 国产精品福利网 | 一 级 黄 色 片免费网站 | 天天干天天摸天天操 | 久久久亚洲欧洲日产国码二区 | 性欧美乱束缚xxxx白浆 | 亚洲黄色大片 | 操丝袜美女视频 | 国产爽爽久久影院hd | 欧美成人高清视频在线观看 | 中国china体内裑精亚洲日本 | 催眠调教后宫乱淫校园 | 免费av福利 | 精品人妻伦一二三区久久 | 亚洲成av人在线观看网址 | 亚洲a成人片在线观看 | av片一区二区三区 | 亚洲欧美另类国产 | 北条麻妃99精品久久朝桐光 | 日韩少妇诱惑 | 男女无遮挡xx00动态图120秒 | 日日躁夜夜躁白天躁晚上 | 在线播放av网址 | 少妇被粗大的猛烈进出视频 | 日韩a∨精品日韩在线观看 免费特级黄毛片 | 性生活网址 | 亚洲乱码视频在线观看 | 影视av久久久噜噜噜噜噜三级 | 免费观看性行为视频的网站 | 久久婷婷视频 | 亚洲国产精品美女 | 精品久久久久久无码中文字幕一区 | 亚洲狠狠婷婷综合久久 | 成年视频在线播放 | 最近免费中文字幕中文高清6 | 成人免费毛片视频 | 玖玖色在线 | 少妇脱了内裤让我添 | 九色 porny 国产| 好色先生视频污 | 好看的黄色录像 | 都市乱淫 | 亚洲va久久久噜噜噜久久男同 | 成人性视频欧美一区二区三区 | 曰本女人与公拘交酡免费视频 | 久久精品五月天 | 日韩综合色 | 国产女人叫床高潮大片免费 | 成人香蕉视频在线观看 | 国产精品亚洲αv天堂无码 久久精品a一国产成人免费网站 | 日韩av二区 | 日韩欧美在线免费 | av永久免费在线观看 | 国产免费av一区二区 | 永久555www成人免费 | 激烈娇喘叫1v1高h糙汉 | 婷婷久久综合九色综合88 | 色婷婷视频 | 日本少妇裸体做爰高潮片 | 精品毛片乱码1区2区3区 | 91精品国产色综合久久不卡98 | 欧美成人免费全部网站 | 亚洲国产清纯 | 国产69精品久久久久9999apgf | 亚洲天堂中文字幕在线 | 丰满岳乱妇在线观看中字无码 | 成人毛片18女人毛片 | 精品久久久久久国产 | 国产精品久久99综合免费观看尤物 | 日韩av一区在线观看 | 九一国产视频 | 亚洲一区在线观看免费 | 无码人妻av一区二区三区蜜臀 | 国产精品入口免费视 | 又色又爽又黄无遮挡的免费视频 | 伊人成综合 | 久久一二区 | 夜夜春很很躁夜夜躁 | 成年人午夜视频 | 秋霞精品| 少妇性l交大片免费观看 | 步兵在线一区二区三区 | 日韩乱码人妻无码中文字幕视频 | 欧美粗又长 | 亚洲精品成人av在线 | 在线观看免费成人 | 免费啪啪网 | 免费高清a级南片在线观看 免费高清成人 | 69视频在线 | 欧美综合久久 | 日本精品一区二区三区视频 | hd国产人妖ts另类视频 | 亚洲国产精品无码久久电影 | 国产精品久久夂夂精品香蕉爆 | 国产精品国产三级国产专播品爱网 | xxxxxx欧美| 国产女人与拘做受视频9 | 国产午夜精品18久久蜜臀董小宛 | 91一区视频 | 免费一级欧美片在线播放 | 美乳少妇与邻居尤物啪啪 | 超碰美女在线 | 特级毛片全部免费播放器 | 黄色综合 | 国产经典久久 | 欧美成人三级伦在线观看 | 2018狠狠干 | 亚州av久久精品美女模特图片 | 亚洲性事 | 亚洲欧美精品aaaaaa片 | www日本色| 日本a级网站 | 欧美成年视频 | 麻豆精品国产入口 | 红色假期黑色婚礼2 | 精品国产九九 | 色五月丁香五月综合五月 | 久久中字| 久久精品国产免费 | 国内精品久久久久影视老司机 | 欧美色图激情 | 欧美成人精品第一区 | 欧妇女乱妇女乱视频 | 久久久久久久亚洲国产精品87 | 91丨porny丨尤物| 色婷婷www | 国产三级精品在线观看 | 午夜色大片在线观看 | 日韩精品久久久肉伦网站 | 国产va免费精品高清在线观看 | 成人欧美激情 | 少妇一边呻吟一边说使劲视频 | www久久婷婷| 丁香五月网久久综合 | 亚洲综合久久一区二区 | 夫妇交换性三中文字幕 | 久久久久久久久久久久网站 | 天天摸日日摸狠狠添 | 久久久久国产精品人妻 | 少妇下蹲露大唇无遮挡 | 在线视频se | 欧洲无码一区二区三区在线观看 | 伊人自拍视频 | 99精品一区二区三区无码吞精 | 性一交一刮一伦96a 性一交一乱一伧老太 | 青青五月 | 夜夜夜网站 | 中文久久久 | 搡老熟女老女人一区二区 | 扒开女人内裤猛进猛出免费视频 | 秋霞中文字幕 | 亚洲人做受 | 最近日本免费观看高清视频 | 国产簧片 | 下面一进一出好爽视频 | 国产一级性生活片 | 天天干视频在线 | 日批免费看 | 欧美性极品 | 男女黄床上色视频 | 91九色国产视频 | 国产伦理片在线观看 | 在线观看av日韩 | 天天天欲色欲色www免费 | 成人亚洲区 | 欧美激情综合五月色丁香 | 欧美精品一区二区三区久久久竹菊 | 亚洲精品无码成人aaa片 | 欧美午夜精品理论片 | 国产成人片 | 久久久久无码精品国产 | 久久人人爽人人爽人人片亞洲 | 欧美第七页 | 网红av在线 | 国产女同疯狂作爱系列11 | 又大又黄又爽视频一区二区 | 欧美 偷窥 清纯 综合图区 | 免费看成人欧美片爱潮app | 国产精品爽爽久久久久久 | 亚洲最新av网站 | 日韩黄色a级片 | 两性午夜刺激性视频 | 蜜臀aⅴ国产精品久久久国产老师 | 午夜国产一区 | 天堂√在线 | 人成乱码一区二区三区 | 中文字幕亚洲一区 | av专区在线| 四虎最新紧急入口 | 国产成人欧美 | 亚洲你懂的 | 国产又粗又硬又猛的毛片视频 | 亚洲精品国产第一综合99久久 | 亚洲精品一区二区三区在线观看 | 九色蜜桃臀丨porny丨自拍 | 国产一区二区在线视频 | 亚洲精品乱码久久久久久日本蜜臀 | 中文永久免费观看 | 欧美城天堂网 | 91视频www | 国产精品久久久久久久久久久久 | 久久96国产精品久久久 | 婷婷五月综合缴情在线视频 | a级黄色影片 | 美腿丝袜亚洲综合 | av播放网站 | 极品少妇hdxx麻豆hdxx | 少妇一级片| 奶头挺立呻吟高潮视频 | 国产三级大片 | 亚洲综合一二三 | 亚洲va欧美va国产va黑人 | 69久久国产露脸精品国产 | 日本人与黑人做爰视频网站 | 国产精品自拍第一页 | 久久av红桃一区二区小说 | 久久久久久久少妇 | 亚洲开心网| 亚洲女子a中天字幕 | 亚洲精品乱码久久久久久v 精品国产a∨无码一区二区三区 | 激情综合色五月丁香六月亚洲 | 色综合88 | 男女裸体影院高潮 | 夜夜爱夜夜做夜夜爽 | 99视频网址| 国产九九九精品 | 国内精品国产三级国产在线专 | 欧美午夜特黄aaaaaa片 | 久久中文字幕人妻熟av女蜜柚m | 小毛片在线观看 | 一级免费黄色毛片 | 日韩精品免费在线视频 | 日韩精品久久久久影视的特点 | 波多野结衣丝袜 | 天天躁日日躁狠狠躁av麻豆 | 丝袜av网站 | 国模吧无码一区二区三区 | 欧美日韩高清在线播放 | 美国性生活大片 | 欧美另类天堂 | 精品无码一区二区三区不卡 | 国产人与禽zoz0性伦在线 | www欧美com | 欧美午夜网 | 亚洲中文字幕无码爆乳av | 国产三级精品一区二区三区视频 | 女同一区| 久久视频在线免费观看 | 538精品视频在线播放 | 久久久国产精品无码免费专区 | 国产又粗又黄又长又爽动漫 | 日韩毛片av | 蜜桃av蜜臀av色欲av麻 | 亚洲伊人成人网 | 久久精品人妻一区二区蜜桃 | 久久久www成人免费无遮挡大片 | 一级特黄色毛片 | 丰满多毛的大隂户视频 | 超碰区| 国产一级淫片a | 欧美日韩免费在线视频 | 国产性70yerg老太 | 亚洲自拍偷拍网站 | 久久久男人的天堂 | 国产三级成人 | 在线看日本 | 免费无码又爽又高潮视频 | 国产片性视频免费播放 | 97成人在线 | 一本一道久久a久久综合精品 | 天天综合性 | 亚洲特级片 | 中国美女囗交视频免费看 | 欧美a级成人淫片免费看 | 亚洲午夜成aⅴ人片 | 久久99精品久久久久久不卡 | 亚洲精品国产suv一区88 | 最新中文字幕免费视频 | 精品亚洲天堂 | 国产日本一级二级三级 | 亚洲视频久久 | 老司机狠狠爱 | 青娱乐极品视觉盛宴国产视频 | 国产无遮挡吃胸膜奶免费看 | 99久久免费看精品 | 成人在线免费观看网址 | 国产日韩欧美在线观看视频 | 国产69精品久久久久男男系列 | 亚洲色图网友自拍 | 天天射天天干天天插 | 国产日韩欧美中文另类 | 高清新婚夫妇性xxxxx | 欧美性插动态图 | 国产精品区一区二区三在线播放 | 女邻居的大乳中文字幕 | 国产午夜毛片 | 亚洲国产一区精品 | 欧美特级黄色大片 | 天堂久久爱 | 午夜精品久久久久久久久久久久 | 国产区高清 | www精品国产 | jizz美女| a级一片 | 一级a性色生活片久久毛片 一级a性色生活片久久毛片明星 | 欧美天堂网站 | 夜色jjj.av| 黄色录像毛片 | 韩日毛片| 国内精品国产成人国产三级 | 9.1成人看片免费版 9191国产精品 | 国产亚洲美女精品久久久2020 | 中文国产字幕 | 午夜国产在线观看 | 性欧美巨大乳 | 久久婷婷五月综合尤物色国产 | 亚洲男人的天堂在线播放 | 中文字幕亚洲激情 | 黄色的毛片 | 国产日| 国产精品对白 | 国产成人精品电影在线观看 | 精品人妻伦九区久久aaa片 | 男男车车的车车网站w98免费 | 亚洲女人天堂成人av在线 | 99视频一区 | 欧美一级淫片aaaaaaa喷水 | 99在线观看免费 | www国产91| 麻豆国产精品视频 | 精品欧美一区二区精品久久久 | 天天干夜夜怕 | 国产又黄又爽又色的免费视频白丝 | 黄色片在线观看免费 | 中文字幕在线观看视频www | 精品人妻大屁股白浆无码 | 青青草免费公开视频 | 国产图区| 妲己艳史淫片免费看 | 国产日韩欧美一区二区东京热 | 国产免费踩踏调教视频 | 欧美天天干 | 国产永久在线 | 国产aaaaaaa | 深夜福利啪啪片 | 91av入口| 精品香蕉一区二区三区 | 免费在线观看的av | 综合色播 | 亚洲欧美日韩综合久久久 | 按摩师高h荡肉呻吟在线观看 | jzzijzzij亚洲成熟少妇18 jzzijzzij亚洲农村妇女 | 91精品国 | 国产无套内射久久久国产 | 老子影院午夜伦手机不四虎卡 | 桥本有菜免费av一区二区三区 | 天天色天天干天天 | 污动漫网站 | 两性午夜刺激性视频 | 日本最新中文字幕 | 国产极品美女到高潮 | 久久夜色撩人精品国产小说 | 欧美日韩网站 | 熟妇人妻av无码一区二区三区 | 性色av一区二区咪爱 | 中文字幕无限2021 | 成人无码视频在线观看网站 | 一区精品在线观看 | 国产无遮挡猛进猛出免费软件 | 国产精品久久久久aaaa | 精品无码久久久久久久久 | 欧美拍拍视频 | 56国语精品自产拍在线观看 | 国产传媒毛片精品视频第一次 | 777片理伦片在线观看 | 少妇高潮大叫好爽 | 国产精品v欧美精品v日韩精品v | 国产区123| 蜜桃无码一区二区三区 | 日本女人黄色片 | hs视频在线观看 | 人妖精品videosex性欧美 | 日韩成人专区 | 尹人香蕉久久99天天拍 | 久久尤物免费一区二区三区 | 特黄特色特刺激免费播放 | 亚洲国产欧美国产综合一区 | 国产少妇露脸精品自啪网站 | 国产精品一区二区三区不卡 | 人人超碰人摸人爱 | 免费看一区二区三区四区 | 亚洲色图欧洲色图 | 黑色丝袜国产精品 | 黄色一级片a| 伊人久久久大香线蕉综合直播 | 下面一进一出好爽视频 | 精品国产二区三区 | 中文字幕成人在线视频 | 九九在线精品 | 国产热热| 台湾佬自拍偷区亚洲综合 | 永久影院 | 成人福利网 | 欧美色88 | 男人解开女人乳罩吃奶 | 亚洲人成人 | 大伊人狠狠躁夜夜躁av一区 | 免费国产黄网站在线观看视频 | 日韩欧美黄色大片 | 久草aⅴ| 欧美另类高清zo欧美 | 精品免费在线观看 | 99国产精品免费播放 | 国产成人愉拍精品久久 | 狠狠躁日日躁夜夜躁影院 | 国产精品一区二区三区不卡 | 97精品一区| 色综合天天综合网国产 | 国产精品久久久久久久毛片明星 | 性高朝久久久久久久 | 久久天堂综合亚洲伊人hd妓女 | 亚洲午夜无码久久久久 | 曰本无码人妻丰满熟妇5g影院 | 少妇和子乱视频 | 久久天天躁狠狠躁夜夜婷 | 富婆按摩av国产hd | 国产一级片免费视频 | 亚洲中文字幕久久久一区 | 亚洲另类色综合网站 | 99热这| 逼特逼视频在线观看 | 精品免费久久 | 无码人妻毛片丰满熟妇区毛片 | 一本到亚洲网 | 黄色插插视频 | 国产乱人伦偷精品视频免下载 | 成人手机看片 | 97人妻天天爽夜夜爽二区 | 中文字幕第十一页 | 国产成人三级一区二区在线观看一 | 欧美高清在线精品一区 | 国产亚洲一卡2卡3卡4卡网站 | 西方裸体在线观看 | 日本老少交| 亚洲欧美精品无码一区二区三区 | av不卡在线免费观看 | av无码国产精品色午夜 | 国产视频精品在线 | 91一区二区视频 | 无码成人一区二区 | 黄页网址大全免费观看 | 婷婷天天| 天天干天天操天天拍 | 综合久久久久久久 | 日韩激情第一页 | 波多野结衣50连登视频 | 天天看天天干 | 午夜桃色 | 欧美三级在线观看视频 | 久久久高清视频 | 亚洲六月丁香色婷婷综合久久 | 少妇人妻系列无码专区视频 | 国产精品久久久久久2021 | 国内精品久久久久久久久久久 | 床戏做爰无遮挡摸亲胸小说 | 狠狠躁日日躁夜夜躁影院 | 欧美牲交a欧美牲交aⅴ免费真 | 国产极品粉嫩福利姬萌白酱 | 国产精品久久久国产偷窥 | av色欲无码人妻中文字幕 | 国产中文字幕网 | 欧美综合在线视频 | 亚洲乱码一区二区三区三上悠亚 | 爱爱网站免费 | 国产香蕉尹人综合在线观看 | 久久精品国产免费一区 | 青草在线视频 | 337p日本欧洲亚洲大胆张筱雨 | 小辣椒福利视频导航 | 一级片在线播放 | 丰满的女人性猛交 | 精品视频91| 四面虎影最新播放网址 | 91亚洲国产成人久久精品麻豆 | 亚洲曰本女同2 | 欧美一区亚洲二区 | 国产深夜男女无套内射 | 日韩成人无码中文字幕 | 国产粉嫩尤物极品99综合精品 | 男插女av | 国产亚洲成av人片在线观黄桃 | 九九热精品视频 | xvideos成人免费视频 | 狠狠色综合网站久久久久久久 | 性少妇无码播放 | 成人做爰69片免费看网站 | 激情五月综合色婷婷一区二区 | 国产伦精品一区二区三区视频黑人 | 亚洲激情网站 | 肉体公尝中文字幕第三部 | 在线免费看黄色 | 亚洲影院在线播放 | 青娱乐最新地址 | 香蕉视频入口 | 国产欧美精品一区 | 欧美男女视频 | 色婷婷激情综合 | 国产精品一区二区在线免费观看 | 日韩国产精品一区二区三区 | 国产日| av在线收看| 日韩avv | 老女人综合网 | 麻豆aⅴ精品无码一区二区 午夜福制92视频 | 98堂 最新网名 | 日本免费一区二区三区视频 | 日韩亚洲欧美中文在线 | 天天躁日日躁狠狠躁欧美老妇 | 四虎国产精品免费久久 | 无码人妻aⅴ一区二区三区69岛 | 亚洲影院一区 | 人妻熟女αⅴ一区二区三区 | 国产无在线观看 | 一区二区三区四区在线视频 | 好吊视频一区二区三区 | 在线观看午夜 | 欧美日韩二区三区 | 日日嗨av一区二区三区四区 | 国产亚洲片| 国产精品jizz在线观看网站 | 免费在线看黄视频 | 人人爽人人射 | www.久久成人 | 女人的天堂av | 国产91在线高潮白浆在线观看 | 欧美午夜在线视频 | 免费乱理伦片在线观看夜 | 女邻居丰满的奶水 | 91草草草| 欧美一区二区三区在线视频观看 | 久久人人爽爽 | www国产亚洲精品 | 国产精久久久久 | 美女露出奶头扒开尿口免费网站 | 精品少妇一区二区三区四区五区 | 国产情侣第一页 | 国产精成人品免费观看 | 亚洲精品久久久久久婷婷 | 欧美国产精品一二三 | 国产淫语对白粗口video | 亚洲裸体大白屁股xxx | 少妇脱了内裤让我添 | 欧美怡春院 | 中文字幕人妻中文 | 中国吞精videos露脸 | 久久亚洲精品中文字幕无码 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 久久久久久久久久久福利 | 精品国产一区二区三区久久久久久 | 肉体肉体xxx肉体d久久 | 亚洲综合伊人久久综合 | 中文字幕不卡在线播放 | 国产91在线观看丝袜 | 懂色一区二区三区av片 | 日本高清有码视频 | 亚洲做受高潮欧美裸体 | 在线免费不卡视频 | 欧美在线观看你懂的 | 国产美女自慰在线观看 | 超碰aⅴ人人做人人爽欧美 狠狠亚洲婷婷综合色香五月 | 午夜亚洲 | 一级一级黄色片 |