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

JVM的關鍵系統參數介紹和詳細配置

云計算 虛擬化
JDK7與JDK8,甚至JDK7中的不同小版本,有些參數值都不一樣,所以不要輕信網上任何文章,一切以生產環境同版本的JDK打出來的為準。

[[331547]]

前言

-XX:+PrintFlagsFinal打印參數值

當你在網上興沖沖找到一個可優化的參數時,先打印看看,它可能已經默認打開了,再找到一個,還是默認打開了...

JDK7與JDK8,甚至JDK7中的不同小版本,有些參數值都不一樣,所以不要輕信網上任何文章,一切以生產環境同版本的JDK打出來的為準。

經常以類似下面的語句去查看參數,偷懶不起應用,用-version代替。有些參數設置后會影響其他參數,所以也得帶上。

  1. java -XX:+UseConcMarkSweepGC -XX:+PrintFlagsFinal -version| grep GCThreads 

對于不同版本里的默認值,建議是順勢而為,JDK在那個版本默認打開不打開總有它的理由。安全第一,沒有很好的因由,不要隨便因為網上某篇文章的推薦(包括你現在在讀的這篇)就去設置。

 

1. 性能篇

1.1 建議的性能參數

1. 取消偏向鎖: -XX:-UseBiasedLocking

JDK1.6開始默認打開的偏向鎖,會嘗試把鎖賦給第一個訪問它的線程,取消同步塊上的synchronized原語。如果始終只有一條線程在訪問它,就成功略過同步操作以獲得性能提升。

但一旦有第二條線程訪問這把鎖,JVM就要撤銷偏向鎖恢復之前的狀態,如果打開安全點日志,可以看到不少RevokeBiasd的紀錄,像GC一樣Stop The World的干活,雖然只是很短的停頓,但對于多線程并發的應用,取消掉它反而有性能的提升,所以Cassandra就取消了它。

2. 加大Integer Cache: -XX:AutoBoxCacheMax=20000

Integer i=3;這語句有著 int自動裝箱成Integer的過程,JDK默認只緩存 -128 ~ +127的Integer 和 Long,超出范圍的數字就要即時構建新的Integer對象。設為20000后,我們應用的QPS有足足4%的提升。為什么是2萬呢,因為-XX:+AggressiveOpts里也是這個值。詳見《Java Integer(-128~127)值的==和equals比較產生的思考》。

3. 啟動時訪問并置零內存頁面: -XX:+AlwaysPreTouch

啟動時就把參數里說好了的內存全部舔一遍,可能令得啟動時慢上一點,但后面訪問時會更流暢,比如頁面會連續分配,比如不會在晉升老生代時才去訪問頁面使得GC停頓時間加長。ElasticSearch和Cassandra都打開了它。

4. SecureRandom生成加速: -Djava.security.egd=file:/dev/./urandom

此江湖偏方原因是Tomcat的SecureRandom顯式使用SHA1PRNG算法時,初始因子默認從/dev/random讀取會存在堵塞。額外效果是SecureRandom的默認算法也變成更合適的SHA1了。詳見 《SecureRandom的江湖偏方與真實效果》

1.2 可選的性能參數

1. -XX:+PerfDisableSharedMem

Cassandra家的一個參數,一直沒留意,直到發生高IO時的JVM停頓。原來JVM經常會默默的在/tmp/hperf 目錄寫上一點statistics數據,如果剛好遇到PageCache刷盤,把文件阻塞了,就不能結束這個Stop the World的安全點了。

禁止JVM寫statistics數據的代價,是jps和jstat 用不了,只能用JMX,而JMX取新老生代的使用百分比還真沒jstat方便,VJTools的vjmxcli彌補了這一點。詳見《The Four Month Bug: JVM statistics cause garbage collection pauses》

2. -XX:-UseCounterDecay

禁止JIT調用計數器衰減。默認情況下,每次GC時會對調用計數器進行砍半的操作,導致有些方法一直溫熱,永遠都達不到觸發C2編譯的1萬次的閥值。

3. -XX:-TieredCompilation

多層編譯是JDK8后默認打開的比較驕傲的功能,先以C1靜態編譯,采樣足夠后C2編譯。

但我們實測,性能最終略降2%,可能是因為有些方法C1編譯后C2不再編譯了。應用啟動時的偶發服務超時也多了,可能是忙于編譯。所以我們將它禁止了,但記得打開前面的-XX:-UseCounterDecay,避免有些溫熱的方法永遠都要解釋執行。

1.3 不建議的性能參數

1. -XX:+AggressiveOpts

一些還沒默認打開的優化參數集合, -XX:AutoBoxCacheMax是其中的一項。但如前所述,關鍵系統里不建議打開。雖然通過-XX:+AggressiveOpts 與 -XX:-AggressiveOpts 的對比,目前才改變了三個參數,但為免以后某個版本的JDK里默默改變更多激進的配置,還是不要打開了。

2. JIT Compile相關的參數,函數調用多少次之后開始編譯的閥值,內聯函數大小的閥值等等,不要亂改。

3. -server,在64位多核的linux中,你想設成-client都不行的,所以寫了也是白寫。

 

2. 內存與GC篇

2.1 GC策略

為了穩健,還是8G以下的堆還是CMS好了,G1現在雖然是默認了,但其實在小堆里的表現也沒有比CMS好,還是JDK11的ZGC引人期待。

1.CMS基本寫法

  1. -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly 

因為我們的監控系統會通過JMX監控內存達到90%的狀況,所以設置讓它75%就開始跑了,早點開始也能減少Full GC等意外情況(概念重申,這種主動的CMS GC,和JVM的老生代、永久代、堆外內存完全不能分配內存了而強制Full GC是不同的概念)。為了讓這個設置生效,還要設置

UseCMSInitiatingOccupancyOnly,否則75%只被用來做開始的參考值,后來還是JVM自己算。

2. -XX:MaxTenuringThreshold=2

這是改動效果最明顯的一個參數了。對象在Survivor區最多熬過多少次Young GC后晉升到年老代,JDK8里CMS 默認是6,其他如G1是15。

Young GC是最大的應用停頓來源,而YGC后存活對象的多少又直接影響停頓的時間,所以如果清楚Young GC的執行頻率和應用里大部分臨時對象的最長生命周期,可以把它設的更短一點,讓其實不是臨時對象的新生代對象趕緊晉升到年老代,別呆著。

用-XX:+PrintTenuringDistribution觀察下,如果后面幾代的大小總是差不多,證明過了某個年齡后的對象總能晉升到老生代,就可以把晉升閾值設小,比如JMeter里2就足夠了。

3. -XX:+

ExplicitGCInvokesConcurrent 但不要加-XX:+DisableExplicitGC

讓full gc時使用CMS算法,不是全程停頓,必選。

但像R大說的,System GC是保護機制(如堆外內存滿時清理它的堆內引用對象),禁了system.gc() 未必是好事,只要沒用什么特別爛的類庫,真有人調了總有調的原因,所以不應該加這個爛大街的參數。

4. -XX:+ParallelRefProcEnabled 和 -XX:+

CMSParallelInitialMarkEnabled

并行的處理Reference對象,如WeakReference,默認為false,除非在GC log里出現Reference處理時間較長的日志,否則效果不會很明顯,但我們總是要JVM盡量的并行,所以設了也就設了。同理還有-XX:+

CMSParallelInitialMarkEnabled,JDK8已默認開啟,但小版本比較低的JDK7甚至不支持。

5. ParGCCardsPerStrideChunk

Linkined的黑科技, 2016版不建議打開,后來發現有些場景的確能減少YGC時間,詳見《難道他們說的都是真的》,簡單說就是影響YGC時掃描老生代的時間,默認值256太小了,但32K也未必對,需要自己試驗。

-XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=1024

2.2 可選的GC參數

1. 并發收集線程數

  1. ParallelGCThreads=8+( Processor - 8 ) ( 5/8 );ConcGCThreads = (ParallelGCThreads + 3)/4 

比如雙CPU,六核,超線程就是24個處理器,小于8個處理器時ParallelGCThreads按處理器數量,大于時按上述公式YGC線程數=18, CMS GC線程數=5。

CMS GC線程數的公式太怪,也有人提議簡單改為YGC線程數的1/2。

一些不在乎停頓時間的后臺輔助程序,比如日志收集的logstash,建議把它減少到2,避免在GC時突然占用太多CPU核,影響主應用。

而另一些并不獨占服務器的應用,比如旁邊跑著一堆sidecar的,也建議減少YGC線程數。

一個真實的案例,24核的服務器,默認18條YGC線程,因為旁邊有個繁忙的Service Mesh Proxy在跑著,這18條線程并不能100%的搶到CPU,出現了不合理的慢GC,把線程數降低到12條反而更快了。 所以那些貪心的把YGC線程數=CPU 核數的,通常弄巧成拙。

2. -XX:-CMSClassUnloadingEnabled

在CMS中清理永久代中的過期的Class而不等到Full GC,JDK7默認關閉而JDK8打開。看自己情況,比如有沒有運行動態語言腳本如Groovy產生大量的臨時類。它有時會大大增加CMS GC的暫停時間。所以如果新類加載并不頻繁,這個參數還是顯式關閉的好。

3. -XX:+CMSScavengeBeforeRemark

默認為關閉,在CMS remark前,先執行一次minor GC將新生代清掉,這樣從老生代的對象引用到的新生代對象的個數就少了,停止全世界的CMS remark階段就短一些。但如果打開了,會讓一次YGC緊接著一次CMS GC,使得停頓的總時間加長了。

又一個真實案例,CMS GC的時間和新生代的使用量成比例,新生代較小時很快完成,新生代快滿時CMS GC的停頓時間超過2秒,這時候就還是打開了劃算。

2.3 不建議的GC參數

1. -XX:+UseParNewGC

用了CMS,新生代收集默認就是它,不用自己設。

2.-XX:CMSFullGCsBeforeCompaction

默認為0,即每次Full GC都對老生代進行碎片整理壓縮。Full GC 不同于 老生代75%時觸發的CMS GC,只在老生代達到100%,堆外內存滿,老生代碎片過大無法分配空間給新晉升的大對象這些特殊情況里發生,所以設為每次都進行碎片整理是合適的,詳見此貼里R大的解釋。

3.-XX:+GCLockerInvokesConcurrent

我們犯過的錯,不是所有Concurrent字樣的參數都是好參數,加上之后,原本遇上JNI GCLocker只需要補償YGC就夠的,變成要執行YGC + CMS GC了。

2.4 內存大小的設置

其實JVM除了顯式設置的-Xmx堆內存,還有一堆其他占內存的地方(堆外內存,線程棧,永久代,二進制代碼cache),在容量規劃的時候要留意。

關鍵業務系統的服務器上內存一般都是夠的,所以盡管設得寬松點。

1. -Xmx, -Xms,堆內存大小,2~4G均可。

2. -Xmn or -XX:NewSize or -XX:NewRatio

JDK默認新生代占堆大小的1/3, 個人喜歡把對半分, 因為增大新生代能減少GC的頻率,如果老生代里沒多少長期對象的話,占2/3通常太多了。可以用-Xmn 直接賦值(等于-XX:NewSize and -XX:MaxNewSize同值的縮寫),或把NewRatio設為1來對半分。

3. -XX: PermSize=128m -XX:MaxPermSize=512m (JDK7)-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m(JDK8)

現在的應用有Hibernate/Spring這些鬧騰的家伙AOP之后類都比較多,可以一開始就把初始值從64M設到128M(否則第一次自動擴張會造成大約3秒的JVM停頓),并設一個更大的Max值以求保險。

JDK8的永生代幾乎可用完機器的所有內存,同樣設一個128M的初始值,512M的最大值保護一下。

2.5 其他內存大小的設置

1. -Xss

在堆之外,線程占用棧內存,默認每條線程為1M(以前是256K)。存放方法調用出參入參的棧,局部變量,標量替換后掉局部變量等,有人喜歡把它設回256k如Cassandra,節約內存并開更多線程,有人則會在遇到錯誤后把它再設大點,特別是有很深的JSON解析之類的遞歸調用時。

2. -XX:SurvivorRatio

新生代中每個存活區的大小,默認為8,即1/10的新生代 1/(SurvivorRatio+2),有人喜歡設小點省點給新生代,但要避免太小使得存活區放不下臨時對象而被迫晉升到老生代,還是從GC日志里看實際情況了。

3. -XX:MaxDirectMemorySize

堆外內存的最大值,默認為Heap區總內存減去一個Survivor區的大小,詳見《Netty之堆外內存掃盲篇》,如果肯定用不了這么多,也可以把它主動設小,來獲得一個比較清晰內存占用預估值,特別是在容器里。

4. -XX:ReservedCodeCacheSize

JIT編譯后二進制代碼的存放區,滿了之后就不再編譯,對性能影響很大。 JDK7默認不開多層編譯48M,開了96M,而JDK8默認開多層編譯240M。可以在JMX里看看CodeCache的占用情況,也可以用VJTools里的vjtop來看,JDK7下默認的48M可以設大點,不摳這么點。

 

3. 監控篇

JVM輸出的各種日志,如果未指定路徑,通常會生成到運行應用的相同目錄,為了避免有時候在不同的地方執行啟動腳本,一般將日志路徑集中設到一個固定的地方。

3.1 監控建議配置

1. -XX:+PrintCommandLineFlags

運維有時會對啟動參數做一些臨時的更改,將每次啟動的參數輸出到stdout,將來有據可查。打印出來的是命令行里設置了的參數以及因為這些參數隱式影響的參數,比如開了CMS后,-XX:+UseParNewGC也被自動打開。

2. -XX:-OmitStackTraceInFastThrow

為異常設置StackTrace是個昂貴的操作,所以當應用在相同地方拋出相同的異常N次(兩萬?)之后,JVM會對某些特定異常如NPE,數組越界等進行優化,不再帶上異常棧。此時,你可能會看到日志里一條條Nul Point Exception,而之前輸出完整棧的日志早被滾動到不知哪里去了,也就完全不知道這NPE發生在什么地方,欲哭無淚。 所以,將它禁止吧,ElasticSearch也這樣干。

3.2 Crash文件

1. -XX:ErrorFile

JVM crash時,hotspot 會生成一個error文件,提供JVM狀態信息的細節。如前所述,將其輸出到固定目錄,避免到時會到處找這文件。文件名中的%p會被自動替換為應用的PID

-XX:ErrorFile=${LOGDIR}/hs_err_%p.log

2. coredump

當然,更好的做法是生成coredump,從CoreDump能夠轉出Heap Dump 和 Thread Dump 還有crash的地方,非常實用。

在啟動腳本里加上 ulimit -c unlimited或其他的設置方式,如果有root權限,設一下輸出目錄更好

echo "/{MYLOGDIR}/coredump.%p" > /proc/sys/kernel/core_pattern

什么?你不知道coredump有什么用?看來你是沒遇過JVM Segment Fault的幸福人。

3. -XX:+

HeapDumpOnOutOfMemoryError(可選)

在Out Of Memory,JVM快死掉的時候,輸出Heap Dump到指定文件。不然開發很多時候還真不知道怎么重現錯誤。

路徑只指向目錄,JVM會保持文件名的唯一性,叫java_pid${pid}.hprof。因為如果指向文件,而文件已存在,反而不能寫入。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOGDIR}/

但在容器環境下,輸出4G的HeapDump,在普通硬盤上會造成20秒以上的硬盤IO跑滿,也是個十足的惡鄰,影響了同一宿主機上所有其他的容器。

3.3 GC日志

JDK9完全不一樣了,這里還是寫JDK7/8的配置。

1.基本配置

  1. -Xloggc:/dev/shm/gc-myapp.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails 

有人擔心寫GC日志會影響性能,但測試下來實在沒什么影響,GC問題是Java里最常見的問題,沒日志怎么行。

后來又發現如果遇上高IO的情況,GC時操作系統正在flush pageCache 到磁盤的話,也可能導致GC log文件被鎖住,從而讓GC結束不了。所以把它指向了/dev/shm 這種內存中文件系統,避免這種停頓,詳見《Eliminating Large JVM GC Pauses Caused by Background IO Traffic》

用PrintGCDateStamps而不是PrintGCTimeStamps,打印可讀的日期而不是時間戳。

2. -XX:+PrintGCApplicationStoppedTime

這是個非常非常重要的參數,它的名字沒起好,它除了打印清晰的完整的GC停頓時間外,還可以打印其他的JVM停頓時間,比如取消偏向鎖,class 被agent redefine,code deoptimization等等,有助于發現一些原來沒想到的問題,建議也加上。如果真的發現了一些不知是什么的停頓,需要打印安全點日志找原因。

3. -XX:+PrintGCCause

打印產生GC的原因,比如AllocationFailure什么的,在JDK8已默認打開,JDK7要顯式打開一下。

4. -XX:+PrintPromotionFailure

打開了就知道是多大的新生代對象晉升到老生代失敗從而引發Full GC時的。

5. GC日志滾動與備份

GC日志默認會在重啟后清空,有人擔心長期運行的應用會把文件弄得很大,所以"-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M"的參數可以讓日志滾動起來。但真用起來重啟后的文件名太混亂太讓人頭痛,GC日志再大也達不到哪里去,所以我們沒有加滾動,并且自行在啟動腳本里對舊日志做備份。

3.4 安全點日志

如果GC日志里有非GC的JVM停頓時間,你得打出安全點日志來知道詳情,詳見《 JVM的Stop The World,安全點,黑暗的地底世界》

  1. -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+UnlockDiagnosticVMOptions -XX:-DisplayVMOutput -XX:+LogVMOutput -XX:LogFile=/dev/shm/vm-myapp.log 

3.5 JMX

  1. -Dcom.sun.management.jmxremote.port=7001 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 

以上設置,只讓本地的Zabbix之類監控軟件通過JMX監控JVM,不允許遠程訪問。

如果應用忘記了加上述參數,又不想改參數重啟服務,可以用VJTools的vjmxcli來救急,它能通過PID直接連入目標JVM打開JMX。

 

4. 小結

謝謝大家看到這里,上文的所有內容,其實都在VJTools的 jvm-options.sh 里面了。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-11-01 10:34:37

JVM內存配置

2011-06-22 12:57:54

JVM

2009-07-08 14:23:40

JVM是什么

2010-09-25 13:31:00

TomcatJVM

2010-03-19 10:31:06

Java Socket

2011-06-30 18:43:26

長尾關鍵詞

2010-09-26 11:00:48

JVM參數配置

2009-12-25 16:51:37

ADO參數

2009-12-22 15:02:40

WCF限流

2010-03-11 11:07:37

Python函數參數

2011-06-21 09:50:51

volatile

2010-09-26 16:31:07

JVM參數配置

2010-09-17 15:57:23

TomcatJVM

2009-06-24 13:50:29

JSF和MVC

2011-06-30 10:20:38

JSFMVC

2011-07-08 16:24:53

VOPO

2009-07-01 10:12:40

JSP環境配置JSP引擎

2010-03-11 09:20:54

Ubuntu網絡配置

2010-06-13 12:32:58

Ubuntu Grub

2011-06-09 11:23:18

JAVAIO
點贊
收藏

51CTO技術棧公眾號

亚洲高清自拍| 996久久国产精品线观看| www.在线成人| 国产成人精品免费视频| 欧美视频一区二区在线| 一区二区三区视频免费视频观看网站| 五月天亚洲精品| 午夜老司机精品| 亚洲精选一区二区三区| 久久精品九九| 色综合久久精品亚洲国产 | 久久av中文字幕片| 欧美高清性猛交| 欧美人妻一区二区三区| 国产va免费精品观看精品| 午夜激情一区二区| 亚洲一区二区在线看| 午夜成人鲁丝片午夜精品| 美国毛片一区二区三区| 51精品在线观看| 国产色无码精品视频国产| 亚洲精品亚洲人成在线| 日韩视频免费直播| 三级在线免费看| 免费毛片b在线观看| 国产日韩av一区| 国内精品久久国产| 国产视频一区二区三区四区五区| 免费亚洲一区| 国外视频精品毛片| 污污的视频在线免费观看| 国产一区2区| 日韩av在线免费| 国产又黄又嫩又滑又白| 久久婷婷五月综合色丁香| 欧美视频一区二区三区…| 国产精品无码免费专区午夜| 在线观看国产原创自拍视频| 久久久久久黄色| 国产专区一区二区三区| 国产国语亲子伦亲子| 精品在线你懂的| 国产玖玖精品视频| aaa在线视频| 久久午夜电影| 国产91精品久久久| 日韩在线观看第一页| 一区二区亚洲| 欧美激情二区三区| 国产真实的和子乱拍在线观看| 欧美 日韩 国产精品免费观看| zzjj国产精品一区二区| 日韩欧美黄色网址| 人人狠狠综合久久亚洲婷| 亚洲欧美日韩在线高清直播| 粉嫩av懂色av蜜臀av分享| 另类春色校园亚洲| 精品国产一区a| 亚洲精品乱码久久久久久蜜桃欧美| 在线播放一区二区精品视频| 日韩欧美一级精品久久| 年下总裁被打光屁股sp | 欧美一区二区二区| 97超碰免费在线观看| 日日夜夜精品视频| 精品久久人人做人人爽| 国产在线不卡av| 欧美日韩破处| 亚洲视频在线视频| 亚洲激情图片网| 羞羞答答成人影院www| 美女福利视频一区| 日本a在线观看| 亚洲一区二区动漫| 国产精品www| 一道本在线视频| 国产精品亚洲综合一区在线观看| 4444kk亚洲人成电影在线| 朝桐光av在线一区二区三区| 不卡一卡二卡三乱码免费网站| 看欧美日韩国产| 成人激情电影在线看| 最好看的中文字幕久久| 久久男人资源站| 欧美二三四区| 欧美精品一二三| 逼特逼视频在线观看| 国产aⅴ精品一区二区三区久久| 国产一区二区三区在线免费观看| 欧美国产日韩在线观看成人| 99视频一区| 国产精品久久999| 99国产揄拍国产精品| aa级大片欧美| 亚洲 国产 欧美一区| 亚洲丝袜一区| 91成人免费网站| 性一交一黄一片| 国产一区二区三区四区二区| 久久综合国产精品台湾中文娱乐网| 日本一区二区欧美| 麻豆精品一区二区综合av| 高清视频一区二区三区| 成人在线免费看| 亚洲午夜影视影院在线观看| 美女网站视频黄色| 国产精品17p| 日韩中文在线视频| 日韩欧美亚洲视频| 韩国v欧美v日本v亚洲v| 欧美裸体网站| 欧美xxxx视频| 欧美日韩精品电影| 大地资源二中文在线影视观看| 91精品99| 国产精品视频播放| 日本中文字幕一区二区有码在线| 亚洲丝袜美腿综合| av丝袜天堂网| 欧美性生活一级片| 欧美大片免费观看在线观看网站推荐| 无码人妻av免费一区二区三区| 福利一区二区在线观看| 中文字幕不卡每日更新1区2区| 最新欧美色图| 亚洲成人av片| 国产在线一卡二卡| 久久国产综合精品| 三区精品视频| 亚洲成人不卡| 亚洲欧洲中文天堂| 日韩女优在线观看| 不卡一区二区在线| 久久手机在线视频| 日本精品在线播放 | 国产传媒一区| 超碰在线观看免费版| 欧美色涩在线第一页| 亚洲精品视频久久久| 99精品视频免费观看| 成人av蜜桃| 中文字幕资源网在线观看| 欧美日韩成人一区二区| 日本综合在线观看| 日本亚洲视频在线| 日韩精品资源| 99久久伊人| 在线播放亚洲激情| 国产成人自拍偷拍| 国产校园另类小说区| 成年人网站大全| 欧美色图国产精品| 国产精品久久久久久网站| 91吃瓜网在线观看| 欧美精品久久一区二区三区| 欧美xxxooo| 国产很黄免费观看久久| 91精品国产毛片武则天| 日本高清久久| 97在线观看免费高清| 天堂av中文在线资源库| 一本色道久久综合狠狠躁的推荐| 中文字幕人妻一区二区| 日日夜夜一区二区| 色999五月色| 99视频这里有精品| 欧美日韩第一视频| 嫩草精品影院| 欧美日韩精品一区二区在线播放 | 经典三级在线| 欧美性色综合网| 强制高潮抽搐sm调教高h| 国产成人免费网站| 香港三级韩国三级日本三级| 竹菊久久久久久久| 成人免费淫片aa视频免费| 羞羞网站在线看| 亚洲第一福利网站| 成人免费视频国产免费| 国产精品乱码久久久久久| 超碰中文字幕在线观看| 亚洲区一区二| 日本在线成人一区二区| 亚洲日本中文| 97人人爽人人喊人人模波多| 九色网友自拍视频手机在线| 欧美另类videos死尸| 精品无码人妻一区二区三| 久久久久久日产精品| 一级淫片在线观看| 99精品视频免费全部在线| 亚洲精品国产一区| 国产精品白丝av嫩草影院| 国产精品夫妻激情| 在线黄色网页| 国产亚洲精品va在线观看| 国产人妖一区二区三区| 欧美日韩激情网| 秋霞欧美一区二区三区视频免费 | 99久久99久久精品免费看小说.| 国产一区二区三区香蕉| 精品无码一区二区三区在线| 日韩情爱电影在线观看| 国产私拍一区| 成人av在线播放| 热久久美女精品天天吊色| caopen在线视频| 一二美女精品欧洲| 人妻少妇一区二区三区| 欧美日本乱大交xxxxx| 黑人一级大毛片| 亚洲精品欧美专区| 内射毛片内射国产夫妻| 91免费精品国自产拍在线不卡| 少妇丰满尤物大尺度写真| 日本不卡视频在线| 欧美网站免费观看| 国产综合网站| 制服诱惑一区| 欧美特黄一级大片| 久久久久久a亚洲欧洲aⅴ| а√中文在线天堂精品| 91精品久久久久久久久| 免费观看成人性生生活片 | 亚洲天堂2021av| 红桃av永久久久| 妺妺窝人体色www聚色窝仙踪| 中文字幕av资源一区| 亚洲国产无码精品| 99精品视频在线观看免费| 国产69视频在线观看| 国产伦精一区二区三区| 精品亚洲视频在线| 美国毛片一区二区三区| 国产九九在线视频| 久久裸体视频| 怡红院av亚洲一区二区三区h| 激情久久久久| 97超碰在线人人| 亚洲理论在线| 阿v天堂2017| 日韩五码在线| 日韩欧美视频网站| 亚洲综合好骚| 日韩精品一区二区三区不卡 | 精品电影在线| 亚洲欧洲中文天堂| 国内精品一区视频| 亚洲欧美日韩综合| 美州a亚洲一视本频v色道| 亚洲精品一区二三区不卡| 日本一卡二卡四卡精品| 日韩国产精品亚洲а∨天堂免| 无码国产色欲xxxx视频| 亚洲精品狠狠操| 欧美捆绑视频| 中文字幕日韩精品在线| 日本中文在线观看| 米奇精品一区二区三区在线观看| 污污片在线免费视频| 午夜精品久久久久久久99黑人| 啊啊啊久久久| 国产va免费精品高清在线| 日韩制服诱惑| 成人羞羞国产免费| 136福利精品导航| 国内一区在线| 国产乱码精品一区二区亚洲| 亚洲激情啪啪| 欧美三级黄美女| av7777777| 免费成人在线网站| 性高潮久久久久久| 91免费视频网址| 午夜精品久久久久99蜜桃最新版 | 97久久人人超碰| 欧美成人国产精品一区二区| 中文字幕一区二区三区蜜月| 久久97人妻无码一区二区三区| 欧美午夜影院在线视频| 亚洲图片视频小说| 欧美成va人片在线观看| 欧美午夜黄色| 久久精视频免费在线久久完整在线看 | 欧美日韩伦理一区二区| 亚洲xxx自由成熟| 欧美男gay| 久久精品在线免费视频| 亚洲一区二区三区高清不卡| a在线观看免费视频| 国产高清精品久久久久| 91视频免费观看网站| 亚洲人成网站色在线观看| 日韩手机在线观看| 欧美日韩国产免费一区二区| 亚洲av综合色区无码一区爱av| 亚洲欧美日韩国产成人| bt在线麻豆视频| 国产精品极品尤物在线观看| 91精品导航| 中日韩在线视频| 久久最新视频| 亚洲啪av永久无码精品放毛片 | 国产免费www| 欧美va日韩va| 午夜老司机在线观看| 午夜精品一区二区三区在线视| 外国成人毛片| 欧美裸体网站| 亚洲三级网站| 波多野结衣中文字幕在线播放| 久久久高清一区二区三区| 久久精品99久久久久久| 欧美精品在线观看播放| 可以在线观看的黄色| 久久久久久国产三级电影| 亚洲欧美专区| 神马影院我不卡| 99在线观看免费视频精品观看| 人妻换人妻仑乱| 国产精品久久久久影院色老大| www.com国产| 日韩高清a**址| 色欲狠狠躁天天躁无码中文字幕 | 99久久精品久久久久久ai换脸| 精品国产a一区二区三区v免费| www.射射射| 国产传媒一区在线| 亚洲最大的黄色网址| 欧美男男青年gay1069videost| 女人天堂在线| 日韩av不卡电影| 亚洲第一二三区| 毛片在线播放视频| fc2成人免费人成在线观看播放 | 色开心亚洲综合| 国产精品xxx视频| 国产一区二区电影在线观看| 亚洲国产精品久久久久爰色欲| av电影一区二区| 久久艹免费视频| 精品小视频在线| 依依综合在线| 欧美亚洲免费高清在线观看 | 欧美高清视频手机在在线| 日韩一级免费在线观看| 国产偷国产偷精品高清尤物| 日韩三级一区二区| 欲色天天网综合久久| 日韩毛片免费视频一级特黄| 伊人av成人| 国产一区二区女| 久久97人妻无码一区二区三区| 精品国产一区二区三区四区四| 华人av在线| 欧美三日本三级少妇三99| 日韩av午夜在线观看| 人人艹在线视频| 日韩一区二区三区免费观看| 蜜臀av国内免费精品久久久夜夜| 国产精品一国产精品最新章节| 一区二区黄色| 少妇久久久久久久久久| 在线观看亚洲精品| 久做在线视频免费观看| 99热在线播放| 校园春色综合网| 欧美福利在线视频| 日韩精品一区二区三区在线 | 亚洲av无码一区二区三区观看| 欧美视频裸体精品| 毛片在线不卡| 国产精品免费区二区三区观看| 欧美专区18| 欧美性x x x| 日韩精品免费在线视频观看| 成人国产精品入口免费视频| 国产在线无码精品| 久久一日本道色综合| 中文字幕在线观看欧美| 欧美日韩国产成人| 精品高清久久| 亚洲熟妇一区二区| 日韩欧美综合在线视频| 国产在线观看免费麻豆| 精品一区二区三区免费毛片| 人人精品人人爱| 国产精品18p| 中文字幕亚洲无线码a| 国产一区在线电影| 日本激情视频在线播放| 亚洲观看高清完整版在线观看| 粉嫩av在线播放| 国产高清自拍一区| 久久国产乱子精品免费女| 日韩精品成人在线| 美女av一区二区| 成人情趣视频| 大地资源二中文在线影视观看| 欧美一级二级在线观看|