性能測試面試題(一)

1.性能測試的應(yīng)用領(lǐng)域有哪些榴鼎?

能力驗證:通過實際的測試結(jié)果證明自己系統(tǒng)的預(yù)期能力

瓶頸分析:通過一系列的測試手段發(fā)現(xiàn)系統(tǒng)存在的性能瓶頸(并發(fā),負(fù)載晚唇,壓力巫财,失效恢復(fù))

性能調(diào)優(yōu):通過一系列的技術(shù)手段優(yōu)化系統(tǒng)性能,包括響應(yīng)時間哩陕,吞吐量平项,資源利用率

容量規(guī)劃:為了符合未來的規(guī)劃預(yù)期(用戶數(shù),市場占有率)悍及,對資源做相應(yīng)的調(diào)整闽瓢。

2.交付一個性能測試項目,請闡述你的性能測試流程

    1:分析需求

    2:制定測試計劃和方案(人力資源心赶,時間資源扣讼,測試機器資源)

    3:設(shè)計性能測試場景和用例(并發(fā),負(fù)載缨叫,壓力椭符,穩(wěn)定性測試)

    ===搭建環(huán)境===

    4:準(zhǔn)備用戶數(shù)據(jù)(如何確定用戶并發(fā)數(shù))

        (1)線上的注冊用戶數(shù)的10%做測試環(huán)境的在線用戶

        (2)根據(jù)高峰時間段和業(yè)務(wù)量荔燎,計算平均并發(fā)和峰值并發(fā)

    5:設(shè)計性能測試腳本(jmter或者lr)

        (1)線程,請求销钝,關(guān)聯(lián)湖雹,斷言,參數(shù)化曙搬,報告

        (2)不同的線程組設(shè)計不同的測試類型

    6:運行摔吏,監(jiān)控測試數(shù)據(jù)

        jmeter監(jiān)聽器,jtl數(shù)據(jù)纵装,grafana+jmeter征讲,非gui

    7:分析性能瓶頸

        吞吐量瓶頸,響應(yīng)時間瓶頸橡娄,資源利用率瓶頸

    8:性能調(diào)優(yōu)

        (1)吞吐量調(diào)優(yōu):中間件诗箍,jvm,網(wǎng)卡帶寬

        (2)硬件調(diào)優(yōu):cpu挽唉,磁盤滤祖,IO,TCP連接瓶籽,swap內(nèi)存

    9:出具性能測試報告和總結(jié)

3. jmeter如何設(shè)計性能測試場景匠童?

并發(fā)測試:基礎(chǔ)線程組(強調(diào)單位時間的并發(fā),不存在絕對并發(fā))

基準(zhǔn)測試:反復(fù)對比結(jié)果塑顺,驗證調(diào)優(yōu)結(jié)果是否通過(tps是否提升汤求,響應(yīng)時間是否下降)

負(fù)載測試:持續(xù)不斷地增加負(fù)載,發(fā)現(xiàn)性能瓶頸(階梯加壓線程組严拒,Concurrency Thread Group)

    并發(fā)用戶模式的負(fù)載:不斷增加并發(fā)用戶數(shù)扬绪,發(fā)現(xiàn)瓶頸

    吞吐量模式的負(fù)載:不斷增加每秒請求數(shù)(rps)對服務(wù)端施壓,發(fā)現(xiàn)tps瓶頸

壓力測試:tps瓶頸點上持續(xù)負(fù)載

    穩(wěn)定性壓力測試:tps保持高壓穩(wěn)定裤唠。一般取最大tps的80%持續(xù)運行

    破壞性壓力測試:目的是只需要服務(wù)端出現(xiàn)異常
    
失效恢復(fù)測試:出現(xiàn)異常之后挤牛,系統(tǒng)可以很快的恢復(fù)

容量規(guī)劃測試:50萬,高峰時間段2小時

4.解釋常用的性能指標(biāo)的名稱與具體含義

吞吐量

 hps:點擊率

 rps:每秒請求數(shù)

 qps:每秒查詢接口數(shù)

 tps:單位時間完成的請求(事物)數(shù)
 
響應(yīng)時間:頁面渲染時間种蘸,tcp連接時間墓赴,sql查詢時間,服務(wù)端處理時間

錯誤率:沒有正常返回200的都是錯誤

cpu利用率

IO平均時間

內(nèi)存利用率

劈彪。竣蹦。顶猜。沧奴。。

5.什么是集合點长窄?設(shè)置集合點有什么意義滔吠?jmeter中如何設(shè)置集合點纲菌?

讓用戶盡可能在同一時間點發(fā)起請求

6.集合點的等待時間怎么設(shè)置?

等待時間=0疮绷,線程數(shù)達(dá)不到集合人數(shù)就會一直等待

 等待時間>0翰舌,線程數(shù)在等待時間范圍內(nèi)集合發(fā)起

7.什么是壓力?有哪些壓力模式冬骚?

服務(wù)端接收請求叫壓力

 并發(fā)用戶模式椅贱,加人數(shù)

 吞吐量模式,加請求

8.你在性能測試中遇到哪些性能問題只冻?

響應(yīng)時間過長

 tps過低

 tps毛刺過多

 tps經(jīng)常出現(xiàn)斷崖式下跌

 進(jìn)程無緣無故失蹤

 內(nèi)存溢出

 cpu利用率過高

9.針對大并發(fā)壓力測試庇麦,主要是從哪幾個方面去考慮點?

 考慮并發(fā)用戶數(shù)的設(shè)計

  考慮測試場景

  考慮服務(wù)端的資源

  考慮網(wǎng)絡(luò)環(huán)境(內(nèi)網(wǎng)還是外網(wǎng))

  機器是否足夠,是否需要分布式壓測

10.舉例說明jmeter的定時器用法喜德?

固定定時器:模擬用戶思考時間

rps定時器:控制每秒請求數(shù)

tps定時器:控制每秒吞吐量

11.jmeter中如何監(jiān)控linux資源山橄?

serveragent插件在服務(wù)器安裝啟動

保證防火墻對4444端口開放,否則會連接拒絕

本機啟動監(jiān)控

12.什么是性能測試舍悯?

功能測試航棱,安全測試,接口測試萌衬,性能測試都是測試目的

性能測試的目的是測試系統(tǒng)性能

壓力測試饮醇,負(fù)載測試,并發(fā)測試都是方法

通過方法去實現(xiàn)目的

13.怎么做參數(shù)化秕豫?

csv配置元件驳阎,循環(huán)讀取參數(shù)

csv函數(shù) 只對線程生效,多線程讀取

14.jmeter負(fù)載測試中怎么保持session會話馁蒂?

對session唯一性有要求的接口

(1):腳本保存session呵晚,cookie管理器并發(fā)讀取session。吞吐量相對較低

(2)正則提取保存為全局屬性沫屡,cookie管理器并發(fā)讀取session饵隙。吞吐量正常

15.什么是關(guān)聯(lián),如何動態(tài)關(guān)聯(lián)沮脖?有哪幾種關(guān)聯(lián)的方法金矛?

上下文關(guān)聯(lián),正則表達(dá)式關(guān)聯(lián)勺届,json關(guān)聯(lián)驶俊,xpath關(guān)聯(lián)

16.什么是Ramp up?你如何設(shè)置免姿?

線程啟動的時間

請求的單位時間

17.如何識別性能瓶頸饼酿?

tps下降?

響應(yīng)時間上升?

負(fù)載越來越高,響應(yīng)時間越來越長,tps沒有變化?

隨著負(fù)載升高故俐,tps卻不變想鹰,意味著單線程的tps是越來越低的。药版。辑舷。

總的tps/線程數(shù)=性能瓶頸點

Transaction Throughput vs Threads

18.簡述堆區(qū)的空間分配和gc原理

年輕代

    eden和2個s區(qū)

    2個s區(qū)輪轉(zhuǎn)回收垃圾

老年代

1:超出年輕代年齡閥值的對象

2:對象大小超出年輕代對象閥值

fullgc

1:老年代滿了

2:年輕代進(jìn)入老年代的對象超出了老年代剩余空間大小

老年代都是大對象,所以fullgc時間很長槽片,大約是年輕代時間的十倍何缓。

gc的時候,所有線程暫停

19.什么是內(nèi)存溢出

堆內(nèi)存溢出

棧內(nèi)存溢出

線程棧还栓。線程啟動多少由椄柩辏空間決定

20.簡述cpu的工作原理

通過cpu線程去調(diào)度運行進(jìn)程/線程,一個cpu線程同一時間只能調(diào)度一個運行線程

運行線程數(shù)超出了cpu線程蝙云,會啟動時間片分配機制

21.什么是上下文切換氓皱?哪些場景會存在上下文切換?

進(jìn)程間的切換勃刨,交接內(nèi)存/io

線程切換

    線程在進(jìn)程內(nèi)共享資源波材。線程的cpu時間片用完了就會放棄cpu,進(jìn)入隊列等待

內(nèi)核切換身隐,系統(tǒng)調(diào)用廷区。

    用戶空間向內(nèi)核空間發(fā)起調(diào)度請求,切換到內(nèi)核空間給予api贾铝,再次切換到用戶空間調(diào)度api隙轻。一次系統(tǒng)調(diào)用產(chǎn)生兩次切換

22.簡述平均負(fù)載和利用率

平均負(fù)載:單位時間內(nèi)正在調(diào)度cpu的線程+隊列中的線程

cpu平均調(diào)度時間。

如果cpu分配了100個時間片垢揩,有50個花在了切換上玖绿,那么利用率只有50%

23.什么是swap空間?oomkiller了解嗎叁巨?怎么開啟swap空間

磁盤空間中開辟的虛擬物理內(nèi)存斑匪。si換出,so換入

swap空間用完了锋勺,系統(tǒng)會殺死占用內(nèi)存最高的進(jìn)程

swapoff -a 關(guān)閉swap

swapon -a 開啟swap

swap空間比例:cat /proc/sys/vm/swappiness 物理內(nèi)存使用比例超出swappiness蚀瘸,就會啟用swap

設(shè)置臨時比例:sudo sysctl vm.swappiness=10

24.進(jìn)程的優(yōu)先級如何設(shè)置?

調(diào)整nice值庶橱,改變優(yōu)先級pr

nice -19 ---- 19

pr越高贮勃,進(jìn)程優(yōu)先級越低,cpu時間片越少苏章;反之優(yōu)先級越高寂嘉,時間片越多

25.吞吐量大幅度波動有哪些原因?

內(nèi)存不足

tomcat連接數(shù)不夠

網(wǎng)卡隊列不夠

線程過多

26.哪些現(xiàn)象說明了IO瓶頸?

await:io等待時間垫释,隊列時間+io處理時間

svctm:平均io的時間

await-svctm:得到的是io隊列時間,差值越大撑瞧,表示io處理效率越低

%util:io的使用百分比棵譬,越高表示磁盤越繁忙

27:了解哪些資源監(jiān)控命令?

top

lscpu

mpstat

vmstat

pidstat

iostat

netstat

28.如何用命令行生成測試報告预伺?jtl文件怎么分析订咸?

 jmeter  -n -t  XX.jmx -l XX.jtl  -e -o httpreport

29.簡要描述如何分布式執(zhí)行腳本

  slave配置

  master配置

30.設(shè)計一個持續(xù)集成框架(描述清晰,能畫出來)

    docker+jenkins+gitlab+ant+jmeter+nginx+php

性能測試中Linux命令

主動上下文切換:cswch/s 當(dāng)某一任務(wù)處于阻塞酬诀,比如說脏嚷, I/O、內(nèi)存等系統(tǒng)資源不足時瞒御,就會發(fā)生自愿上下文切換 將主動讓出自己的CPU資源

被動上下文切換:nvcswch/s CPU分配給某一任務(wù)的時間片耗盡父叙,因此將強迫該進(jìn)程讓出CPU的執(zhí)行權(quán)。比如大量進(jìn)程爭搶 CPU

strace -tt -f -p 21156 查看系統(tǒng)調(diào)用信息

strace -o strace.log -tt -p 【pid】

dstat -y 查看系統(tǒng)中斷和上下文切換

pidstat -w 統(tǒng)計進(jìn)程的上下文切換

pidstat -wt 統(tǒng)計threads的上下文切換

pidstat -p 7826 -w 1 10 顯示進(jìn)程的上下文切換

sar -w 1 統(tǒng)計proc和上下文切換

grep ctxt /proc/$pid/status 統(tǒng)計上下文切換數(shù)

watch -d cat /proc/interrupts 統(tǒng)計進(jìn)程中斷的方式

apt install sysbench sysstat 安裝sysbench肴裙,模擬多線程切換

sysbench --threads=10 --max-time=300 threads run 10 個線程運行 5 分鐘的基準(zhǔn)測試趾唱,模擬多線程切換

ps aux | sort -k3nr |head -n 10 按照按照消耗CPU前10排序的進(jìn)程

ps aux | sort -k4nr |head -n 10 按照按照消耗內(nèi)存前10排序的進(jìn)程

pstree -p | wc -l 查詢當(dāng)前整個系統(tǒng)已用的線程或進(jìn)程數(shù)

pstree -p pid | wc -l 統(tǒng)計進(jìn)程的線程數(shù)

ps -o nlwp pid 查看進(jìn)程下的線程數(shù)

1:netstat -nat|grep ESTABLISHED|wc -l 查看系統(tǒng)的總連接數(shù)

2:netstat -anp|grep pid|wc -l 統(tǒng)計進(jìn)程的總連接數(shù)

注:1和2組合使用
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 查看連接狀態(tài)

watch -d -n 1 'cat /proc/softirqs' 查看中斷種類。NET_TX 或 NET _RX 如果變化很快的話就是網(wǎng)絡(luò)中斷引起的蜻懦,

否則是由系統(tǒng)其他原因造成的中斷

ps -A -o stat,ppid,pid,cmd |grep -e '^[Zz]' 定位僵尸進(jìn)程

kill -HUP 僵尸進(jìn)程父ID 殺死僵尸進(jìn)程

ps -eLo pid,stat | grep 3598 | grep running | wc -l 根據(jù)進(jìn)程狀態(tài)篩選線程

time dd if=/dev/zero of=test bs=1M count=4096 測試IO讀寫速度

sync;time -p bash -c "(dd if=/dev/zero of=test bs=1M count=200)" 當(dāng)前目錄下創(chuàng)建一個test的文件甜癞,寫入200個1M的數(shù)據(jù)。測試寫瓶頸

hdparm -tT --direct /dev/sda 測試讀瓶頸

iozone -a -n 512k -g 4m -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls

http://www.reibang.com/p/8fadfaa5abe6 io測試


wget [http://www.iozone.org/src/current/iozone3_482.tar](https://links.jianshu.com/go?to=http%3A%2F%2Fwww.iozone.org%2Fsrc%2Fcurrent%2Fiozone3_482.tar)

tar -xvf iozone3_429.tar

cd iozone3_429/src/current

apt-get install gcc

make

make linux-ia64

iostat -x -k -d 1

iotop -botq -p 【pid】 輸出進(jìn)程的io信息

iotop -d 2 -n 5 間隔2秒,輸出5次 監(jiān)控時間段內(nèi)的IO

iotop -o 顯示產(chǎn)生IO的進(jìn)程

%iowait:不能反應(yīng)磁盤瓶頸 實際反應(yīng)的是cpu的io等待時間:%iowait = (cpu idle time)/(all cpu time)

rrqm/s: 每秒對該設(shè)備的讀請求被合并次數(shù),文件系統(tǒng)會對讀取同塊(block)的請求進(jìn)行合并

wrqm/s: 每秒對該設(shè)備的寫請求被合并次數(shù)

r/s: 每秒完成的讀次數(shù)

w/s: 每秒完成的寫次數(shù)

rkB/s: 每秒讀數(shù)據(jù)量(kB 為單位)

wkB/s: 每秒寫數(shù)據(jù)量(kB 為單位)

avgrq-sz:平均每次 IO 操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)

avgqu-sz: 是平均請求隊列的長度黄娘。隊列長度越短越好

await: 平均每次 IO 請求等待時間(包括等待時間和處理時間疫粥,毫秒為單位)。一般地系統(tǒng)IO響應(yīng)時間應(yīng)該低于5ms

svctm: 平均每次 IO 請求的處理時間(毫秒為單位)

%util: 1 秒中有百分之多少的時間用于 I/O 操作攒盈。該參數(shù)表示了設(shè)備的繁忙程度

CPU會拿出一部分時間來等待IO(iowait),從磁盤的角度看,如果磁盤的利用率已經(jīng)滿了(util%)渡贾,這種情況下,CPU使用率可能不高雄右,但是系統(tǒng)整體QPS已經(jīng)上不去了空骚,如果繼續(xù)加大流量,會導(dǎo)致單次IO耗時的繼續(xù)增加(IO請求都堵在隊列里)擂仍,從而影響系統(tǒng)整體的性能囤屹。

高iowait,并不代表磁盤的瓶頸逢渔。唯一能說明磁盤是系統(tǒng)瓶頸的方法是很高的svctm肋坚,一般來說超過20ms,就代表了不太正常的磁盤性能。只要大于20ms智厌,就必須考慮是否磁盤讀寫的次數(shù)太多诲泌,導(dǎo)致磁盤性能降低。

svctm 一般要小于 await铣鹏。svctm的大小一般和磁盤性能有關(guān)敷扫,CPU/內(nèi)存的負(fù)荷也會對其有影響,請求過多也會導(dǎo)致 svctm 的增加诚卸。await 的大小一般取決于svctm 以及 I/O 隊列的長度葵第。如果 svctm 接近 await,說明 I/O 幾乎沒有等待時間合溺;如果 await 遠(yuǎn)大于 svctm卒密,說明I/O隊列太長,應(yīng)用的響應(yīng)時間變慢棠赛,如果響應(yīng)時間超過了用戶可以容許的范圍哮奇,需要考慮更換更快的磁盤;調(diào)整內(nèi)核elevator 算法睛约;優(yōu)化應(yīng)用屏镊;升級CPU
經(jīng)驗總結(jié):

1:提高IO效率原則: 順序?qū)懀S機讀

2:重點監(jiān)控 rkB/s 和 和 wkB/s

3:%util接近100%痰腮,說明產(chǎn)生的I/O請求太多而芥,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸

4:await與svctm相差很大的時候膀值,要注意磁盤的IO性能棍丐。差值越小,說明隊列時間越短沧踏,反之則隊列時間越長歌逢。說明系統(tǒng)出了問題。

規(guī)避IO負(fù)載過高:

1. 如果服務(wù)器用來做日志分析翘狱,注意隨機讀和順序?qū)懨匕福苊舛ㄆ诘膲嚎s、解壓大日志潦匈。

2. 如果是前端應(yīng)用服務(wù)器阱高,要避免程序頻繁打本地日志、或者異常日志

3. 如果是存儲服務(wù)(mysql茬缩、nosql)赤惊,盡量將服務(wù)部署在單獨的節(jié)點上,做讀寫分離降低壓力

超市排隊去哪個柜臺付款凰锡?

1:首先看排的隊人數(shù)未舟,5個人比20人要快

2:看前面人購買的東西多少圈暗,如果前面的人購買了一個月的物品,可以考慮換個隊伍排

3:看收銀員的速度裕膀,如果碰上了新手员串,那等待時間會很久

I/O 對比超市排隊:
r/s+w/s 類似于排隊的人員總數(shù)

平均隊列長度(avgqu-sz)相當(dāng)于單位時間里平均排隊的人數(shù)

平均服務(wù)時間(svctm)相當(dāng)于收銀員的收款速度

平均等待時間(await)相當(dāng)于平均每人的等待時間

平均I/O數(shù)據(jù)(avgrq-sz)相當(dāng)于平均每人所買的東西多少

I/O 操作率 (%util)相當(dāng)于收款臺前有人排隊的時間比例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昼扛,隨后出現(xiàn)的幾起案子寸齐,更是在濱河造成了極大的恐慌,老刑警劉巖野揪,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件访忿,死亡現(xiàn)場離奇詭異瞧栗,居然都是意外死亡斯稳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門迹恐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挣惰,“玉大人,你說我怎么就攤上這事殴边≡髅” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵锤岸,是天一觀的道長竖幔。 經(jīng)常有香客問我,道長是偷,這世上最難降的妖魔是什么拳氢? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蛋铆,結(jié)果婚禮上馋评,老公的妹妹穿的比我還像新娘。我一直安慰自己刺啦,他們只是感情好留特,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玛瘸,像睡著了一般蜕青。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糊渊,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天市咆,我揣著相機與錄音,去河邊找鬼再来。 笑死蒙兰,一個胖子當(dāng)著我的面吹牛磷瘤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搜变,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼采缚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挠他?” 一聲冷哼從身側(cè)響起扳抽,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殖侵,沒想到半個月后贸呢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡拢军,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年楞陷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茉唉。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡固蛾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出度陆,到底是詐尸還是另有隱情艾凯,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布懂傀,位于F島的核電站趾诗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹬蚁。R本人自食惡果不足惜恃泪,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚忧。 院中可真熱鬧悟泵,春花似錦、人聲如沸闪水。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球榆。三九已至朽肥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間持钉,已是汗流浹背衡招。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留每强,地道東北人始腾。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓州刽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浪箭。 傳聞我的和親對象是個殘疾皇子穗椅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355