<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

    網上關于Apache + JK + Tomcat的集群配置例子很多,按著例子配置下來,基本都能運行,不過,在一些重要的地方卻沒有進一步的說明。這次公司一個產品就是采用Apache+JK+Tomcat集群,在整個配置、測試過程中,遇到了許多的問題,經過不斷測試、摸索,最后總算是搞定了,性能也達到了預期的目標。針對網上的例子,感覺有必要再詳細的介紹一下我的配置過程,對一些要特別注意的地方進行補充。

    集群有別于分布式的解決方案,它采用的是每臺服務器運行相同應用的策略,由負責平衡的服務器進行分流,這對提高整個系統的并發量及吞吐量是更有效的辦法。而集群對請求的處理又有兩種不同的方式:負載平衡、狀態復制(即集群),狀態復制需要在各服務器間復制應用狀態,而負載平衡則不用,每臺服務器都是獨立的。實踐證明,在各應用服務器之間不需要狀態復制的情況下,負載平衡可以達到性能的線性增長及更高的并發需求。

    對于集群的其它基礎知識,在此就不再做累贅。以下就這次Apache + JK + Tomcat的負載平衡配置進行總結,重點關注整個配置及注意事項。

    準備軟件
    1、  Tomcat或JBoss(本文檔中采用的是JBoss4.0.2);

    2、  apache2.0.54是開源的Web服務器,下載地址為: http://www.apache.org/dist/httpd/binaries/

    3、  mod_jk-1.2.14-apache-2.0.54.so模塊,jk是mod_jserv的替代者,它是Tomcat-Apache插件,為Apache和Tomcat的連接器,處理Tomcat和Apache之間的通信,在集群配置中充當負載均衡器的作用,當前的最新版本為1.2.15,不過不同JK版本與不同的Apache版本之間的搭配有一些差異,有的甚至配不起來。JK2是符合apache2.x系列的新品,但由于其配置太過麻煩,使用的人很少,所以目前已停止開發,所以我們采用了jk連接器,下載地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/

    集群與負載平衡
    使用mod_jk默認的以輪循方式進行平衡負載,假設有四個服務器節點,有10個請求,則四個節點分別接受請求編號如下:

                                                                          節點1  節點2  節點3  節點4

                                                                               1         2          3         4
      
                                                                               5         6          7         8

                                                                               9        10

    而集群方式也是使用這種方法進行平衡。Tomcat中的集群原理是通過組播的方式進行節點的查找并使用TCP連接進行會話的復制。

        集群不同于負載平衡的是,由于集群服務需要在處理請求之間不斷地進行會話復制,復制后的會話將會慢慢變得龐大,因此它的資源占用率是非常高的,如果在并發量大的應用中,復制的會話大小會變得相當大,而使用的總內存更是會迅速升高。

        但集群的會話復制,增加了系統的高可用性。由于在每臺服務器都保存有用戶的Session信息,如果服務器群中某臺當機,應用可以自動切換到其它服務器上繼續運行,而用戶的信息不會丟失,這提高了應用的冗錯性。

    具體采用負載平衡還是集群,這要看應用的需求了。

    安裝配置Apache
    1、下載Apache的安裝程序apache_2.0.54-win32-x86-no_ssl.exe后,安裝很簡單,一路回車,就此略過。

    2、安裝完畢后,將下載的mod_jk-1.2.14-apache-2.0.54.so復制到Apache安裝目錄下的modules子目錄中。

    3、然后進入Apache安裝目錄下的conf子目錄中,打開httpd.conf配置文件,在最后插入以下一行:

    Include conf/mod_jk.conf

    4、  在conf子目錄下,建立一個新的配置文件:mod_jk.conf,此文件為Apache加載連接器的配置文件,文件名可修改,但要與httpd.conf中Include的文件名一致,內容如下:

    # Load mod_jk module. Specify the filename

    # of the mod_jk lib you’ve downloaded and

    # installed in the previous section

    #加載mod_jk模塊

    LoadModule jk_module modules/mod_jk-1.2.14-apache-2.0.54.so

    # Where to find workers.properties

    JkWorkersFile conf/workers2.properties

    # Where to put jk logs

    JkLogFile logs/mod_jk.log

    # Set the jk log level [debug/error/info]

    JkLogLevel info

    # Select the log format

    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

    # JkOptions indicate to send SSL KEY SIZE,

    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

    # JkRequestLogFormat set the request format

    JkRequestLogFormat "%w %V %T"

    # 請求分發配置,可以配置多項

    JkMount /* loadbalancer


    #關掉主機Lookup,如果為on,很影響性能,可以有10多秒鐘的延遲。
    HostnameLookups Off

    注:藍色加粗的兩行是重點,第一句是Apache加載JK模塊用的;第二句為配置哪些URL請求將由負載平衡器來處理。

    5、  在conf子目錄下,建立一個新的配置文件:workers2.properties,此文件為負載平衡的配置文件,文件名不能修改,這是JK默認的名字,內容如下:

    worker.list=loadbalancer

    # Define the first node...

    worker.server99.port=8009

    worker.server99.host=192.168.11.99

    worker.server99.type=ajp13

    worker.server99.lbfactor=1

    worker.server99.local_worker=1

    worker.server99.cachesize=1000

    worker.server99.cache_timeout=600

    worker.server99.socket_keepalive=1

    worker.server99.socket_timeout=0

    worker.server99.reclycle_timeout=300

    worker.server99.retries=3

    # Define the second node...

    worker.server202.port=8009

    worker.server202.host=192.168.11.202

    worker.server202.type=ajp13

    worker.server202.lbfactor=1

    worker.server202.local_worker=1

    worker.server202.cachesize=1000

    worker.server202.cache_timeout=600

    worker.server202.socket_keepalive=1

    worker.server202.socket_timeout=0

    worker.server202.reclycle_timeout=300

    worker.server202.retries=3

    # Now we define the load-balancing behaviour

    worker.loadbalancer.type=lb

    worker.retries=3

    worker.loadbalancer.balance_workers=server99 ,server202

    worker.loadbalancer.sticky_session=true

    worker.loadbalancer.sticky_session_force=true


    注:以上定義了兩個worker,一個為server99,另一個為server202,定義了一個負載平衡服務器loadbalancer,其中標藍色的為重點配置項,相關的詳細說明可以看官方的網站文檔:http://tomcat.apache.org/connectors-doc/,其它節點的定義可以直接Copy,修改一下節點名及IP就好了。
    A、worker.list=loadbalancer

    設定工作的負載平衡器,各Tomcat節點不能加入此列表。

    B、worker.server99.lbfactor

    負載平衡的權重比,如果此權重比越大,則分配到此節點的請求越多,如以上兩個節點的權重比為1:1,則為平均分配。

    C、worker.loadbalancer.balance_workers=server99,server202

       指定此負載平衡器負責的Tomcat應用節點。

    D、worker.loadbalancer.sticky_session=true

       此處指定集群是否需要會話復制,如果設為true,則表明為會話粘性,不進行會話復制,當某用戶的請求第一次分發到哪臺Tomcat后,后繼的請求會一直分發到此Tomcat服務器上處理;如果設為false,則表明需求會話復制。

    E、worker.loadbalancer.sticky_session_force=true

       如果上面的sticky_session設為true時,建議此處也設為true,此參數表明如果集群中某臺Tomcat服務器在多次請求沒有響應后,是否將當前的請求,轉發到其它Tomcat服務器上處理;此參數在sticky_session=true時,影響比較大,會導致轉發到其它Tomcat服務器上的請求,找不到原來的session,所以如果此時請求中有讀取session中某些信息的話,就會導致應用的null異常。

    6、Apache服務器的配置文件httpd.conf中,默認有三個參數對性能的影響比較大,但根據不同的性能要求,參數的表現又不一樣,太小并發提不上去,太大性能反而不好,建議根據項目的需要,實際做個測試,如并發要求800的話,可以設定為:

    #一個連接的最大請求數量

    MaxKeepAliveRequests 1000(值為0,則不限制數量)

    #每個進程的線程數,最大1920。NT只啟動父子兩個進程,不能設置啟動多個進程

    ThreadsPerChild    1000(最大為1920)

    #每個子進程能夠處理的最大請求數

    MaxRequestsPerChild   1000(值為0,則不限制數量)

    這三個參數要根據不同的需求,不同的服務器進行調整。

    安裝配置Tomcat或JBoss
    1、對于Tomcat或JBoss的安裝,這里不做說明,目前我們是采用Apache+JBoss,不過,JBoss也是用的Tomcat,所以這里的配置也是適合Tomcat的;

    2、對于JBoss的配置,很簡單,只需要改兩個地方就可以了:

    第一個地方:進入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar,打開server.xml,大約在第32行左右,有,在其中加入一個參數,變為:

    Engine name="jboss.web" defaultHost="localhost">

    給它增加一個jvmRoute屬性:

    <Engine jvmRoute="server1" name="jboss.web" defaultHost="localhost">
    請注意,jvmRoute的值必須和mod_jk中的節點名字正確對應,否則無法正確路由。Cluster中的所有節點都應該做相應的配置。

    Jboss的配置完成了,下面需要在你的web應用中修改配置文件,讓它支持集群。

    在WEB-INF\web.xml中加入屬性:    <distributable/>

    Ok,基于用戶的cluster完成了,每個用戶會綁定都某個節點上進行交互。這種綁定是如何完成的呢?原來apache把客戶分發到節點后,該節點會在用戶的session id后面加上此節點的路由名稱,變成這個樣子:

    Efdfxxd98daja87daj76da2dka**,server1

        有了這個標志,就能分辨該session屬于哪個節點。

    第二個地方:進入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar\META-INF目錄,打開jboss-service.xml,大約在110行,有false,將其改為:true

    這里有一個需要特別注意的地方,JBoss的Tomcat中,關于AJP連接協議的默認配置,對于大并發量是不夠用的,要做一些修改,進入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar,打開server.xml,找到的地方,這里是定義AJP連接器的地方,它的配置中沒有maxThreads項,默認為200,我們可以做修改:

             emptySessionPath="true" enableLookups="false" redirectPort="8443"

             protocol="AJP/1.3" maxThreads="3000"/>

    maxThreads的值要看你的并發量多大,設置太大也不好。

    運行至此,整個配置全部完成,注意一點是,在各JBoss節點,重啟或新增加一個JBoss節點時,需要重新啟動Apache,而對于服務器群中某個JBoss節點shutdown,Apache會自動偵測,不用重新啟動。

    如果在運行過程中,群中的某個JBoss節點shutdown,則已登錄到此服務器上的用戶的請求將出錯,此服務器負責的session將丟失,但Apache會自動偵測到此服務器已shutdown,后繼的新請求將不會再引導到此節點。

    對于負責請求分發的Apache服務器,需要消耗大量的CPU資源,因此如果在測試過程中出現一些Service Temporarily Unavailable或Server  has shut down the connection prematurely這樣的錯誤,這一般都是服務器配置不夠好引起的,或者是Apache、Tomcat、及應用中的某些配置不夠使用,這時候就要考慮換更好的機器或優化應用中的配置。


    常見問題

    一、cannot connect to server:無法連接到服務器。這種情況是服務器的配置有問題,服務器無法承受過多的并發連接了,需要優化服務器的配置:

    如操作系統采用更高版本,如windows 2003 server,

    優化tomcat配置:maxThreads="500" minSpareThreads="400" maxSpareThreads="450"

    但是tomcat 最多支持500個并發訪問

    優化apache配置:

    ThreadsPerChild 1900

    MaxRequestsPerChild  10000

    二、 Action.c(10): Error -27791: Server  has shut down the connection prematurely

    HTTP Status-Code=503 (Service Temporarily Unavailable)
    一般都是由于服務器配置不夠好引起的,需要優化硬件和調整程序了。

    三、無法處理請求:

    當我們輸入 ***.do 命令后,apache卻返回錯誤信息,而連接tomcat卻沒有問題。原因是沒有把.do命令轉發給tomcat處理。解決方法如下:

    在apache配置文件中配置如下內容:

    JkMount /*.jsp loadbalancer

    JkMount /*.do loadbalancer

    估計最高在線人數是3萬,并發人數最多100人。開發的網站是否能否承受這個壓力,如何確保網站的負荷沒有問題,經過研究決定如下:
    (1) 采用負載平衡和集群技術,初步機構采用Apache+Tomcat的機群技術。
    (2) 采用壓力測試工具,測試壓力。工具是Loadrunner。
    硬件環境搭建:
    為了能夠進行壓力測試,需要搭建一個環境。剛開始時,測試在公司局域網內進行,但很快發現了一個問題,即一個腳本的壓力測試結果每次都不一樣,并且差別很大。原來是受公司網絡的影響,于是決定搭建一個完全隔離的局域網測試。搭建后的局域網配置如下:
    (1) 網絡速度:100M
    (2) 三臺服務器:
    負載服務器 :操作系統windows2003,
    Tomcat服務器:操作系統windows2000 Professional
    數據庫服務器:操作系統windows2000 Professional
    三臺機器的cpu 2.4 G, 內存 1G。
    軟件環境搭建:
    軟件的版本如下:
    Apache 版本:2.054,
    Tomcat5.0.30,
    mysql :4.1.14.
    JDK1.5
    壓力測試工具:Loadrunner7.8。

    負載平衡方案如下:
    一臺機器(操作系統2003)安裝apache,作為負載服務器,并安裝tomcat作為一個worker;一個單獨安裝tomcat,作為第二個worker;剩下的一臺單獨作為數據庫服務器。
    Apache和tomcat的負載平衡采用JK1.2.14(沒有采用2.0,主要是2.0不再維護了)。
    集群方案:
    采用Tomcat本身的集群方案。在server.xml配置。
    壓力測試問題:
    壓力測試后,發現了一些問題,現一一列出來:
    (1) 采用Tocmat集群后,速度變得很慢。因為集群后,要進行session復制,導致速度較慢。Tomcatd的復制,目前不支持application復制。復制的作用,主要用來容錯的,即一臺機器有故障后,apache可以把請求自動轉發到另外一個機器。在容錯和速度的考慮上,我們最終選擇速度,去掉了Tomcat集群。
    (2) 操作系統最大并發用戶的限制:
    為了采用網站的壓力,我們開始的時候,僅測試Tomcat的最大負載數。Tomcat服務器安裝的操作系統是windows2000 Professional。當我們用壓力測試工具,并發測試時,發現只要超過15個并發用戶,會經常出現無法連接服務器的情況。經過研究,發現是操作系統的問題:windows2000 Professional 支持的并發訪問用戶有限,默認的好像是15個。于是我們把操作系統全部采用windows2003 server版本。
    (3) 數據庫連接池的問題:
    測試數據庫連接性能時,發現數據庫連接速度很慢。每增加一些用戶,連接性能就差了很多。我們采用的數據庫連接池是DBCP,默認的初始化為50個,應該不會很慢吧。查詢數據庫的連接數,發現初始化,只初始化一個連接。并發增加一個用戶時,程序就會重新創建一個連接,導致連接很慢。原因就在這里了。如何解決呢?偶爾在JDK1.4下的Tomcat5.0.30下執行數據庫連接壓力測試,發現速度很快,程序創建數據庫連接的速度也是很快的。看來JDK1.5的JDBC驅動程序有問題。于是我們修改 JDK的版本為1.4.

    (4) C3P0和DBCP
    C3P0是Hibernate3.0默認的自帶數據庫連接池,DBCP是Apache開發的數據庫連接池。我們對這兩種連接池進行壓力測試對比,發現在并發300個用戶以下時,DBCP比C3P0平均時間快1秒左右。但在并發400個用戶時,兩者差不多。

    速度上雖然DBCP比C3P0快些,但是有BUG:當DBCP建立的數據庫連接,因為某種原因斷掉后,DBCP將不會再重新創建新的連接,導致必須重新啟動Tomcat才能解決問題。DBCP的BUG使我們決定采用C3P0作為數據庫連接池。
    調整后的方案:
    操作系統Windows2003 server版本
    JDK1.4
    Tomcat 5.0.30
    數據庫連接池C3P0
    僅采用負載平衡,不采用集群。
    軟件的配置:
    Apache配置:主要配置httpd.conf和新增加的文件workers.properties
    Httpd.conf:
    #一個連接的最大請求數量
    MaxKeepAliveRequests 10000
    #NT環境,只能配置這個參數來提供性能

    #每個進程的線程數,最大1920。NT只啟動父子兩個進程,不能設置啟動多個進程
    ThreadsPerChild 1900
    每個子進程能夠處理的最大請求數
    MaxRequestsPerChild 10000


    # 加載mod_jk
    #
    LoadModule jk_module modules/mod_jk.so
    #
    # 配置mod_jk
    #
    JkWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    JkLogLevel info
    #請求分發,對jsp文件,.do等動態請求交由tomcat處理
    DocumentRoot \"C:/Apache/htdocs\"
    JkMount /*.jsp loadbalancer
    JkMount /*.do loadbalancer
    JkMount /servlet/* loadbalancer
    #關掉主機Lookup,如果為on,很影響性能,可以有10多秒鐘的延遲。
    HostnameLookups Off
    #緩存配置
    LoadModule cache_module modules/mod_cache.so
    LoadModule disk_cache_module modules/mod_disk_cache.so
    LoadModule mem_cache_module modules/mod_mem_cache.so


    CacheForceCompletion 100
    CacheDefaultExpire 3600
    CacheMaxExpire 86400
    CacheLastModifiedFactor 0.1


    CacheEnable disk /
    CacheRoot c:/cacheroot
    CacheSize 327680
    CacheDirLength 4
    CacheDirLevels 5
    CacheGcInterval 4


    CacheEnable mem /
    MCacheSize 8192
    MCacheMaxObjectCount 10000
    MCacheMinObjectSize 1
    MCacheMaxObjectSize 51200


    worker. Properties文件
    #
    # workers.properties ,可以參考
    http://jakarta.apache.org/tomcat/connectors-doc/config/workers.html
    # In Unix, we use forward slashes:
    ps=

    # list the workers by name

    worker.list=tomcat1, tomcat2, loadbalancer

    # ------------------------
    # First tomcat server
    # ------------------------
    worker.tomcat1.port=8009
    worker.tomcat1.host=localhost
    worker.tomcat1.type=ajp13

    # Specify the size of the open connection cache.
    #worker.tomcat1.cachesize

    #
    # Specifies the load balance factor when used with
    # a load balancing worker.
    # Note:
    # ----> lbfactor must be > 0
    # ----> Low lbfactor means less work done by the worker.
    worker.tomcat1.lbfactor=900

    # ------------------------
    # Second tomcat server
    # ------------------------
    worker.tomcat1.port=8009
    worker.tomcat1.host=202.88.8.101
    worker.tomcat1.type=ajp13

    # Specify the size of the open connection cache.
    #worker.tomcat1.cachesize

    #
    # Specifies the load balance factor when used with
    # a load balancing worker.
    # Note:
    # ----> lbfactor must be > 0
    # ----> Low lbfactor means less work done by the worker.
    worker.tomcat1.lbfactor=2000

    # ------------------------
    # Load Balancer worker
    # ------------------------

    #
    # The loadbalancer (type lb) worker performs weighted round-robin
    # load balancing with sticky sessions.
    # Note:
    # ----> If a worker dies, the load balancer will check its state
    # once in a while. Until then all work is redirected to peer
    # worker.
    worker.loadbalancer.type=lb
    worker.loadbalancer.balanced_workers=tomcat1,tomcat2

    #
    # END workers.properties
    #

    Tomcat1配置:

    port=\"8080\" maxThreads=\"150\" minSpareThreads=\"25\" maxSpareThreads=\"75\"
    enableLookups=\"false\" redirectPort=\"8443\" acceptCount=\"100\"
    debug=\"0\" connectionTimeout=\"20000\"
    disableUploadTimeout=\"true\" />


    maxThreads=\"500\" minSpareThreads=\"400\" maxSpareThreads=\"450\"
    enableLookups=\"false\" redirectPort=\"8443\" debug=\"0\"
    protocol=\"AJP/1.3\" />



    啟動內存配置,開發configure tomcat程序即可配置:
    Initial memory pool: 200 M
    Maxinum memory pool:300M
    Tomcat2配置:
    配置和tomcat1差不多,需要改動的地方如下:



    啟動內存配置,開發configure tomcat程序即可配置:
    Initial memory pool: 512 M
    Maxinum memory pool:768M
    Mysql配置:
    Server類型:Dedicated MySQL Server Machine
    Database usage:Transational Database Only
    并發連接數量:Online Transaction Processing(OLTP)
    字符集:UTF8
    數據庫連接池的配置:
    我們采用的是spring 框架,配置如下:


    org.hibernate.dialect.MySQLDialect
    com.mysql.jdbc.Driver
    jdbc:mysql://202.88.1.103/db
    sa


    false
    false

    true
    2

    200
    5
    12000
    50
    1


    其他的沒有額外配置。
    LoadRunner 常見問題:
    (1)sofeware caused connction:這種情況,一般是腳本有問題,或者loadrunner有問題。解決方法:重新啟動機器,或者重新錄制腳本,估計是loadrunner的bug。
    (2)cannot connect to server:無法連接到服務器。這種情況是服務器的配置有問題,服務器無法承受過多的并發連接了。需要優化服務器的配置,
    如操作系統采用windows 2003 server,
    優化tomcat配置:maxThreads=\"500\" minSpareThreads=\"400\" maxSpareThreads=\"450\"。但是tomcat 最多支持500個并發訪問
    優化apache配置:
    ThreadsPerChild 1900
    MaxRequestsPerChild 10000
    其他的錯誤如:
    Action.c(10): Error -27791: Server has shut down the connection prematurely
    HTTP Status-Code=503 (Service Temporarily Unavailable)
    一般都是由于服務器配置不夠好引起的,按照問題(2)處理,如果仍舊不行,需要優化硬件和調整程序了。
    Apache問題:
    (1) File does not exist: C:/Apache/htdocs/favicon.ico:
    這個問題是apache,htdocs目錄沒有favicon.ico文件引起的,該文件是網站的圖標,僅在firefox,myIE等瀏覽器出現。
    (2) 圖片無法顯示:
    配置apache后,卻無法顯示圖片。
    解決方法:把程序的圖片,按照程序結構copy到apache的htdocs目錄下。
    (3) 無法處理請求:

    沒有問題。原因是沒有把.do命令轉發給tomcat處理。解決方法如下:
    在apache配置文件中配置如下內容:
    DocumentRoot \"C:/Apache/htdocs\"
    JkMount /*.jsp loadbalancer
    JkMount /*.do loadbalancer


    總結:
    網站的壓力測試,涉及的知識面挺廣的,不僅要熟悉壓力測試,還要善于發現問題,要知道如何解決。最重要的一點,要有良好的測試方法。剛開始測試時,可以從最簡單的測試腳本入手,不需要太復雜的腳本,這樣便于發現問題。如我們剛開始時,就從一個簡單的下載登陸界面的腳本入手,測試一個tomcat的壓力負載。一個簡單的獲取登陸的腳本,幫助我們優化了tomcat的配置;后來再測試數據庫連接,也是一個簡單的數據庫連接腳本,幫助我們優化了數據庫連接池;然后利用這些簡單的腳本,測試apache的負載平衡,優化了apache配置。最后運行復雜的腳本,模擬多種角色的用戶在不同時間下的處理,以測試網站壓力負載。

    posted on 2008-08-31 09:37 禮物 閱讀(1931) 評論(0)  編輯  收藏 所屬分類: JBoss
    主站蜘蛛池模板: 午夜视频在线免费观看| 免费一级肉体全黄毛片| 亚洲狠狠成人综合网| 免费一级毛片在线播放不收费| a级毛片免费观看在线| 91亚洲精品麻豆| 亚洲免费一区二区| h在线观看视频免费网站| 国产亚洲精彩视频| 日木av无码专区亚洲av毛片| 天堂在线免费观看中文版| 久久免费香蕉视频| 亚洲中文字幕无码亚洲成A人片| 亚洲性久久久影院| 国产成在线观看免费视频| 一级做a爰全过程免费视频毛片| 亚洲精品人成电影网| 亚洲精品一级无码中文字幕| 免费观看激色视频网站bd| caoporn国产精品免费| 激情综合亚洲色婷婷五月| 亚洲尤码不卡AV麻豆| 成年女人毛片免费播放人| 黄页免费在线观看| 免费无码专区毛片高潮喷水| 亚洲人成电影在线观看网| 亚洲色欲色欲www在线丝| 成人免费无遮挡无码黄漫视频| 在线看片免费人成视频久网下载| 亚洲一区二区三区写真| 亚洲成年轻人电影网站www| 亚洲精品99久久久久中文字幕 | 欧洲亚洲国产清在高| 日本免费观看网站| 国产在线观看片a免费观看 | 日韩免费三级电影| 日本h在线精品免费观看| 免费成人在线电影| 国产精品免费在线播放| 男男gay做爽爽免费视频| 亚洲熟妇AV日韩熟妇在线|