รายงานผลการดำเนินการทดสอบ load test...
TRANSCRIPT
ส ำนกคอมพวเตอร มหำวทยำลยศรนครนทรวโรฒ
มนำคม 2558
รำยงำนผลกำรด ำเนนกำรทดสอบ Load Test
ระบบงำน Admission
1
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
รายงานผลการด าเนนการทดสอบ Load test ระบบงาน Admission
ระบบงานรบนสตใหม เปนระบบทมการรายงานผลการรบนสตใหมของ มศว ซงในวนประกาศผลสอบ
คดเลอกเขามหาวทยาลย จะมนกเรยนเปนจ านวนมากตองการทจะ Access เขามายง Web site
http://admission.swu.ac.th เพอดประกาศผลสอบ ซงในหนา website admission.swu.ac.th นนเปน
dynamic page ซงมการ query Database ขนมาซงถามการใชงานเปนจ านวนมาก กจะท าให Database
นนไมสามารถใหบรการได ดงนนทางทมงานจงไดมการ test load เพอทจะดวาปรมาณเทาไรท Database
นนจะยงคงใหบรการได เพอท าการจ ากด connection จากทาง Web server เพอไมใหม Connection เขา
มายง Database มากเกนไป
การ Test load นนทางทมงานไดใชงานโปรแกรม อย 2 ตวดวยกนคอ
1. โปรแกรม Apache JMeter
2. โปรแกรม Siege ซง run อยบน Command line
โปรแกรม Apache JMeter นนเปนโปรแกรมท run ดวย JAVA Platform ดงนนเครองทจะท าการ
ตดตง Apache JMeter นนจะตองตดตง JAVA กอน โดยการตดตงและใชงานโปรแกรมจะมรายละเอยดอย
ขางลางน
ความตองการพนฐานของ Apache JMeter นนจะใช JAVA 6 ขนไป และระบบปฏบตการทรองรบจะ
สามารถรองรบไดทง Windows และ Linux ซงในรายละเอยดจะเปนขนตอนการตดตง Apache JMeter บน
ระบบปฏบตการ Windows
ท าการ Download JAVA จาก website ดงน
http://www.java.com/en/download/index.jsp
จากนนให Download Apache JMeter ไดจาก
http://jmeter.apache.org/download_jmeter.cgi
2
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนท าการแตก file ออกมา โดยโปรแกรมทจะใช Run อยท
3
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
เมอท าการ double click โปรแกรมจะไดหนาจอดงน ใหท าการเลอก Add Threads (Users) -> Thread
Group
4
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
เมอสราง Thread Group แลวจะเปนขนตอนใหใส ชอ และ จ านวน Thread
จากนนใหใสชอ Name: admission_test_load
Number of Threads (users): 1000
Ramp-UP Period (in seconds): 10
Loop Count Forever
5
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนเลอกวธทจะ record งานทจะท าการ simulate
6
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนในสวนของ Workbench ให click ขวาท Workbench แลวเลอกท Add -> Non -test Element ->
http(s) test script recoder
7
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนตรง URL Patterns to Include ใหเลอก กดป ม Add แลวพมพ .* เขาไป
จากนนตรง URL Patterns to Exclude ใหกดท ป ม Add suggested Excludes
8
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนเขาไปท Internet Explorer โดยเขาไปท setting -> internet options -> connection -> lan
settings -> localhost port 8080 ตามท http(s) test Script Recorder เซตเอาไว
จากนนกดป ม Start ท http(s) test Script Recorder
9
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จะขนหนาจอ error เกยวกบ Certificate ใหกด OK ไป
จากนนเปด IE แลวด าเนนการตามขนตอนท user จะใชงานจรง
เมอ click ใน IE ตามขนตอนตางๆเสรจแลวใน IE ใหเขามาท Apache Jmeter ใหมอกครงหนง
10
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
ตรง Recording Controller นนจะเปน การ record ของเราจากนนใหท าการเลอก summary report เขาไป
11
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
เมอเลอก summary report แลว
12
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
จากนนลองท าการกด Run ไดเลย มนจะท าการ simulate users เปน 1000 คนในเวลา 10 วนาท แลว run
1 รอบถา click forever มนกจะ run ไปเรอยๆจนกวาจะ stop จากนนกมาด report หรอเขาไปดท DB ตอน
ทตว Apache Jmeter ยงเขาไปวา database นนสามารถรบ load ไดมากนอยแคไหน
ผลลพธจากการยง 1000 users ในเวลา 10 วนาท 1 รอบนนผลลพธทเครอง DB เปนแบบน
top - 13:29:19 up 24 days, 5:17, 3 users, load average: 2.85, 1.15, 0.79
Tasks: 603 total, 1 running, 602 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.4%us, 0.7%sy, 0.0%ni, 96.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 132050756k total, 130691360k used, 1359396k free, 151264k buffers
Swap: 102406332k total, 727884k used, 101678448k free, 127257948k cached
กอนท าการ simulate ผลลพธอยท
13
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
top - 13:29:19 up 24 days, 5:17, 3 users, load average: 0.99, 1.15, 0.79
Tasks: 603 total, 1 running, 602 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.4%us, 0.7%sy, 0.0%ni, 96.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 132050756k total, 130691360k used, 1359396k free, 151264k buffers
Swap: 102406332k total, 727884k used, 101678448k free, 127257948k cached
2. โปรแกรม Siege
โปรแกรม Siege นนเปนโปรแกรมทใชในการ load test บน Linux ซงโปรแกรมนหลกการจะตอง
ท าการเรยก uri ตรงๆผาน Command line ซงทางโปรแกรมเมอรจะตองร URI แลวสงคา parameter เขา
มาเพอใหเขาไปเรยกได แลวทางโปรแกรม Siege จะท าการสงคาเขาไปตามจ านวน concurrent
connection ตามทตองการในระยะเวลากวนาท หรอ กนาท
โดยขนตอนการตดตงมดงน
1. yum -y install siege
2. จากนนกท าการสงใหโปรแกรม siege ท างาน ดงน
# siege -c1000 -t1M
http://admission.swu.ac.th/announce/ann_list.php?req_adm_set_no=186&cboExam=6&txtIdCardNo=110
1500938391
จากค าสงขางตนนน โปรแกรมจะสงขอมลเขาไปท uri นนเปนจ านวน 1000 users ในเวลา 1
Minute ซงสามารถตงเวลาไดหรอตงจ านวน user ได ซงในสวนของ -t สามารถตงเวลาเปนวนาทกสามารถ
ท าได โดยการใสเปน -t10s กหมายถงใน 10 วนาทจะสงขอมล 1000 users เปนตน
ผลลพธจาการท า Load test
1. โปรแกรม Siege
ผลลพธจากการทดสอบ load test จากโปรแกรม Siege นนพบวาท 1000 users ใน 10 วนาท
เครอง Database นนยงสามารถรบ Load ไดอยแตจะเรมชาแตยงไม down แตถาเกนกวานนระบบจะไม
สามารถท างานได ซงตวเลขนาจะอยทประมาณ 1000 ประกอบกบตอนทท าการทดสอบ มเครองทใชในการ
ท า Load test เพยงเครองเดยว ดงนนถาใส load เขาไปเปนจ านวนมาก เครองทใชในการยง กจะไม
สามารถ run ไดอาจจะ hang ไปเสยกอน
2. โปรแกรม Apache JMeter
ผลลพธของการทดสอบ Apache JMeter นนจะใกลเคยงกบ siege แตในสวนของโปรแกรม
Apache JMeter นนเปนการจ าลองเหมอน user มการ click ใชงานจรงทหนา web site ท าใหการเขามา
ของโปรแกรม Apache JMeter นนมการรองรบไดมากกวาโปรแกรม Siege แตในกรณนเราไดมการ Test
จาก 2 เครองโดยใหเครองหนง run 4,000 users ในเวลา 10 วนาท โดย run แบบ forever จนกวาเราจะ
สงหยด แลวอกเครอง run 3,000 users ในเวลา 10 วนาท เชนกน ผลปรากฏวาระบบยงสามารถรบได แต
ถา run มากกวานระบบจะเรมจะใชงานไมไดแลว
รายละเอยดเหตการณทเกดขนในวนท 16 ม.ค 2558 เวลา 18.00 น.
14
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
รายละเอยดชวงเวลาทผใชมการเขามาใชงานมากทสดของระบบมเพยง 1 ชม ของการเปดใหคน
เขามา Access web site http://admission.swu.ac.th เทานน ซงในเวลา 1 ชมจะมยอด session นน
ประมาณ 338K sessions
จากขอมลขางตนท Firewall ทมคน access เขามาถง 338K sessions แตเนองจากมบางสวนเขา
ไดและบางสวนเขาไมได ใน Firewall จงมบางสวนทเปน incomplete คอนขางเยอะพอสมควร
รายละเอยดขอมลจาก log เครอง web server admission นน ชวงเวลา 18.00 - 19.00 น. ม IP
เขามาทงหมดเพยง 1,214 Unique IP เทานน แตม Session ในชวงนนเทากบ 67,535 sessions ซงถา
จากขอมลนจะพบวา sessions ทง 67,535 นน มใกลเคยงกบคาทเราท าการ Load test เพราะตอนทท าการ
load test เราท าการ load test ท 1,000 sessions ในเวลา 10 วนาท ถาใน 1 นาทกจะตองม 6,000
sessions ถา 1 ชม กตองเทากบ 60,000 sessions แตตอนเขามาจรงนนใน 1 ชมมเขามา 67,535
sessions นนระบบกยงรบไดและสามารถใชงานไดอย
แตในครงนการทเรา limit connection ท Web server กเพอไมให Database นนมปญหาท าให
ระบบนนยง run อยไดแตในความเปนจรงผใชทเขามาบางสวนในชวงเวลานนอาจจะเขาหนา web site
15
รายงานผลการด าเนนการทดสอบ Load Test ระบบงาน Admission ฝายระบบคอมพวเตอรและเครอขาย ส านกคอมพวเตอร l
admission.swu.ac.th ไมได จงท าใหผใชบางคนท าการกด refresh เขามาท าใหจ านวน Sessions นนจง
สงถง 338K sessions แต sessions ทเขามาใชงานไดนนมเพยง 67,535 sessions เทานน
หมายเหต ค าสงทใชในการหา จ านวน IP และ จ านวน Sessions นนมดงน
เรมจากท าการตด Log ใน /var/log/nginx/access.log-20150316 กอนใหเหลอเฉพาะชวงเวลา
18.00 - 19.00 น. จากนนใชค าสง
# cat access.log-20150316 | awk -F “ “ ‘{print $1}’ |sort |uniq |wc -l
จากค าสงนจะไดคาออกมาเทากบ 1,214 IP ทเปน uniq
# cat access.log-20150316 | grep GET |wc -l
จากค าสงนจะได 67,535 sessions ทมการ GET คาจาก Web server
ซงจะชวงเวลาประมาณ 18.30 ซงเปนเวลาทเปน Peak time ทสด load ของ cpu บนเครอง Stone ทเปน
Database จะอยทประมาณ 12 เปน load average ทมากพอสมควรแตระบบยงสามารถท างานไดและไมได
ชามากถงกบรบไมได
top - 18:30:53 up 25 days, 29 min, 3 users, load average: 12.38, 11.40, 10.50
Tasks: 524 total, 2 running, 522 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.4%us, 0.1%sy, 0.0%ni, 96.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 132050756k total, 130992484k used, 123058272k free, 26464k buffers
Swap: 102406332k total, 329196k used, 102077136k free, 7889888k cached