国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

動(dòng)態(tài)包含性能瓶頸:PHP include/require優(yōu)化實(shí)戰(zhàn)與改造方案

動(dòng)態(tài)包含性能瓶頸:PHP include/require優(yōu)化實(shí)戰(zhàn)與改造方案 接手這個(gè)老項(xiàng)目?jī)?yōu)化任務(wù)的時(shí)候我第一反應(yīng)是去看數(shù)據(jù)庫(kù)慢查詢和緩存命中率結(jié)果折騰半天都沒(méi)找到大頭。后來(lái)把PHP的請(qǐng)求鏈路拆開(kāi)才發(fā)現(xiàn)一個(gè)被很多人忽略的細(xì)節(jié)模板塊里大量使用了動(dòng)態(tài)包含——也就是把include/require的參數(shù)寫(xiě)成變量讓PHP在運(yùn)行時(shí)才決定到底加載哪個(gè)文件。接口平均耗時(shí)三百多毫秒壓測(cè)QPS上不去罪魁禍?zhǔn)拙褪撬?。這篇文章我打算把動(dòng)態(tài)包含的性能開(kāi)銷(xiāo)原理、定位方法、改造方案和實(shí)測(cè)數(shù)據(jù)一次性講透適合正在做PHP性能優(yōu)化或者想把手頭老項(xiàng)目代碼結(jié)構(gòu)理清楚的朋友參考。先說(shuō)清楚我不會(huì)勸你把include全部消滅這既不現(xiàn)實(shí)也沒(méi)必要。關(guān)鍵在于搞清楚動(dòng)態(tài)包含什么時(shí)候會(huì)成為瓶頸以及怎么用可落地的方案把它替換掉。1. 動(dòng)態(tài)包含的典型寫(xiě)法與性能開(kāi)銷(xiāo)根源1.1 動(dòng)態(tài)包含的幾種典型寫(xiě)法所謂的“動(dòng)態(tài)包含”指的是PHP在編譯和執(zhí)行腳本時(shí)無(wú)法預(yù)先確定具體要引入哪個(gè)文件必須等代碼跑起來(lái)、變量算出來(lái)之后才知道。最常見(jiàn)的寫(xiě)法有四種。第一種是按模塊拼路徑這也是老項(xiàng)目里最普遍的做法$module $_GET[module] ?? home; $action $_GET[action] ?? index; include modules/{$module}/{$action}.php;第二種是用條件表達(dá)式或三目運(yùn)算動(dòng)態(tài)決定包含哪個(gè)文件常見(jiàn)于多主題、多模板切換的場(chǎng)景include ($theme dark ? dark.php : light.php);第三種是include_once和變量類(lèi)名組合多見(jiàn)于早期的手寫(xiě)類(lèi)加載器require_once $className . .php;第四種是循環(huán)批量加載比如插件系統(tǒng)啟動(dòng)時(shí)遍歷插件目錄把每個(gè)插件的入口文件包含進(jìn)來(lái)foreach ($plugins as $plugin) { include plugins/{$plugin}/bootstrap.php; }這些寫(xiě)法本身都沒(méi)錯(cuò)初期效率很高不用維護(hù)路由表目錄即結(jié)構(gòu)加一個(gè)頁(yè)面就是加一個(gè)文件。但問(wèn)題是它把“代碼依賴(lài)關(guān)系”藏在了運(yùn)行時(shí)機(jī)器無(wú)法提前預(yù)判性能隱患和代碼隱患會(huì)一起種下來(lái)。1.2 性能開(kāi)銷(xiāo)到底從哪里來(lái)很多人以為動(dòng)態(tài)包含只是多了個(gè)變量拼接能貴到哪去其實(shí)它貴的不是拼接那點(diǎn)CPU而是后面一連串的連鎖反應(yīng)。首先是編譯期無(wú)法建立靜態(tài)依賴(lài)關(guān)系。include和require在PHP里本來(lái)就是運(yùn)行時(shí)指令不是編譯期指令。你寫(xiě)include a.php編譯器至少知道目標(biāo)文件是誰(shuí)你寫(xiě)include $file編譯器完全不認(rèn)識(shí)$file的值。沒(méi)有靜態(tài)依賴(lài)圖優(yōu)化器很多跨文件的優(yōu)化手段就用不上整個(gè)請(qǐng)求的編譯和Cache命中效率都會(huì)打折扣。其次是運(yùn)行時(shí)路徑解析鏈路變長(zhǎng)。變量拼出來(lái)的路徑要先做字符串拼接再做合法性檢查接著調(diào)用realpath一類(lèi)的路徑解析最后才發(fā)起文件系統(tǒng)調(diào)用。靜態(tài)include的路徑是字面量引擎在編譯期就能記住路徑信息運(yùn)行時(shí)的工作量少得多。系統(tǒng)調(diào)用看似不起眼一旦QPS上來(lái)秒級(jí)成千上萬(wàn)次差距立刻被放大。然后是opcache的實(shí)際命中率會(huì)變差。別誤解opcache對(duì)動(dòng)態(tài)include的文件也能緩存前提是請(qǐng)求真正執(zhí)行到了那一行并且最終解析出的文件路徑是穩(wěn)定一致的。但動(dòng)態(tài)包含往往搭配多分支、多文件切換路徑變化頻繁就會(huì)反復(fù)觸發(fā)文件狀態(tài)校驗(yàn)。再加上有些環(huán)境開(kāi)著validate_timestamps和revalidate_freq文件mtime檢查次數(shù)跟被包含文件數(shù)量直接掛鉤。結(jié)果就是緩存策略本身沒(méi)問(wèn)題但你的代碼結(jié)構(gòu)讓緩存很難發(fā)揮效果。此外include_once和require_once會(huì)額外增加已加載文件的去重查找操作。動(dòng)態(tài)路徑意味著這個(gè)查找列表可能很長(zhǎng)每次都要比對(duì)路徑字符串累計(jì)開(kāi)銷(xiāo)也不小。我把靜態(tài)include和動(dòng)態(tài)include放在一張表里對(duì)比大家看得更清楚對(duì)比維度靜態(tài)include動(dòng)態(tài)include目標(biāo)文件確定時(shí)機(jī)編譯期可識(shí)別字面量運(yùn)行時(shí)變量計(jì)算后確定編譯器依賴(lài)分析可構(gòu)建完整依賴(lài)鏈無(wú)法建立靜態(tài)依賴(lài)圖路徑解析與系統(tǒng)調(diào)用編譯期已登記運(yùn)行時(shí)開(kāi)銷(xiāo)小每次請(qǐng)求需拼接、解析、openopcache利用效率緩存命中率高、易預(yù)優(yōu)化分支多時(shí)命中率波動(dòng)大安全隱患路徑可控性強(qiáng)易被利用做任意文件包含可維護(hù)性依賴(lài)關(guān)系清晰易掃描依賴(lài)隱晦排查成本高最后還有一筆隱性成本動(dòng)態(tài)包含會(huì)讓整個(gè)項(xiàng)目的依賴(lài)關(guān)系變得非常難追蹤。做靜態(tài)代碼掃描、自動(dòng)測(cè)試、調(diào)用鏈分析的時(shí)候工具根本沒(méi)法跨文件還原完整的調(diào)用圖。這筆“維護(hù)稅”比線上那幾十毫秒的延遲更貴只是大多數(shù)團(tuán)隊(duì)要等項(xiàng)目腐化到一定程度才感覺(jué)得到。2. 如何定位并量化動(dòng)態(tài)包含的性能損失2.1 用基準(zhǔn)測(cè)試腳本做可復(fù)現(xiàn)對(duì)比要優(yōu)化一個(gè)問(wèn)題第一步永遠(yuǎn)是量化它??谡f(shuō)無(wú)憑先搭一個(gè)獨(dú)立小項(xiàng)目把動(dòng)態(tài)包含和靜態(tài)包含的差距跑出來(lái)。本地環(huán)境我建議用phpstudy或者寶塔這類(lèi)面板工具管理多個(gè)PHP版本切換PHP 7.4、8.0、8.2對(duì)比差異比手工編譯快得多。建一個(gè)bench目錄bench/ ├── static_inc.php ├── dynamic_inc.php └── files/ ├── a.php ├── b.php ├── c.php └── d.php每個(gè)文件里放一個(gè)簡(jiǎn)單的變量賦值模擬真實(shí)業(yè)務(wù)中模板文件或配置文件的加載?php $file_a_loaded true;static_inc.php的內(nèi)容?php $t0 microtime(true); $dir __DIR__ . /files; for ($i 0; $i 10000; $i) { include $dir . /a.php; include $dir . /b.php; include $dir . /c.php; include $dir . /d.php; } printf( static include: %.4f s, peak mem: %.2f MB\n, microtime(true) - $t0, memory_get_peak_usage(true) / 1024 / 1024 );dynamic_inc.php的內(nèi)容?php $t0 microtime(true); $dir __DIR__ . /files; $targets [a.php, b.php, c.php, d.php]; for ($i 0; $i 10000; $i) { $file $targets[$i % 4]; include $dir . / . $file; } printf( dynamic include: %.4f s, peak mem: %.2f MB\n, microtime(true) - $t0, memory_get_peak_usage(true) / 1024 / 1024 );跑的時(shí)候分兩種情況開(kāi)opcache和關(guān)opcache。默認(rèn)CLI模式下opcache是關(guān)閉的需要手動(dòng)開(kāi)啟php -d opcache.enable_cli1 bench/static_inc.php php -d opcache.enable_cli1 bench/dynamic_inc.php我在一臺(tái)普通云主機(jī)上測(cè)出來(lái)的相對(duì)趨勢(shì)差不多是這樣測(cè)試場(chǎng)景靜態(tài)include動(dòng)態(tài)include關(guān)閉opcache0.42s0.71s開(kāi)啟opcache0.28s0.49s具體數(shù)值跟你機(jī)器有關(guān)不用糾結(jié)絕對(duì)值要看趨勢(shì)動(dòng)態(tài)包含在兩種情況下都慢而opcache對(duì)靜態(tài)include的放大優(yōu)化更明顯。這個(gè)結(jié)果說(shuō)明動(dòng)態(tài)包含不僅自身開(kāi)銷(xiāo)大還會(huì)拖累緩存策略發(fā)揮。2.2 用火焰圖、strace和Xdebug確認(rèn)瓶頸如果你面對(duì)的是一個(gè)大型項(xiàng)目沒(méi)法像上面那樣單獨(dú)隔離測(cè)試那就用工具從側(cè)面抓證據(jù)。Linux環(huán)境下strace是很好的系統(tǒng)調(diào)用統(tǒng)計(jì)工具。分別對(duì)靜態(tài)和動(dòng)態(tài)兩個(gè)腳本跑一遍重點(diǎn)觀察openat、stat、fstat這些文件相關(guān)調(diào)用次數(shù)strace -c -f php bench/dynamic_inc.php strace -c -f php bench/static_inc.php動(dòng)態(tài)版本的文件打開(kāi)和狀態(tài)查詢次數(shù)通常會(huì)明顯偏多。這直接說(shuō)明動(dòng)態(tài)包含在文件系統(tǒng)層多消耗了資源。Windows環(huán)境或者不方便用strace的話用Xdebug生成profile文件再用Qcachegrind打開(kāi)也能定位include相關(guān)節(jié)點(diǎn)的時(shí)間占比。Xdebug 3的配置xdebug.modeprofile xdebug.output_dir/tmp/xdebug xdebug.start_with_requestyes跑一次入口腳本后output_dir下會(huì)生成cachegrind.out.*文件導(dǎo)入可視化工具看include和require相關(guān)函數(shù)占了多少總時(shí)間一目了然。想更細(xì)的話可以上火焰圖。用perf record抓調(diào)用棧再轉(zhuǎn)換成火焰圖動(dòng)態(tài)包含的路徑解析、系統(tǒng)調(diào)用、編譯動(dòng)作都會(huì)在棧上留下痕跡。不過(guò)對(duì)多數(shù)業(yè)務(wù)項(xiàng)目來(lái)說(shuō)strace加X(jué)debug已經(jīng)足夠拍板了。2.3 檢查opcache配置與命中情況動(dòng)態(tài)包含性能差很多時(shí)候還疊加了opcache配置不當(dāng)。先看當(dāng)前opcache狀態(tài)用phpinfo()或者命令行php -i | grep opcache再寫(xiě)個(gè)小腳本直觀拿命中率?php $status opcache_get_status(false); if ($status) { $stat $status[opcache_statistics]; echo hits: . $stat[hits] . PHP_EOL; echo misses: . $stat[misses] . PHP_EOL; echo hit rate: . round($stat[opcache_hit_rate], 2) . % . PHP_EOL; }注意opcache_get_status要裝了opcache擴(kuò)展且開(kāi)啟后才好用CLI下記得用-d opcache.enable_cli1否則腳本里拿不到狀態(tài)。下面是一份比較穩(wěn)妥的opcache配置適合生產(chǎn)環(huán)境起步opcache.enable1 opcache.enable_cli0 opcache.validate_timestamps1 opcache.revalidate_freq60 opcache.max_accelerated_files10000 opcache.memory_consumption128 opcache.interned_strings_buffer16validate_timestamps和revalidate_freq是雙刃劍。設(shè)得太頻繁每次請(qǐng)求都要檢查文件mtime文件一多開(kāi)銷(xiāo)滾雪球設(shè)成0或者太大線上代碼更新又不實(shí)時(shí)生效。要根據(jù)自己發(fā)布流程來(lái)調(diào)我一般配合CDN灰度線上設(shè)0發(fā)布時(shí)reload一次PHP-FPM。3. 替代方案與改造路徑別急著刪include3.1 先看一張方案對(duì)比表很多人一聽(tīng)動(dòng)態(tài)包含性能差第一反應(yīng)是把所有include改成switch-case靜態(tài)分支。這確實(shí)有用但項(xiàng)目一大人工改起來(lái)很痛苦。更合理的思路是理解各類(lèi)方案的適用邊界按需組合。方案靜態(tài)分析友好性opcache效益安全隱患改造成本適用場(chǎng)景保留動(dòng)態(tài)include差差高零不推薦長(zhǎng)期使用統(tǒng)一入口路由分發(fā)好好低中Web MVC項(xiàng)目改造Composer自動(dòng)加載好好低低-中新項(xiàng)目、類(lèi)庫(kù)管理opcache.preload好極好低中核心類(lèi)庫(kù)穩(wěn)定、CLI常駐場(chǎng)景綜合來(lái)看Web項(xiàng)目最推薦的組合是“統(tǒng)一入口路由分發(fā)Composer自動(dòng)加載”然后根據(jù)實(shí)際壓測(cè)情況決定要不要再上preload。3.2 統(tǒng)一入口加路由分發(fā)改造示例前端控制器模式是替代動(dòng)態(tài)包含最經(jīng)典的做法。還是那個(gè)按參數(shù)拼路徑的例子改造后是這樣?php $route [ home [ controller App\Controller\HomeController::class, method index, ], list [ controller App\Controller\ListController::class, method show, ], ]; $page $_GET[page] ?? home; if (!isset($route[$page])) { http_response_code(404); exit(Not Found); } $target $route[$page]; $controller new $target[controller](); $controller-{$target[method]}();這個(gè)寫(xiě)法把“按參數(shù)找文件”變成了“按參數(shù)找類(lèi)和方法”徹底消滅了動(dòng)態(tài)路徑拼接。好處是多重的首先是性能上入口文件、路由文件、控制器類(lèi)文件都變成可靜態(tài)分析的依賴(lài)opcache能穩(wěn)定命中其次是安全上用戶輸入被路由表約束不再參與路徑拼接任意文件包含的問(wèn)題從根上斷了再次是工程上每個(gè)Controller是個(gè)獨(dú)立類(lèi)可以單測(cè)調(diào)用關(guān)系清晰可見(jiàn)。唯一要適應(yīng)的是目錄結(jié)構(gòu)和命名規(guī)范初期改造需要點(diǎn)耐心但收益非常明顯。3.3 用Composer自動(dòng)加載替代手寫(xiě)include就算不徹底改MVC把include鏈換成Composer自動(dòng)加載也是一大進(jìn)步。先建composer.json{ autoload: { psr-4: { App\\: src/ } } }然后執(zhí)行composer dump-autoload -o-o參數(shù)會(huì)生成優(yōu)化過(guò)的類(lèi)映射表。所謂優(yōu)化就是composer把“類(lèi)名到文件路徑”的映射關(guān)系預(yù)先構(gòu)建成一張大映射表運(yùn)行時(shí)按類(lèi)名直接查表不需要掃描目錄。再用composer dump-autoload --classmap-authoritative可以完全關(guān)閉對(duì)PSR-4目錄的實(shí)時(shí)掃描性能更好代價(jià)是新增類(lèi)后必須重新dump。使用自動(dòng)加載后代碼里不再有手寫(xiě)include?php namespace App\Controller; class HomeController { public function index(): string { return home page; } }入口處只需要注冊(cè)一次autoloaderrequire __DIR__ . /vendor/autoload.php;autoloader雖然本質(zhì)上也是運(yùn)行時(shí)動(dòng)態(tài)加載文件但它的加載規(guī)則穩(wěn)定、類(lèi)映射明確opcache友好度遠(yuǎn)高于手寫(xiě)動(dòng)態(tài)include。而且你徹底不需要關(guān)心類(lèi)文件的加載順序了這是手寫(xiě)include最容易出錯(cuò)的地方。3.4 如果必須動(dòng)態(tài)包含白名單映射加靜態(tài)分支有些場(chǎng)景比如插件系統(tǒng)必須加載外部擴(kuò)展文件真做不到完全消滅動(dòng)態(tài)包含。這種時(shí)候至少要做到“動(dòng)態(tài)輸入、靜態(tài)目標(biāo)”把變量約束到一個(gè)白名單里。?php $allowedPages [ login __DIR__ . /views/login.php, profile __DIR__ . /views/profile.php, report __DIR__ . /views/report.php, ]; $page $_GET[page] ?? login; if (!isset($allowedPages[$page])) { http_response_code(404); exit(Invalid page); } include $allowedPages[$page];這個(gè)寫(xiě)法里用戶輸入只能決定選哪個(gè)預(yù)定義好的文件不再參與路徑拼接。目標(biāo)文件集合固定路徑解析的開(kāi)銷(xiāo)降到最低security問(wèn)題也被鎖死在白名單內(nèi)。如果性能要求再高一點(diǎn)可以把白名單數(shù)組定義成類(lèi)常量配合opcache效果接近靜態(tài)include。另外一個(gè)細(xì)節(jié)業(yè)務(wù)代碼里能多require就盡量別用include。include一個(gè)不存在的文件只給個(gè)warning腳本繼續(xù)跑后面大概率打出更奇怪的錯(cuò)誤排查起來(lái)難受。require失敗會(huì)直接終止至少問(wèn)題暴露得干脆。3.5 PHP 7.4 opcache.preload預(yù)加載提升到另一個(gè)層次如果你的項(xiàng)目依賴(lài)關(guān)系已經(jīng)理清而且核心類(lèi)庫(kù)比較穩(wěn)定可以考慮PHP 7.4引入的opcache.preload。它的原理是把指定文件在PHP服務(wù)啟動(dòng)時(shí)就編譯進(jìn)共享內(nèi)存請(qǐng)求進(jìn)來(lái)直接復(fù)用連運(yùn)行時(shí)include操作都省了。php.ini里配置opcache.preload/var/www/html/preload.php opcache.preload_userwww-datapreload.php大致這樣寫(xiě)?php $files [ __DIR__ . /src/Controller/HomeController.php, __DIR__ . /src/Controller/ListController.php, __DIR__ . /src/Repository/UserRepository.php, ]; foreach ($files as $file) { opcache_compile_file($file); }注意這里用的是opcache_compile_file不是include。include會(huì)執(zhí)行文件里的代碼opcache_compile_file只負(fù)責(zé)把文件編譯進(jìn)共享內(nèi)存不產(chǎn)生副作用安全得多。但preload有幾個(gè)坑必須先知道。預(yù)加載的類(lèi)如果在業(yè)務(wù)代碼里被重新聲明會(huì)直接報(bào)fatal error。這意味著每次部署新代碼只要類(lèi)定義有變化就得reload PHP-FPM否則新舊狀態(tài)沖突。另外opcache.preload在CLI模式下意義不大它主要服務(wù)常駐的PHP-FPM進(jìn)程池。用得好是性能利器用不好會(huì)把自己坑進(jìn)線上事故前期準(zhǔn)備不充分不建議輕易上。4. 真實(shí)案例一個(gè)模塊化CMS接口耗時(shí)優(yōu)化實(shí)錄4.1 項(xiàng)目背景與癥狀這個(gè)案例是我經(jīng)手的一個(gè)老牌模塊化CMS后臺(tái)接口。它的后臺(tái)管理側(cè)一直采用“模塊/動(dòng)作”的目錄風(fēng)格每個(gè)模塊一個(gè)文件夾按參數(shù)動(dòng)態(tài)加載對(duì)應(yīng)action文件。調(diào)用方反饋說(shuō)后臺(tái)列表接口經(jīng)常轉(zhuǎn)圈監(jiān)控?cái)?shù)據(jù)顯示首頁(yè)接口平均耗時(shí)360ms部分慢請(qǐng)求超過(guò)600ms40并發(fā)壓測(cè)時(shí)QPS只有一百八十。一開(kāi)始懷疑是SQL慢查詢但慢日志里并沒(méi)有特別離譜的語(yǔ)句。數(shù)據(jù)庫(kù)索引也檢查過(guò)沒(méi)發(fā)現(xiàn)明顯問(wèn)題。于是把視角從數(shù)據(jù)庫(kù)轉(zhuǎn)向PHP執(zhí)行本身。4.2 定位過(guò)程和數(shù)據(jù)表現(xiàn)用strace對(duì)壓測(cè)過(guò)程中的PHP-FPM進(jìn)程做采樣發(fā)現(xiàn)openat和stat相關(guān)系統(tǒng)調(diào)用次數(shù)高得異常。再用Xdebug profile跑同一個(gè)接口include相關(guān)節(jié)點(diǎn)的耗時(shí)占比達(dá)到37%接近四成。配合opcache_get_status檢查命中率只有82%對(duì)于一個(gè)核心接口來(lái)說(shuō)這個(gè)命中率非常不健康。順著代碼鏈路往下追發(fā)現(xiàn)這個(gè)問(wèn)題接口對(duì)應(yīng)的動(dòng)態(tài)包含結(jié)構(gòu)大致是這樣?php $module preg_replace(/[^a-z0-9_]/i, , $_GET[module] ?? ); $action preg_replace(/[^a-z0-9_]/i, , $_GET[action] ?? ); if (!$module || !$action) { exit(bad request); } include $baseDir . /modules/{$module}/{$action}.php;雖然對(duì)參數(shù)做了正則清洗但這仍然是地地道道的動(dòng)態(tài)包含。每個(gè)接口進(jìn)來(lái)PHP都要現(xiàn)拼接路徑、解析文件、發(fā)起文件操作。而且這個(gè)action文件還會(huì)繼續(xù)include自己的子模塊文件一層套一層整個(gè)請(qǐng)求成了一個(gè)隱晦的“動(dòng)態(tài)包含樹(shù)”。4.3 改造過(guò)程改造分三步走。第一步把業(yè)務(wù)邏輯按Controller類(lèi)重寫(xiě)。原來(lái)每個(gè)action文件里是一堆過(guò)程式代碼現(xiàn)在整理成HomeController、ListController等類(lèi)方法內(nèi)實(shí)現(xiàn)原來(lái)action的邏輯。第二步引入Composer按PSR-4規(guī)范做自動(dòng)加載。原來(lái)手工include的類(lèi)庫(kù)全部挪進(jìn)src/目錄composer dump-autoload -o生成優(yōu)化映射表。第三步入口腳本改成路由分發(fā)。不再根據(jù)參數(shù)拼文件路徑而是根據(jù)路由表實(shí)例化控制器并調(diào)用方法?php require __DIR__ . /vendor/autoload.php; $router [ dashboard [App\Controller\DashboardController::class, index], list [App\Controller\ListController::class, index], ]; $action $_GET[action] ?? dashboard; if (!isset($router[$action])) { http_response_code(404); exit(Not Found); } [$controllerClass, $method] $router[$action]; $controller new $controllerClass(); $controller-{$method}();這里借用PHP 7.1支持的array destructuring語(yǔ)法代碼更簡(jiǎn)潔但如果你還在PHP 5.6時(shí)代就老老實(shí)實(shí)用兩行賦值。4.4 性能對(duì)比數(shù)據(jù)改完后在同一臺(tái)機(jī)器、同樣并發(fā)條件下重新壓測(cè)結(jié)果如下指標(biāo)改造前改造后提升幅度平均接口耗時(shí)360ms96ms73.3%QPS40并發(fā)180620244%opcache命中率82%99.2%提升明顯內(nèi)存峰值42MB33MB21.4%需要說(shuō)明的是這組數(shù)據(jù)是單機(jī)環(huán)境多次壓測(cè)取的平均值不能直接照搬到你的項(xiàng)目里但它反映的趨勢(shì)是明確的動(dòng)態(tài)包含不是唯一瓶頸但它是疊加buff把SQL、IO、框架本身的性能問(wèn)題全都放大了。改掉之后整個(gè)接口的延遲基數(shù)降下來(lái)了。4.5 改造過(guò)程踩過(guò)的坑這個(gè)項(xiàng)目改造不像文章寫(xiě)得這么順中間至少踩了三個(gè)坑。第一個(gè)坑是preload上線翻車(chē)。當(dāng)時(shí)為了讓接口再快一點(diǎn)上了opcache.preload結(jié)果第二天發(fā)布新功能時(shí)新增的一個(gè)類(lèi)跟預(yù)加載緩存的舊類(lèi)定義沖突整個(gè)PHP-FPM報(bào)fatal error接口大面積502。后來(lái)才明白preload之后的類(lèi)生命周期完全由常駐進(jìn)程管理代碼更新必須同步reload。解決方案很簡(jiǎn)單調(diào)整發(fā)布腳本部署完成后統(tǒng)一重啟PHP-FPM。第二個(gè)坑是PSR-4大小寫(xiě)問(wèn)題。本地Windows環(huán)境開(kāi)發(fā)時(shí)類(lèi)文件名大小寫(xiě)寫(xiě)錯(cuò)了也不報(bào)錯(cuò)一上Linux線上環(huán)境Composer自動(dòng)加載立刻找不到類(lèi)。這個(gè)在Windows下開(kāi)發(fā)、Linux部署的項(xiàng)目里特別常見(jiàn)我的建議是盡早換成大小寫(xiě)敏感的文件系統(tǒng)習(xí)慣或者在CI流程里加一道文件名校驗(yàn)。第三個(gè)坑是opcache的revalidate_freq調(diào)太大導(dǎo)致線上代碼一直不生效。本地改了文件刷新頁(yè)面老樣子以為是緩存插件的問(wèn)題折騰半天才想起來(lái)自己把validate_timestamps設(shè)成了0。調(diào)試期千萬(wàn)別圖省事把緩存時(shí)間拉滿不然改代碼全靠猜。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 高頻問(wèn)題速查表現(xiàn)象可能原因解決方案接口慢、CPU偏高動(dòng)態(tài)包含文件數(shù)量多且opcache命中率低開(kāi)啟opcache改造為路由分發(fā)或自動(dòng)加載使用include變量路徑后頁(yè)面白屏文件不存在include只產(chǎn)生warning改用require或在包含前用白名單校驗(yàn)動(dòng)態(tài)包含時(shí)類(lèi)重復(fù)定義報(bào)錯(cuò)同一類(lèi)文件被多個(gè)動(dòng)態(tài)路徑加載統(tǒng)一用autoload避免手寫(xiě)include_once改代碼后線上不生效opcache.validate_timestamps0或revalidate_freq過(guò)大調(diào)整配置發(fā)布后reload PHP-FPMWindows正常、Linux報(bào)文件找不到文件名大小寫(xiě)和路徑分隔符差異統(tǒng)一使用__DIR__拼接嚴(yán)格遵守PSR-4大小寫(xiě)命名壓測(cè)工具顯示include耗時(shí)很高動(dòng)態(tài)路徑解析和系統(tǒng)調(diào)用疊加對(duì)比strace系統(tǒng)調(diào)用優(yōu)先做靜態(tài)依賴(lài)化改造5.2 實(shí)操心得分享做性能優(yōu)化有一個(gè)鐵律先量化再動(dòng)手。別靠感覺(jué)說(shuō)這段代碼慢先用基準(zhǔn)腳本或者Xdebug拿到耗時(shí)占比再?zèng)Q定要不要改。動(dòng)態(tài)包含在很多項(xiàng)目里都只是“幫兇”真正的主謀可能是慢SQL、循環(huán)里的IO、或者過(guò)度復(fù)雜的ORM映射。直接埋頭改include容易白忙一場(chǎng)。還有個(gè)容易被忽略的點(diǎn)動(dòng)態(tài)包含不光是性能問(wèn)題更是安全問(wèn)題。只要用戶輸入的任何東西能影響到文件路徑就存在被構(gòu)造來(lái)加載任意文件的風(fēng)險(xiǎn)。所以哪怕是臨時(shí)補(bǔ)丁也請(qǐng)先用白名單映射擋住路徑拼接這行改動(dòng)不花多少時(shí)間但能把風(fēng)險(xiǎn)降一個(gè)數(shù)量級(jí)。真正動(dòng)手改造老項(xiàng)目我建議分步走。第一步給所有動(dòng)態(tài)包含加白名單把風(fēng)險(xiǎn)鎖住第二步把過(guò)程式action文件改造成Controller類(lèi)方法理順業(yè)務(wù)邏輯第三步再上Composer自動(dòng)加載徹底告別手寫(xiě)include。三步之間互相獨(dú)立每步都能單獨(dú)上線回滾沒(méi)必要一把梭把整個(gè)項(xiàng)目推倒重來(lái)。最后再分享一個(gè)小技巧改造完成后可以在測(cè)試環(huán)境用同樣的請(qǐng)求分別打一次strace和壓測(cè)腳本把前后兩組系統(tǒng)調(diào)用數(shù)和QPS數(shù)據(jù)存下來(lái)。這些數(shù)據(jù)不僅是給領(lǐng)導(dǎo)看的成果也是下次再做類(lèi)似優(yōu)化時(shí)最可靠的參考基準(zhǔn)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩草久视频| 啊啊啊无码| 一起草av| 成人激情无码在线视频| 中文AV制服乱伦| 青青草玖玖爱| 91久久久老司机| 午夜视频久久久| 一牛影视久久久一区二区三区| 久久黄色视频一区二区三区| 日日爱99| 日本一级真人黄色性爱视频| 久久99九九九九6666免费观看软件| juliaann丝袜大战黑鬼| 97亚洲一区| 丁香啪啪| 伊人AAA| 欧美黑人精品一区二区| ,成人免费啪啪视频| 麻豆精品.欧美精品.日韩精品.| 亚洲免费97免费| 日韩三级一区| 色婷婷电影网| 天天做天天爽| 色婷婷久久| av天堂5| 色天使亚洲综合在线观看| 亚洲国产精品无码AV久久| 夜夜久久久| 999久久芭蕾| 久久欲| 国产精品美女视频诱惑| 日韩欧美亚欧在线视频| 精品日韩中文在线| www.大香| 97人人模人人爽人人| 精品一区二区综合熟妇| 九色婷婷| 欧美另类色| 久久久爆乳翘臀一线天伦理视频| 91婷婷伊人狠人| 色性欧美| 九九九偷拍| 国产精选视频| 91亚洲综合| 亚欧高清| 久久精品国产亚洲AV无码做| 嗯嗯啊在线视频| 日韩精品.久久精品.AV女优.天美传媒| 操婷婷逼| 媚薬在线视频麻豆| 亚洲精品久久久久久| 91精品操美女| 久96热在线观看视频| A一区片| jk白丝没脱就开始啪啪| 亚洲欧美国产成人综合不卡| 久久久久久久九九九九九九| 欧亚第一综合网| 亚洲欧洲久久天堂| 久久精品女同亚洲女同13| 精人妻一区二区三区| 女生看匆91网站| 伊人麻豆传媒| 久久精品三级影视| 亚洲天堂另类小说男人| 欧美激情亚洲情色| 探花精品 一区二区| 熟女这里只有精品6| 人人操人人摸人人看人人干| 狠狠操狠狠燥| 九月激情婷婷| 色综合五月天| 亚精品无码毛片一区二区三区| 人妻美腿丝袜日韩| 天天天天天天天天天天干美女| 久久肏大逼| 亚洲男人的天堂亚洲| 亚洲情色1区| 国产亚洲日本| 日本潮催一卡操| 国产久久av| 日韩一级二级| 蜜臀久久99精品久久久久电影| 久久久999| 亚洲图片日本AⅤ欧美在线| 久久婷婷伊人| 久久骚| 最新日本中文字幕| 九九热在线视频| 亚欧美综合网。| 9色国产精品一区粉嫩| 日本高清_区二区三区| 超碰人人乐97| 免费视频一二三区| 夜夜操二区| 色阁阁AV综合网| 日韩啊V| 五月天婷婷基地| 亚洲人综合| 久久国99999| 四虎精品一区二区| 精品国产肉丝袜在线拍国语| 一区二区播放| 日韩操人| 超碰九区| 黄色十八禁网站| 在线日韩日本亚洲国产| 色婷婷电影网| 欧美精品宗合| 一二三啪啪专区| 操逼视频国产无套| 日韩伦理久 久久 清纯| 中国女人内射6XXXXX| 久久综合精品一区二区三区| 国产在线强奸视频| 大香蕉欧美国产日韩高潮| yaouchengrenav| 欧美超碰9798| 国产探花精品在线| 啊啊啊啊啊啊啊啊要喷了| 被体育老师抱着c到高潮| 国产精品午夜福利视频| 久久久久久国产精品免费网站| 嗯嗯啊啊视频一区二区三区| 可能人人看人人摸| 色妺妺AⅤ| www.97在线| 东京热一区二区中文字幕| 色婷婷在线视频| 亚洲高清欧美总合| 日韩伦理久 久久 清纯| 精品人妻一区二区三区四区石在线| 看日韩美女二区三区免费操逼视频| 综合欧美色图| 色狠狠综合噜一二三区| 老子午夜伦不卡影院| 打av高清| 欧美黄色片AAAAA| 亚洲美女精品九九视频| 国精品一区二区三| 东京热男人的天堂精品| 欧美色图99| 久久超碰爱| 91在线免费精品视频| 日韩av色图综合| 家庭乱伦网站国产| 亚州性色| 精品人妻一区春色| 久热超碰| av强奸乱轮| 超碰九九| 国产AV天美| 亚洲第一狼人丝袜美女另类| 青女偷拍网| 艳美熟妇先锋一二三区| 岛国网址国产 | 精品国产自在在线99| 在线岛国新天堂8| 日韩色图 一区二区| 五月天婷婷色| **一级毛片国产| 69国产对白刺激| 日韩 欧美 国产 麻豆| 婷婷五月天色| 国产精品蜜乳AV| 少妇高潮九九九九| 国产精品视频在线观看| 久久精品女同亚洲女同13| 久久国色天香香蕉| 2020国产精品| 精品一区二区成人| 精品丝袜无码一区二区三APP| 青青草久草AV| 嗯阿好爽好紧| 日本特黄f c2| 97久精品| 日本少妇va7777| 国产超碰| 欧美亚洲中文字幕| 久久香蕉综合一本到3atv| 国产内射爽爽大片| 美女啊啊啊啊啊啊| 日韩兔费看黄片| 综合熟妇一区二区三区| 日韩av电影网站| 亚洲高清视频在线观看| 久久侵犯人妻爽爽爽| 性爱乱伦一区| 午夜欧美女人操逼| 色狠狠 - 百度| 久久精品国产亚洲AV高清演员表| 欧美一区二区三区不卡高清视频| 96超碰网| 老司机香蕉久久久久| 福利在线视频一区二区| 日韩欧美中文字| 精品176精品2| 成人久久精品| 国产熟女精品区| 九九热超碰97亚洲最新香蕉| 欧美性生活内射| av操操不卡| 亚洲精品色| 欧美激情亚洲色图| 德国一二三不卡| 欧美高清91| 午夜免费视频1000| 全球成人中文在线| 一级久久性爱视频| 欧美日韩夜夜| 亚洲国成人情色好看电影| 综合欧美日本三级| 久久6热视频免费观看| 亚洲字幕一区二区| 国产亚洲中文不卡二区| 午夜天堂啪啪| 欧美美女自慰一区二区三区| 国产精品经典一卡久久久| 久悠悠av| 精品无码人妻一区二区免费蜜桃| 综合av影片| 久偷拍欧美日韩三区| 亚洲91大片| 午夜操操操| 精品一区二区三区蜜桃| 欧美自拍偷拍综合图片| 免费伦费视频在线观看| 97人人射| 国产夫妻一区二区| 亚洲熟妇AV日韩熟妇在线| 欧美图片校园春色| 男人天堂2017| 久久欲| 国产v亚洲v日韩v欧美v片另类| 欧美加勒比| 思思视频免费看网站| 干干干天天| 99久久久| 色香在线| 97干97色| 色网在线视频观看免费| 五月天婷精品激情| 密臀在线免费观看| 天天操熟妇| 日本女人久久久| 日韩欧美福利视频看看| 久久老子无码午夜伦不卡| 亚洲 图片 综合91| 欧成人精品一区二区三区| 91亚州| 欧美日韩国产高清在线一二三区| 99综合自拍| 97在线视频观看免费| 亚洲精品久久久久毛片A片拉屎 | 欧美精品成人一区二区在线观看 | 97色涩| AV天堂因数| 秋霞操逼片| 99热这里是精品| 级品肉射| 精品无码一区二区三区| 婷婷久久综合| 一区二三区四区视频大全套| 国产捆绑一区| 天天日日夜夜| 日本高清视频在线观看黄已三辽| 丁香五六月啪啪| 97久久视频| 老熟妇一区二区三区啪啪| 天天综合-91入口| 操逼逼福利视频| 日韩中文字幕熟妇人妻 | 日韩性色b| av日韩中文字幕| 欧美日韩色综合网| 99re95| 91操操操操| 99无码| 亚洲一区二区中文字幕| 999国产精品999| 婷婷五月天无码| 一级做a爰片性色毛片久久| 超碰在线91| 综合亚州欧美| 99无码精品| 久久久久熟女| AV天堂丝袜| 日本天天干天天操一区| 亚州精人品大香蕉| 91麻豆天美| 男人天堂2019亚洲| 夜夜爽夜夜爽| 99999精品视频| 欧美人体性爱互联网第一页婷婷日本| 精品国产乱码久久久久久久久1| 久草老司机| 人妻日日干| 久久久神马影院| 日本操BAV| 欧美自拍网| 五月丁香啪| 亚洲精品少妇| 欧美有码亚洲中文字幕一区二区三区四区| 九九亚洲| 97超碰久久| 91人妻人人妻| 探花一区二区三| 国产久久久久影院老熟女| 深夜国产一区二区三区在线看| 日韩欧美中文字| 91天堂色男人的天堂| 福利天天都操| 天美AV片| 色操逼网| av影片在线观看不卡| 玖玖综合色| 乱伦AVxx| 女人综合网| 久久精品视频在线观看| 欧美精品自慰系列寂寞少妇| 欧洲精品二区| 天天看人人操屄犊摸阴| 亚洲精品三| 97干在线| 精品少妇高潮久久| 亚洲影院小综合| 亚洲偷拍自拍在线视频| 亚洲麻豆av一区二区| 91久久久老司机| 日韩成人电影AV| 你懂的在线观看区国产| juliaann欧美丝袜办公室| 亚洲日韩青青草色月| 伊人久操| 都市久久精品激情亚洲| julia国产在线| 天天日日日射| 99综合网| 精品国产片亚洲一区| 国产福利合集| 久久久涩| 日韩欧美中文字| 日本免费不卡二区| 乱精品一区字幕二区| 国产精品久久久久久久毛片1| 日日摸日日碰夜夜爽视频| 婷婷五月天无码| 嗯嗯嗯啊啊啊在线免费观看| 亚洲欧美中文日韩视频中国语| 国产精品久久久久无码Av网曝门| 大香蕉日韩| 91路www| 亚洲国产综合久久天堂| 丁香五月天啪啪| 极品美女福利在线观看| 国产高清免费不卡av| 人妻色偷色噜| 操东北女人| 暴力av在线| 人妻素股| 精品成人女人久久| 蜜臀亚洲综合一二三四区| 操狠狠| 丁香激情五月| 婷婷大香蕉| 亚洲各类熟们中文字幕| 国产综合永久精品日韩鬼片| 操逼不卡中文字幕| 人人操肉肉| 成人小说另类在线| 免费精品国偷自产在线在线| 久久大黄片| 久久超碰com| 人妖欧美一区二区| 99热这里只有精品1| 亚洲男人的天堂网| 狠狠爱夜夜干| 高潮9999外国| 极品色综合| 美女久久久久久久久久久| 欧美亚洲清纯| 精品久久97观看在线视频| 性高潮久久久久久久久久久| 亚洲综合在线91| 色约约一区=区三区| 色路综合| 日韩性爱长视频免费| 欧美情色亚洲| 欧美亚洲| 天天色黄色影院天天操| 日本精品高清一二区一本到| 1769一区二区| 日本在线一二| 99re8超碰| 久久久久久久久久黄色网| 99黄页网站| 美国三级日本三级久久99| 青青久久久| 色97干| 九t超碰| 天天摸天天操视频| 亚洲学生妹高清av| 3PAV乱伦视频| 国产精品视频内谢女人| 岛国网址国产 | 天天综合网站| 久插综合| 少妇九九九九| 欧美亚洲素人制服精品| 在线啊v一区| 欧美另类色图片| 欧美在线大香蕉| 粉嫩久久久极品| 国产精品乱码久久久久| 天天躁日日躁AAAAXXXX国产 | 色噜噜人妻丝袜AV资源| 日韩天天综合| 搞中出久久| 亚洲综合九九| 成人一区二区三区四区| 天天天肏屄肏屄肏屄欧美欧美| 91欧洲国产成人久久精品网站| 精品国产一区二区三区香蕉欧美| 99无码精品| 绯色AV粉色AV蜜臀AV| 亚州,欧美在线| 成人av福利在线观看| 久久99亚洲精品久久99果| 熟妇最新先锋一二三区| 欧美天天影院| 精品国产人成在线| 欧洲Au麻豆| 欧美在线大香999| 午夜乱轮操逼视频免费看| 色婷网| 加勒比海成人视频网 | 日韩精品一区二区三区四虎影视| 制服中出中文人人精品| 国产日韩精品suv| 欧美一区二区亚洲天堂| 午夜毛片高清免费不卡| 看全色黄大色大片免费视频| 伊人五月天| 色九九综合AV| 加勒比在线视频一区二区三区| 日韩偷拍色图| 亚洲欧美情色| 9久热| 久久国产精品视频| 亚洲导航深夜福利| 久久一二三四不卡| 午夜男女爽爽大片免费观看| 亚洲AV小说| 国产免费内射视频| 色五月首页| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 搡老熟女免费视频| 超碰97爽| 国产福利合集| 国产久久久9999| 加勒比综合88| 欧美日日网| 国产深夜福利| 伊人成人情色综合| 91人妻精华帖| 超碰久在线天天做| 丰满少妇乱子伦精品无| 91n.欧美| 欧美性爱在线无码| 亚洲欧美在线丝袜| 91女在线观看| 亚洲一区在线观看欧洲 | 午夜视频黄| 日日干夜夜操视频h| 国产免费黄色一级大片| 亚洲美女30b| 为用户提供免费看黄网址在线观看| 97这里都是精品| 老熟女乱伦一区| 夜精品久无码| 欧美在线视频99| 久久精品黄色| 欧美72网页| 日va操| 色综九九九一区| 色色色综合网| 一起草欧美| 无码精品啪啪啪一区二区三区三州| 国产亚洲禁久一区二区| 午夜在线播放| 免费αV在线视频| 97久久精品国产| 国产精品视频一区二区三区八戒| 插插综合网天天影视网| 六月婷激情福利天堂69| 一级性爱啪啪视频| 91国产丝袜白虎| 国产白领连续中出在线观看| 中日韩熟女| 亚州一区二区| 久久久国产精品亚洲精品| 日本九九九九| 精品少妇人妻av久久免费| 偷拍亚洲视频一区二区三区四区| 91人妻丝袜无码| 人妻aa| 玖草在线视频| 欧美女同在线| 综合激情97| 日本午夜久久电影| 亚洲图片激情综合另类| 黄页| 激情四射婷婷六月天| 少妇免费视频| 日韩性爱高清免费视频| 精品成人无码| 国产精品日日摸夜夜添骚逼| AV中文字幕剧情1区2区3| 亚洲色图超碰在线| 国产AV久久久蜜爱影集| 最新岛国大片| 国产高清午夜成人在线观看| 亚洲资源吧| 青青伊人久久| 超碰性爱97| 天天插天天插| 日韩人妻一区二区精品| WWW啪啪的com| 色网站导航大全| 久久女人| 欧美亚洲系列| 97精品人妻一二三四| 综合视频91| 亚洲熟妇无码一区二区三区| 蜜桃臀av在线观看| 激情综合久久| 欧美日韩第一页| 乳欲人妻办公室奶水| 国产精品无码成人精品| 亚洲精品久久久久毛片A片拉屎| 日韩AV噜噜噜一区二区三区四区 | 国产成人拍国产亚洲精品| 中文乱码字幕观看视频| www.人人摸在线视频| 国产成人精品一区| 欧美大干日韩| 9999九九九久久久| 亚洲一二三| 国精综合一二三区影视| 日韩AV色图| 香一区二区三区| 超碰久久中文| 99综合自拍| 啊啊啊好舒服好爽啊啊啊视频| 亚洲最大黄网| 精彩国产视频播放1区2区| 久悠悠av| 日本999精品视频| 九热大香蕉| 夜夜嗷嗷一区二区| 美国久久一二三四| 久久一本大香蕉| 免费超碰97久久| 高清不卡 中文 人妻| 五月天欧美色图| 91国内外在线| 91老妇女| 国产91 丝袜在线播放00-百度| 少妇熟女一区二区三区| 久久久96| 亚洲免费成人在线高清无码视频| 天天色,天天干,天天干| 午夜福利视频在线一区| 丁香久久| 黄网站黄视频网站进入口| 国产精品视频| 中韩中文字幕在线观看| 中文字幕欧美日韩三级| 亚洲免费成人在线高清无码视频| 国产69精品久久久久99尤物| www.婷婷| 精品久久久久黄少妇| 伦理弟一页| 欧美96交| AⅤ片水多多| 操逼操逼视频操逼| 亚洲中文字幕97久久精品少妇| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 97伦乱| 清纯唯美亚洲综合| 欧美日韩亚洲一区二区在线观看| 强免费黄色网址| 67194无码不卡| 试看60秒| 日本孕妇一区二区视频操逼免费看 | 91 在线亚洲| www.男人天堂| 天天综合亚洲综合| 在线观看黄色电话| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 超碰97综合在线| 欧美Aⅴ| 国产激情综合| 精国久久一区二区三区98| 伊人超碰97| 国产黄片在线免费观看| 天美麻豆精品视频99| 2026国产精品视频| 18禁看网站一区| 欧美啪啪女女| 欧美色自拍| 在线视频亚洲无码| 久久婷婷五月综合| 欧美丝袜美女电影一二三四区| 香蕉人欧美综合| 在线中文字幕极品av| 中文字幕一区二区三区蜜臀| 色色97爱| 去干网最新版| 亚欧洲一区二区视频| 中英熟女操女| 超碰人人乐97| 亚洲 在线| 桃花色涩综合影院| WWW美腿丝袜香蕉中文| 乱伦一区二区三区‘| 乱日视频| 久久久久少妇| 热久久91婷婷| 一区二区三| 深夜激情| 欧美亚洲另类在线蜜桃| 91久久国产综合精品| 91精品国产91久久福利| 加勒比在线视频| 60秒不遮不挡| 欧美成人都市人妻| 人爽不卡视频| 天美精品av| 少妇精品久久| 97超级久久强资源| 亚洲欧美色图| 射丝袜高跟鞋99| 国产又黄又爽| 人人澡人人澡人人| 色777999综合| 久久久∴| 久久综合九九| 美欧色综合| 色婷婷视频| 一区二区三区机械有限公司| 欧美日韩99精品麻豆传媒| 久久极品一区二区| 日本黄大片在线观看视频| http://qxhbdz.com| 狠久久| 秋霞色色影院| 国产在线76页| 亚洲1区2区三区高清中文字幕| 精品人妻一二三四区视频| 黄色AAAAA欧美| 强被迫伦姧在线观看无码网站| 欧美色图 人妻| 91精品人妻啪啪间| 手机午夜电影神马久久| 91天天爱| 91久久国外网| 牛牛aV| www.久久超碰| 人妻天堂综合网| 久久永久无码人妻视频| 免费9 1久久| 自拍视频一区在线观看| 好爽要喷了| 狠狠干综合| 欧美一二三级精品在线| www. 男人天堂成人在线| 精品久久久亚洲AV成人网站| 国产精品天堂| 日韩人妻精品中文字幕| 亚洲四虎熟女精品| 日本阿v天堂在线观看| 欧洲一区二区三区免费| 国产成人精品亚洲日本| 蜜桃av色偷偷av老熟女| 日韩欧美水蜜桃人妻| 亚洲天堂久久| 婷婷丁香九月| 啊啊啊久久| 日本九九久久99| 婷婷激情四射| 国语国产操逼伊人AV网| 久9无限国产| 天天激色| 中文字幕日产av人| 国产无套粉嫩白浆在| 日B操| 人人贴人人摸| 欧美综合色图片| 国产AV人人 夜夜人人澡| 国产 三级自拍| 久久欲| 91性情| 嫩草91| 亚洲永久AV无码精品秋霞| 97精品综合久久| 思思热国产在线视频| 试看日韩黄片| 这里只有精品97| WWW美腿丝袜香蕉中文| 亚洲另类色图片| 国产后入精品| 亚洲操逼网| 岛国黄色大片网站| 日本熟女中文字幕一区| 久久久性| 好色综合| 婷婷五月天激情四射| 少妇色欲综合网2| 亚拍在线| 日韩天天本| 日本A级视频| 久久发布国产伦子伦精品| 97操操| 亚洲色欲天天人妻无码系列专区| 欧美经典一区二区三区| 免费自拍三级综合| 久久精品午夜国产亚洲AV无码| 国产精品扒开腿做爽爽爽视频| 久肏视频字幕| 国产黑白丝在线| 精品无码产区一区二| 午夜综合在线| 人妻素股| 91色人| 啊啊啊啊,啊啊好多水| 人妻超碰青青草98| 九九九九九九九九九九九蜜桃| 91强在线播放| 亚洲情色综合网| 日本精品九九九| 9997se| 日韩欧美久久婷婷网站| 亚洲精品国产熟女久久久| 天天色踪合| 久男人久久| 91 亚欧| 78精品在线| 天天92av| 中文?日韩?免费?精品| 国产精品成人AV片免费看网站| 久久久久久久强迫| 性爱视频免费网址| 色网在线视频观看免费| 久久精品国产亚洲AV片多多| 亚洲国产欧美中日韩成人综合视频| 国模少妇一区二区三区| 狠狠色婷婷7777久| 久久精品视频久久久| 中文字幕亚洲欧美在线不卡| 东京热精品97综合网| 欧美第一页| 熟女少妇视频| 欧美福利视频啊啊啊啊| 中文字幕精品日韩中文字幕| 久久艹逼视频| 国产精品乱码久久久| 日本熟妇浓毛hdsex| 99在线免费公开视频| 国产精品成人蜜臀AV在线| 噜噜在线| 搞中出视频在线观看| 欧美色图99| 1769成人国产精品视频| 国产av强奸美女| 欧美婷婷五月天| 中文字幕91综合| 久久视频少妇美女| 亚欧美色| 国模不卡| 99久久com免费视频′| 欧色性第一页| 蜜臀99久久| 天天做日日做天天欢。| 九九热精品免费视频| 亚洲性综合| 97视频在线播放| 中文字幕精品一区二区精| 五月花婷婷| 91 亚洲情侣偷拍 久久| 超碰在线一区二区| 强奸乱伦αv片| 97 超碰 人人做 人人爱| 国产精品一区在线播放| 亚洲国产精品9999在线观看| 日韩精品99999| 色偷综合| 麻豆视频国产一区二区| 狠狠穞A片一區二區三區| 好舒服视频| 夜草网站| 激情文学网伊人| 中文无线日韩一区| 天天躁日日躁AAAAXXXX国产| 国产女人高潮视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 午夜舔阴达高潮视频免费看| 亚洲黄色a级片| 嫩草 人人网精品| 蜜桃久久一区| 黄片com.| 日本精品免费一区二区三区四区| 亚洲女人91| 黑人黄片在线免费观看| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 婷婷亚洲五月***久久| 亚州色站 日韩电影| 久操97| 天天干少妇| 91精品国产长腿丝袜美女| 日韩无码三级影院| 久久超碰亚洲人| 色婷婷一区二区三区久久| 亚洲夜夜欢无码一区二区| 加勒比伊人影院| 无码人妻精品一区二区中文| 日韩av熟女一区二区三区成人| 欧美精品庄| 99性视频| 超碰色97| 小少妇| 校园春色 欧美| 日本三级中国三级99人妇网站| 啊啊在线| 久久久久9999| 欧美自拍网| 色婷婷狠狠18禁| 97色操| 久久乐| 亚洲综合另类| 日日夜夜骚| 亚洲色图尤物视频| 91综合国产精品| 九色在线熟女国产黑人| 日韩中文9| 色爱国产| 东京热大香蕉| 色哟哟-国产专区| 飘花国产午夜精品不卡| 男人天堂 天天射| 日韩激情啪啪| 成人性交午夜免费片| 亚洲性爱高潮影院| 性色AV网站| 97国产色图 | #NAME?| 激情啪啪拍91| 夜夜躁狠狠躁日日躁av| 久久久久日本视| 情趣丝袜无码操逼视频| 色香伊人| 1024香蕉视频| 国产精品分类在线观看| 天天摸天天舔天天操| 国产91久久九九免费精品无码| 亚洲丝袜二区在线| 蜜臀久久久久久999| 无码直播久久久| 99热国产| 国产最新AV| 国产理论视频在线播放| 欧美 亚洲精品首页| 亚洲男人天堂2012| 久久精品国产亚洲AV成人直播| 欧美姓爱综合网| 99啪啪| www.色婷婷色综合| 久久久久亚洲熟妇熟女| 国产日韩中文字幕欧美| 蜜臀久久99精品久久久久久久久| 久综合国内精品自在自线| 欧美肥臀在线| 欧美天天谢综合网| 五月色网| 国产性爱在线视频一区二区| 天堂网亚洲区手机版| 欧美熟女妇同| 熟妇熟女视频一区二区三区| 欧美日韩亚洲一区二区在线观看| 91丝袜人妻| 国产成人主播| 口爆综合网| 久久鲁干| 啪啪啪东京| 色香天天| 久久噜噜噜精品国产亚洲综合| 久久久久久中文字幕中文字幕最新| 青椒国产97在线熟女| 在线观看中文字幕| 日韩射图| 超碰免费欧美7| 欧美中文字幕一区| 色99色| 乱伦系列一区二区| 福利操逼| 极品综合| 国产捆绑一区| 大香蕉日韩| 少妇人妻在线| 中文字幕av丝袜| 白丝AV网站| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 啊啊啊啊啊舒服| 欧美色图成人网一区二区| 亚洲综合小说另类图欧美视频激情小说色五月天 | 91精品国产日韩欧美综合| 91精品国产91综合久久蜜臀| 亚洲九九视频| 少好三P| 欧洲精品区| 久久爱超碰网| 精品人妻一区二区乱码一区二区 | 黄色片A级一区二区三区| 国产精品诱惑| 国产熟女无套内射| 少妇激情一区二区三区视频| 九色 蝌蚪 熟女自| 丝袜狂射91| 一区二区三区色综合| 久久久久久久久久黄色网 | 成人麻豆av电影网站| 天天干天天燥| 午夜操逼不卡| 黄片色区软件| 亚洲AV无码AV吞精久久久久 | 极品色电影院| 丰满人妻一区二区中文| 亚洲美女黄色| 啊啊啊啊啊舒服| 一区超碰一区| 少妇色欲综合网2| 九t超碰| 97爱爱爱| 成年人网站在线免费观看| 亚洲国产丝袜熟女av| 欧美视频一| 日韩在线一区高清在线| 伦伦成年午夜免费视频| 每日更新AV| 91精品丝袜久久久久久| 67914亚洲精品| 第二页中文字幕| 91黑丝美女| 嗯嗯啊啊的视频| 国产自偷| 精品国产乱码久久久久久网站入口| 精品视频在线观看| 日韩成人精品| 国产精品一级特黄aaa大片在线观看| 99久久精品无码一区二区| 一级A啪啪啪啪| 亚洲精品久| 九九九久久久久| 夜夜免费视频| 欧美劲爆第一页| 国产辣妈在线视频福利| 欧美日韩 强奸乱伦| 激情专区综合| 日韩紧密久久| 丝袜色综合| 啊啊啊啊啊啊在线| 国产精品成人久久一区二区三区| 新久久AV| 99操| 蜜臀久久在线视频| 91色欧美| 三级精品三级在线观看| 8050午夜少妇无码| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色偷偷2020免费视频播放| 日韩少妇无码| 懂色天天爱天天日天天射天天澡| 五月丁香六月激情| ai欧美亚洲小说| 热热色中文无码| 风流老熟女一区二区三区l| 久久国产三区| 日本三级韩国三级美三级91| 天天噜| 51一区二区三区| 日韩欧亚太美不卡| 一本一道久久综合久久| 香蕉国产精品麻豆亚洲欧美日韩| 久久久久久AⅤ无码免费肉站 | 日本操逼视频不卡直接放| 亚洲国产日韩欧美熟妇在线| 欧美精品第四五页中文字幕在线观看| 欧美线天码中字| 国产乱伦亚洲色图高清无码| av中文在线| 青青草玖玖爱| 69XX一中文字幕人妻91| 99色综合| 五十路熟女,国产欧美精品区一区二区三区| 丰满人妻区一区二区三| 国产高潮AA片免费看| www.AV有限公司一区| 国产精品久久久| 亚洲黄色影视| 欧美一区二区三区成人性生活| 探花视频免费观看国产专区| 日本人妻A片成人免费看片| 亚洲黄a三级三级三级看三级| 老司机福利青青草| 五月天色综合| 欧美人妻一区二区| 波多野结衣先锋影音| 日本日日色视频| 精品无码久久久久久久杏吧| 99在线免费观看| 黑人精品欧美一区二区蜜桃| 午夜偷拍久久熟女| 亚洲色图欧美另类在线| 亚洲网站一区二区在线| 久久精品国产精品亚洲艾通辽熟妇 | 中文字幕一区 二区三四五 区日 日骚| 精品制服美女中文一区二区三区| 2018天天干在线视频| 国产精品午夜成人福利| 97在线免费观看| 操久久久久久| 久久二| 亚洲一区二区麻豆影院| 少妇精品| 大香蕉AV在线| 超碰久超碰久| 五月丁香网站| 人妻欧美| 精品国产自在在线99| 色99999| 色九九九| 91人妻精华帖| 欧美 亚洲 综合 制服 另类| 岛国大片在线观看网站入口| 青青青艹在线视频| 亚洲高清无码在线桃色| 天天干夜夜肏| 91人妻Pr| 欧美天天综合在线| 精品女人999| 精品无码欧美三级| 国产精品色哟哟| 欧美一区二区三区另类精品| 97精品97久久| 夜夜草网站| 超碰97丝袜| 96AV久久久| 天天操夜夜嗨| 久肏视频字幕| 亚洲综合色男人网| 久久天天艹| 午夜精品久久久99热蜜桃的功能特点| WWW黄片COM| 国产精品香蕉| 精品国产72| 久操视频资源站公开| 欧美在线电影| 超碰 另类 欧美 | 欧美午夜色妇色鬼| 艹少妇网站| 蜜臀久久99精品久久久久久婷婷| 大鸡吧尹人在线| av天堂精品久久| 情色大香蕉| 欧美狠狠弄| 午夜高清成人在线视频| 中文字幕一区二区三区50路| 久久久网一区| 桃色五月天| 亚洲欧美在线观看无码| 国产2.3.4区| 麻豆久久久久久久久丝袜 | 国产少妇肉丝在线观看| 亚洲成人性爱网站在线播放| 日韩专区久久久| 九九久久久九九| 岛国艾薇凹凸视频天堂| 69精品| 久久国产999| 中日无幕一二三四区| 日本欧美亚洲高清在线看| 九九碰九九爱97超| 欧美综合传媒| 蜜臀精品1区2区| 国产精品成人蜜臀AV在线| 欧美色网| 国产视频97| 欧美亚洲美少妇一区二区| 亚洲天堂男人在线| 无码av永久免费专区网站| 欧美资源| 久久久少妇诱惑精品视频| 亚洲城人男人的天堂| 亚洲中文字幕精品久久久久久直播| 日韩欧美福利视频看看| 欧美97se| 久久精品国产久精国产| 91在线综合网| 丁香激情五月天| 国产精品亚洲一区二区三区四区| 日韩成人高清一区二区| 亚洲丨在线| 蜜乳av一区二区三区| 国产极品久久久| 久久天天摸| 99色在线视频| 3p国产色噜噜一区| 国产精品一级毛片不卡视| 人妻无一区二区三区| 亚洲国产综合图区中文字幕| 超碰 欧美| 久久精品一区二区三区蜜桃臀| 青青国产在线拍揄自揄拍| 青娱乐 成人娱乐在线| 婷婷五月丁香五月| 久久久九九网站| 一区二区三区免费岛国片| 国产日韩精品人妻久久久久色欲网站| 久久久中文| 91网站18| 一区二区高清视频| 91丝袜| 天天噜| 夜夜爽夜夜爽| 亚洲熟女av中文字幕| 中文字幕视频二区| 91天天综合在线| 天美av在线| 亚洲第一视频 欧美风情 日韩| 国产99999久久精品| 欧美亚州色的图| 日韩八十路老熟女| av草草在线电影| 亚洲男人天堂视频| 欧美在线|亚洲| 精品国产乱码久久久影院| 啊啊在线| 亚洲激情在线| 啊啊啊啊啊啊啊啊在线观看| 凹凸精品熟女在线观看| 999久久久| 男女日B国产| 黄色激情电影在线观看| 丰满人妻无码一区二区三区| 曰本人妻人人澡人人夹| 久久av成人无码免费| 亚洲成a人在线观看久| 日本熟妇人妻中出视频| 巨爆乳肉感一区二区三区竹菊影视|