LoadRunner出現error問題及解決方法總結

一、Step download timeout (120 seconds)

這是一個經常會遇到的問題,解決得辦法走以下步驟:

1、修改run time setting中的請求超時時間,增加到600s,其中有三項的參數可以一次都修改了,HTTP-request connect timeout,HTTP-request receieve timeout,Step download timeout,分別建議修改爲600、600、5000。run time setting設置完了後記住還需要在control組件的option的run time setting中設置相應的參數。

2、辦法一不能解決的情況下,解決辦法如下:

設置runt time setting中的internet protocol-preferences中的advaced區域有一個winlnet replay instead of sockets選項,選項後再回放就成功了。切記此法只對windows系統起作用,此法來自zee的資料。  

  

二、問題描述Connection reset by peer.

這個問題不多遇見,一般是由於下載的速度慢,導致超時,所以,需要調整一下超時時間。

解決辦法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’設置set advanced options(設置高級選項),重新設置一下“HTTP-request connect timeout(sec),可以稍微設大一些”。

  

三、問題描述connection refused

這個的錯誤的原因比較複雜,也可能很簡單也可能需要查看好幾個地方,解決起來不同的操作系統方式也不同。

1、首先檢查是不是連接weblogic服務過大部分被拒絕,需要監控weblogic的連接等待情況,此時需要增加acceptBacklog,每次增加25%來提高看是否解決,同時還需要增加連接池和調整執行線程數,(連接池數*Statement Cache Size)的值應該小於等於oracle數據庫連接數最大值。

2、如果方法一操作後沒有變化,此時需要去查看服務器操作系統中是否對連接數做了限制,AIX下可以直接vi文件limits修改其中的連接限制數、端口數,還有tcp連接等待時間間隔大小,wiodows類似,只不過windows修改註冊表,具體修改註冊表中有TcpTimedWaitDelay和MaxUserPort項,鍵值在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\]。因爲負載生成器的性能太好,發數據包特別快,服務器也響應特別快,從而導致負載生成器的機器的端口在沒有timeout之前就全部佔滿了。在全部佔滿後,就會出現上面的錯誤。執行netstat –na命令,可以看到打開了很多端口。所以就調整TCP的time out。即在最後一個端口還沒有用到時,前面已經有端口在釋放了。

1,這裏的TcpTimedWaitDelay默認值應該中是30s,所以這裏,把這個值調小爲5s(按需要調整)。
2,也可以把MaxUserPort調大(如果這個值不是最大值的話)。

  

四、問題描述open many files

問題一般都在壓力較大的時候出現,由於服務器或者應用中間件本身對於打開的文件數有最大值限製造成,解決辦法:

1、修改操作系統的文件數限制,aix下面修改limits下的nofiles限制條件,增大或者設置爲沒有限制,儘量對涉及到的服務器都作修改。

2、方法一解決不了情況下再去查看應用服務器weblogic的commonEnv.sh文件,修改其中的nofiles文件max-nofiles數增大,應該就可以通過了,具體就是查找到nofiles方法,修改其中else條件的執行體,把文件打開數調大。修改前記住備份此文件,防止修改出錯。

3、linux上可以通過ulimit –HSn 4096來修改文件打開數限制,也可以通過ulimit -a來查看。

4、linux上可以通過lsof -p pid | wc -l來查看進程打開的句柄數。

  

五、問題描述has shut down the connection prematurely

一般是在訪問應用服務器時出現,大用戶量和小用戶量均會出現。

來自網上的解釋:

1>應用訪問死掉

小用戶時:程序上的問題。程序上存在數據庫的問題

2>應用服務沒有死

應用服務參數設置問題

例如:

在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%

Java連接池的大小設置,或JVM的設置等

3>數據庫的連接

在應用服務的性能參數可能太小了

數據庫啓動的最大連接數(跟硬件的內存有關)

以上信息有一定的參考價值,實際情況可以參考此類調試。

如果是以上所說的小用戶時:程序上的問題。程序上存在數據庫的問題,那就必須採用更加專業的工具來抓取出現問題的程序,主要是程序中執行效率很低的sql語句,weblogic可以採用introscope定位,期間可以注意觀察一下jvm的垃圾回收情況看是否正常,我在實踐中併發500用戶和600用戶時曾出現過jvm鋸齒型的變化,上升下降都很快,這應該是不太正常的。

---------------------------------------

實際測試中,可以用telent站點看看是否可以連接進去,可以通過修改連接池中的連接數和適當增加應用內存值,問題可以解決。

  

六、問題描述Failed to connect to server

這個問題一般是客戶端鏈接到服務失敗,原因有兩個客戶端連接限制(也就是壓力負載機器),一個網絡延遲嚴重,解決辦法:

1、修改負載機器註冊表中的TcpTimedWaitDelay減小延時和MaxUserPort增加端口數。注:這將增加機器的負荷。

2、檢查網絡延遲情況,看問題出在什麼環節。

建議爲了減少這種情況,辦法一最好測試前就完成了,保證乾淨的網絡環境,每個負載機器的壓力測試用戶數不易過大,儘量平均每臺負載器的用戶數,這樣以上問題出現的概率就很小了。

  

七、問題描述Overlapped transmission of request to ... WSA_IO_PENDING

這個問題,解決方法:

1、方法一,在腳本前加入web_set_sockets_option("OVERLAPPED_SEND", "0"),禁用TTFB細分,問題即可解決,但是TTFB細分圖將不能再使用,附圖。

2、方法二,可以通過增加連接池和應用系統的內存,每次增加25%。

  

八、問題描述Deleted the current transaction ... since response time is not accurate

這個問題不多遇見,一般出現在壓力機器上發生ping值爲負數(AMD雙核CPU),可以重新啓動pc機或者打補丁,附圖。

 

九、問題描述HTTP Status-Code=500 (Internal Server Error) for

1、應用服務當掉,重新啓動應用服務。

2、當應用系統處於的可用內存處於閥值以下時,出現HTTP Status-Code=500的概率非常高,此時只要增加應用系統的內存,問題即可解決。

                                

十、問題描述Failed to transmit data to network: [10057] Socket is not connected

這個錯誤是由網絡原因造成的,PC1和PC2上面都裝了相同的loadrunner 9.0,且以相同數量的虛擬用戶數運行相同的業務(機器上的其他條件都相同),PC1上面有少部分用戶報錯,PC2上的用戶全部執行通過。

十一、問題描述Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1
解決方法:web_reg_save_param位置放錯了,應該放到請求頁面前面。
                      
十二、問題描述通過Controler調用遠程代理時報錯,Error: CCI security error:You are running under secure mode and the function system is not allowed in this mode.
解決方法:在代理開啓的時候,去掉勾選防火牆選項。

分析原則:

    •具體問題具體分析(這是由於不同的應用系統,不同的測試目的,不同的性能關注點)

    •查找瓶頸時按以下順序,由易到難。

   服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器操作系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫web服務器等)-〉應用瓶頸(SQL語句、數據庫設計、業務邏輯、算法等)

   注:以上過程並不是每個分析中都需要的,要根據測試目的和要求來確定分析的深度。對一些要求低的,我們分析到應用系統在將來大的負載壓力(併發用戶數、數據量)下,系統的硬件瓶頸在哪兒就夠了。

    •分段排除法很有效

分析的信息來源:

    •1根據場景運行過程中的錯誤提示信息

    •2根據測試結果收集到的監控指標數據

一.錯誤提示分析

分析實例:

1 •Error: Failed to connect to server "10.10.10.30:8080": [10060] Connection

•Error: timed out Error: Server "10.10.10.30" has shut down the connection prematurely

分析:

•A、應用服務死掉。

  (小用戶時:程序上的問題。程序上處理數據庫的問題)

•B、應用服務沒有死

  (應用服務參數設置問題)

   例:在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%

•C、數據庫的連接

   (1、在應用服務的性能參數可能太小了2、數據庫啓動的最大連接數(跟硬件的內存有關))

2 Error: Page download timeout (120 seconds) has expired

分析:可能是以下原因造成

•A、應用服務參數設置太大導致服務器的瓶頸

•B、頁面中圖片太多

•C、在程序處理表的時候檢查字段太大多

二.監控指標數據分析

1.最大併發用戶數:

應用系統在當前環境(硬件環境、網絡環境、軟件環境(參數配置))下能承受的最大併發用戶數。

在方案運行中,如果出現了大於3個用戶的業務操作失敗,或出現了服務器shutdown的情況,則說明在當前環境下,系統承受不了當前併發用戶的負載壓力,那麼最大併發用戶數就是前一個沒有出現這種現象的併發用戶數。

如果測得的最大併發用戶數到達了性能要求,且各服務器資源情況良好,業務操作響應時間也達到了用戶要求,那麼OK。否則,再根據各服務器的資源情況和業務操作響應時間進一步分析原因所在。

2.業務操作響應時間:

•分析方案運行情況應從平均事務響應時間圖和事務性能摘要圖開始。使用“事務性能摘要”圖,可以確定在方案執行期間響應時間過長的事務。

•細分事務並分析每個頁面組件的性能。查看過長的事務響應時間是由哪些頁面組件引起的?問題是否與網絡或服務器有關?

•如果服務器耗時過長,請使用相應的服務器圖確定有問題的服務器度量並查明服務器性能下降的原因。如果網絡耗時過長,請使用“網絡監視器”圖確定導致性能瓶頸的網絡問題

3.服務器資源監控指標:

內存:

    1 UNIX資源監控中指標內存頁交換速率(Paging rate),如果該值偶爾走高,表明當時有線程競爭內存。如果持續很高,則內存可能是瓶頸。也可能是內存訪問命中率低。

    2Windows資源監控中,如果Process\Private Bytes計數器和Process\Working Set計數器的值在長時間內持續升高,同時Memory\Available bytes計數器的值持續降低,則很可能存在內存泄漏。

內存資源成爲系統性能的瓶頸的徵兆:

   很高的換頁率(high pageout rate);

   進程進入不活動狀態;

   交換區所有磁盤的活動次數可高;

   可高的全局系統CPU利用率;

   內存不夠出錯(out of memory errors)

處理器:

    1 UNIX資源監控(Windows操作系統同理)中指標CPU佔用率(CPU utilization),如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。如果服務器專用於SQL Server,可接受的最大上限是80-85%

   合理使用的範圍在60%至70%。

    2 Windows資源監控中,如果System\Processor Queue Length大於2,而處理器利用率(Processor Time)一直很低,則存在着處理器阻塞。

CPU資源成爲系統性能的瓶頸的徵兆:  

    很慢的響應時間(slow response time)

     CPU空閒時間爲零(zero percent idle CPU)

    過高的用戶佔用CPU時間(high percent user CPU)

    過高的系統佔用CPU時間(high percent system CPU)

   長時間的有很長的運行進程隊列(large run queue size sustained over time)

磁盤I/O:

    1 UNIX資源監控(Windows操作系統同理)中指標磁盤交換率(Disk rate),如果該參數值一直很高,表明I/O有問題。可考慮更換更快的硬盤系統。

    2 Windows資源監控中,如果Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操作速率很低,則可能存在磁盤瓶徑。

I/O資源成爲系統性能的瓶頸的徵兆:

    過高的磁盤利用率(high disk utilization)

   太長的磁盤等待隊列(large disk queue length)

   等待磁盤I/O的時間所佔的百分率太高(large percentage of time waiting for disk I/O)

   太高的物理I/O速率:large physical I/O rate(not sufficient in itself)

   過低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))

   太長的運行進程隊列,但CPU卻空閒(large run queue with idle CPU)

4.數據庫服務器:

SQL Server數據庫:

    1 SQLServer資源監控中指標緩存點擊率(Cache Hit Ratio),該值越高越好。如果持續低於80%,應考慮增加內存。

    2如果Full Scans/sec(全表掃描/秒)計數器顯示的值比1或2高,則應分析你的查詢以確定是否確實需要全表掃描,以及SQL查詢是否可以被優化。

    3 Number of Deadlocks/sec(死鎖的數量/秒):死鎖對應用程序的可伸縮性非常有害,並且會導致惡劣的用戶體驗。該計數器的值必須爲0。

   4 Lock Requests/sec(鎖請求/秒),通過優化查詢來減少讀取次數,可以減少該計數器的值。

Oracle數據庫:

1如果自由內存接近於0而且庫快存或數據字典快存的命中率小於0.90,那麼需要增加SHARED_POOL_SIZE的大小。

   快存(共享SQL區)和數據字典快存的命中率:

   select(sum(pins-reloads))/sum(pins) from v$librarycache;

    select(sum(gets-getmisses))/sum(gets) from v$rowcache;

   自由內存:    select * from v$sgastat where name=’free memory’;

2如果數據的緩存命中率小於0.90,那麼需要加大DB_BLOCK_BUFFERS參數的值(單位:塊)。

緩衝區高速緩存命中率:

    select name,value from v$sysstat where name in ('db block gets’,

    'consistent gets','physical reads') ;

   

    Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))

3如果日誌緩衝區申請的值較大,則應加大LOG_BUFFER參數的值。

   日誌緩衝區的申請情況:

     select name,value from v$sysstat where name = 'redo log space requests' ;

4如果內存排序命中率小於0.95,則應加大SORT_AREA_SIZE以避免磁盤排序。

  內存排序命中率:

     select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name='sorts (disk)' and b.name='sorts (memory)'

  

   注:上述SQL Server和Oracle數據庫分析,只是一些簡單、基本的分析,特別是Oracle數據庫的分析和優化,是一門專門的技術,進一步的分析可查相關資料。

(另)

造成HTTP-500錯誤,可能存在的原因之個人實踐總結

1、運行的用戶數過多,對服務器造成的壓力過大,服務器無法響應,則報HTTP500錯誤。

減小用戶數或者場景持續時間,問題得到解決。

2、該做關聯的地方沒有去做關聯,則報HTTP500錯誤。進行手工或者自動關聯,問題得到

解決。

3、錄製時請求的頁面、圖片等,在回放的時候服務器找不到,則報HTTP500錯誤,若該頁

面無關緊要,則可以在腳本中註釋掉,問題將會得到解決。例如:有驗證碼的情況下,盡

管測試時已經屏蔽了,但是錄製的時候提交了請求,但回放的時候不存在響應。

4、參數化時的取值有問題,則報HTTP500錯誤。可將參數化列表中的數值,拿到實際應用

系統中進行測試,可排除問題。

5、更換了應用服務器(中間件的更換,如tomcat、websphere、jboss等),還是利用原

先錄製的腳本去運行,則很可能報HTTP500錯誤。因爲各種應用服務器處理的機制不一樣

,所錄製的腳本也不一樣,解決辦法只有重新錄製腳本。

6、Windows xp2與ISS組件不兼容,則有可能導致HTTP500錯誤。對ISS組件進行調整後問

題解決。

7、系統開發程序寫的有問題,則報HTTP500錯誤。例如有些指針問題沒有處理好的,有空

指針情況的存在。修改程序後問題解決。

 

 

 

1.LoadRunner錄製腳本時爲什麼不彈出IE瀏覽器?

  當一臺主機上安裝多個瀏覽器時,LoadRunner錄製腳本經常遇到不能打開瀏覽器的情況,可以用下面的方法來解決。

  啓動瀏覽器,打開Internet選項對話框,切換到高級標籤,去掉“啓用第三方瀏覽器擴展(需要重啓動)”的勾選,然後再次運行VuGen即可解決問題

  提示:通常安裝Firefox等瀏覽器後,都會勾選上面得選項,導致不能正常錄製。因此建議運行LoadRunner得主機上保持一個乾淨的測試環境。

  2.錄製Web腳本時,生成的腳本中存在亂碼該如何解決?

  錄製腳本前,打開錄製選項配置對話框Record-Options,進入到Advanced標籤,先勾選“Support charset”,然後選擇中支持UTF-8。再次錄製,就不會出現中文亂碼問題了。

  3.HTML-based script與URL-based script的腳本有什麼區別?

  使用“HTML-based script”的模式錄製腳本,VuGen爲用戶的每個HTML操作生成單獨的步驟,這種腳本看上去比較直觀;使用“URL-based script”模式錄製腳本時,VuGen可以捕獲所有作爲用戶操作結果而發送到服務器的HTTP請求,然後爲用戶的每個請求分別生成對應方法。

  通常,基於瀏覽器的Web應用會使用“HTML-based script”模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通信的JavaScript/VBScript代碼、基於瀏覽器的應用中使用了HTTPS安全協議,這時使用“URL-based script”模式進行錄製。

  4.爲什麼腳本中添加了檢查方法Web-find,但是腳本回放時卻沒有執行?

  由於檢查點功能會耗費一定的資源,因此LoadRunner默認關閉了對文本及圖像的檢查。要想開啓檢查功能,必須修改運行時的配置Run-time Setting。

  進入“Run-time Setting”對話框,依次進入“Internet Protocol→Preferences”,勾選Checks下的“Enable Image and text check”選項即可。

  檢查執行結果時推薦使用web_reg_find方法。

  5.運行時的Pacing設置主要影響什麼?

  Pacing主要用來設置重複迭代腳本的間隔時間。共有三種方法:上次迭代結束後立刻開始、上次迭代結束後等待固定時間、按固定或隨機的時間間隔開始執行新的迭代。

  根據實際需要設置迭代即可。通常,沒有時間間隔會產生更大的壓力。

  6.運行時設置Log標籤中,如果沒有勾選“Enable logging”,則手工消息可以發送嗎?

  Enable logging選項僅影響自動日誌記錄和通過lr_log_message發送的消息。即使沒有勾選,虛擬用戶腳本中如果使用lr_message、lr_output_message、lr_error_message,仍然會記錄其發出的消息。

  7.LoadRunner 8.0版本的VuGen在錄製Web Services協議的腳本時一切正常,而回放時報出錯誤提示“Error:server returned an incorrectly formatted SOAP response”。這時說明原因引起的?

  造成這種情況的主要原因是LoadRunner 8.0的VuGen在錄製Web Service協議的腳本時存在一個缺陷:如果服務器的操作系統是中文的,VuGen會自動將WSDL文件的頭改爲<?xml version=”1.0” encoding=”zh_cn”?>,因此會有上面的錯誤提示。

  解決方法:把“LR80WebservicesFPI_setup.exe”和“lrunner_web_sevices_path_1.exe”兩個補丁打上即可解決。

8.VuGen支持Netscape的客戶證書嗎?

  不支持。目前的VuGen 8.0版本中僅支持Internet Explorer的客戶端證書。錄製腳本時可以先從Netscape中導出所需的證書,然後將其導入到Internet Explorer中,並確保以相同的順序導出和導入這些證書。而且,在每臺將要錄製或運行需要證書的Web Vuser腳本的計算機上都要重複執行前面的過程。

  9.VuGen會修改錄製瀏覽器中的代理服務器設置嗎?

  會修改。在開始錄製基於瀏覽器的Web Vuser腳本時,VuGen首先會啓動指定的瀏覽器。然後,VuGen會指示瀏覽器訪問VuGen代理服務器。爲此,VuGen會修改錄製瀏覽器上的代理服務器設置。默認情況下,VuGen會立即將代理服務器設置更改爲Localhost:7777。錄製之後,VuGen會將原始代理服務器設置還原到該錄製瀏覽器中。因此,在VuGen進行錄製的過程中,不可以更改代理服務器設置,否則將無法正常進行。

  10.在LoadRunner腳本如何輸出當前系統時間?

  LoadRunner提供了char *ctime(const time_t *time)函數,調用參數爲一個Long型的整數指針,用於存放返回時間的數值表示。

  調用語句與返回值如下示例:

typedef long time_t;
Action()
{
        time_t t;
        lr_message(“Time in seconds since 1/1/70: %ld\n”,time(&t));
        lr_message(“System time and date: %s”,ctime(&t));
}

  輸出結果爲:

  Time in seconds since 1/1/70: 1185329968

  System time and date:Wed Jul 25 10:19:28 2007

  11.一些Web虛擬用戶腳本錄製後立刻回放沒有任何問題,但是當設置迭代次數大於1時,如果進行回放則只能成功迭代一次。爲什麼從第二次迭代開始發生錯誤?

  這種現象多是由於在“Run-time Setting”的“Browse Emulation”的設置中,勾選了“Simulate a new user on each iteration”及其下面的選項“Clear cache on each iteration”這兩個選項的含義是每次迭代時模擬一個新的用戶及每次迭代時清除緩存。

  由於腳本迭代時,init和end只能執行一次,如果每次迭代都模擬一個新的用戶並清除緩存,則用戶登錄信息將一併清除,因此迭代時可能會發生錯誤。

  12.虛擬客戶腳本“Run-time Setting”中的線程和進程運行方式的區別?

  如果選擇“Run Vuser as a process”,則場景運行時會爲每一個虛擬用戶創建一個進程;選擇“Run Vuser as a thread”則將每個虛擬用戶作爲一個線程來運行,在任務管理器中只看到一個mmdrv.exe,這種方式的運行效率更高,能造成更大的壓力,時默認選項。

  另外,如果啓用了IP欺騙功能,則先在Controller中選中Tools菜單下的“Expert Mode”,然後將Tools菜單下的“Options>General”標籤頁中的IP地址分配方式也設置爲與Vuser運行方式一致,同爲線程或進程方式。

  13.在Controller中運行Web相關測試場景時,經常會有很多超時錯誤提示,如何處理這類問題?

  這主要有腳本的默認超時設置引起。當回放Web腳本時,有時候由於服務器響應時間較長,會產生超時的錯誤。這時需要修改腳本的運行時配置。

  進入“Run-time Setting”對話框後,依次進入“Internet Protocol→Preference”。然後點擊“Options…”按鈕,進入高級設置對話框,可以修改各類超時設置的默認值。

  14.爲什麼Windows系統中的CPU、內存等資源仍然充足,但是模擬的用戶數量卻上不去?

  在Windows計算機的標準設置下,操作系統的默認限制只能使用幾百個Vuser,這個限制與CPU或內存無關,主要是操作系統本身規定了默認的最大線程數所導致。要想突破Windows這個限制,須修改Windows註冊表。以Windows XP Professional爲例。

  (1)打開註冊表後,進入註冊表項HKEY_LOCAL_MACHINE中的下列關鍵字:System\CurrentControlSet\Control\Session Manager\SubSystems。

  (2)找到Windows關鍵字,Windows關鍵字如下所示:

  %SystemRoot%\system32\csrss.exe bjectDirectory=\Windows

  SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1

  ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2

  ProfileControl=Off MaxRequestThreads=16

  SharedSection=1024,3072,512關鍵字的格式爲xxxx,yyyy,zzz。其中,xxxx定義了系統範圍堆的最大值(以KB爲單位),yyyy定義每個桌面堆得大小。

  (3)將yyyy的設置從3072更改爲8192(即8MB),增加SharedSection參數值。

  通過對註冊表的更改,系統將允許運行更多的線程,因而可以在計算機上運行更多的Vuser。這意味着能夠模擬的最大併發用戶數量將不受Windows操作系統的限制,而只受硬件和內部可伸縮性限制的約束

15.Controller中設置了用戶併發數量,但是運行時爲何初始化的用戶數量少於實際數量?

  主要時設置問題。在Tools→options→Run-time setting中可以設置每次最多初始化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章