So sánh hiệu năng của các framework tập trung xử lý phía máy chủ trên nền tảng web với công nghệ java và ứng dụng tại Học viện Nông nghiệp Việt Nam

Vietnam J. Agri. Sci. 2021, Vol. 19, No. 4: 486-496  
Tp chí Khoa hc Nông nghip Vit Nam 2021, 19(4): 486-496  
SO SÁNH HIỆU NĂNG CỦA CÁC FRAMEWORK TP TRUNG XLÝ PHÍA MÁY CHỦ  
TRÊN NN TNG WEB VI CÔNG NGHJAVA  
NG DNG TI HC VIN NÔNG NGHIP VIT NAM  
Trn Trung Hiếu*, Phạm Quang Dũng, Đỗ ThNhâm  
Khoa Công nghthông tin, Hc vin Nông nghip Vit Nam  
*Tác giliên h: tthieu@vnua.edu.vn  
Ngày nhn bài: 20.07.2020  
Ngày chp nhận đăng: 23.12.2020  
TÓM TT  
Trong nghiên cu này, chúng tôi thc hin so sánh hiệu năng của hai framework tiêu biu trong nhóm các  
framework tp trung xlý phía máy chtrên nn tng web vi công nghJava là ZK và JSF hướng đến mt la  
chn sdng. Bằng phương pháp kiểm thhiệu năng dựa trên các tiêu chí thi gian phn hi và dung lượng bộ  
nhsdng, nghiên cu cách mô phng, cu hình thông strên các công cJmeter, VisualVM và máy o Java,  
các kết quả đưa ra phản ánh khách quan hiệu năng của hai ng dụng được xây dng bi mi framework. Qua kết  
qukim thhiệu năng, chúng tôi đã chọn ZK là framework có hiệu năng tốt hơn JSF. ZK framework đã được chúng  
tôi áp dng vào thc tin, xây dng các ng dụng đã được đưa vào sdng Hc vin Nông nghip Vit Nam.  
Tkhóa: ZK, JSF, PrimeFaces, framework, server-centric, hiệu năng.  
Comparing Performances of Server-Centric Java Web Frameworks and Applying at Vnua  
ABSTRACT  
In this study, we compared the performances of two typical frameworks in the server-centric java web framework  
group, ZK and JSF, towards a usage option. Using a performance test method based on the response time and  
memory usage criteria, studying simulations, parameter configurations on Jmeter, VisualVM and Java virtual  
machines were made. The results revealed objective reflection on the performance of the two applications built by  
each framework. Through the performance test results, we chose ZK, which had a better performance framework  
than JSF. ZK framework was the applied in practice, building applications that have been put into use at Vietnam  
National University of Agriculture.  
Keywords: ZK, JSF, PrimeFaces, framework, server-centric, Jmeter, VisualVM, performance.  
đa phần xā ć phía máy chû (1&1 IONOS Inc,  
1. ĐẶT VẤN ĐỀ  
2017). Nhóm các client-centric framework đñi  
Trong 20 năm trć lại đây, ngôn ngĂ lp  
trình Java luôn là lăa chn hàng đầu để xây  
dăng các phn mm Āng dýng, trong nhiều năm  
Java thþąng xếp thĀ nht hoc nhì trong bng  
xếp hng các ngôn ngĂ lập trình đþĉc sā dýng  
nhiu nht (Bng 1).  
hói lp trình viên cn am hiu vcác ngôn ngĂ  
HTML, Javascript. Do đặc thù cûa nhĂng ngôn  
ngĂ y, chþĄng trình thþąng phĀc tạp hĄn và  
tn nhiu thąi gian công sĀc để phát triển hĄn.  
Nhóm các server-centric framework đã xây  
dăng sn nhiều thþ viện để đĄn giản hóa vic  
lp trình cûa ngþąi sā dýng nên thþąng dphát  
triển hĄn, thąi gian xây dăng ngắn hĄn và do  
tp trung phn lĆn công vic xā ć phía server  
nên tính bo mật cüng cao hĄn, đây là mt tiêu  
Các framework lp trình Āng dýng Web vĆi  
công nghệ Java đþĉc chia thành 2 nhóm, nhóm  
client-centric phân tán nhiu công vic xā lý về  
phía máy khách, nhóm server-centric tp trung  
486  
Trn Trung Hiếu, Phạm Quang Dũng, Đỗ ThNhâm  
DoS và CSRF, ZK tăng cþąng hĄn nĂa xác thăc  
ûy quyn vĆi các khuôn khbo mt cûa bên  
thĀ ba nhþ Spring Security, hoàn toàn cung cp  
bo vtÿ cấp độ trang đến các să kiện Ajax, đây  
cüng là lý do quan trọng để các doanh nghip  
lĆn lăa chn ZK. Ngoài ra, ZK cho phép tích hĉp  
nhiu công nghệ khác nhþ JSP, Struts, Spring,  
EJB, Hibernate, CDI, JDBC, Bootstrap (Potix,  
2020)„ vĆi tài liệu hþĆng dn chi tiết, đây là  
mt yếu trt quan trng khi các Āng dýng lĆn  
cn kết hĉp nhiu công nghkhác nhau.  
chí quan trng trong lăa chn cûa nhiu doanh  
nghip. Tốc độ xā lý cûa các client-centric  
framework thþąng nhanh hĄn các server-centric  
framework, tuy nhiên cân nhc trên nhiu yếu  
t, trong nhiều trþąng hĉp, server-centric  
framework là mt lăa chn tt.  
Trong mt sserver-centric web framework  
xây dăng trên nn tng ngôn ngĂ lp trình Java  
nhþ JavaServer Faces (JSF), Wicket, Tapestry,  
Vaadin, ZK, thì JSF đþĉc sā dýng nhiu nht  
(Perforce Software Inc, 2020). JSF ra đąi năm  
2001, là mt framework mã ngun mć đþĉc viết  
bći Sun Microsystems. JSF thþąng phi sā dýng  
kèm vĆi một thþ viện htrĉ to giao diện ngþąi  
dùng nhþ PrimeFaces (PrimeTek Informatics,  
2020) hay RichFaces (RedHat, 2020). Hin nay,  
JSF đþĉc htrĉ phát trin bći Oracle, tập đoàn  
tiếp qun công nghJava tÿ Sun Microsystems,  
JSF đã đþĉc Oracle đþa thành chun Java cho  
các Āng dýng đồ ha trên nn web (Scholtz &  
cs., 2018), JSF thþąng đþĉc dùng kết hĉp vĆi  
PrimeFaces nhiu nht, giá cûa thþ viện GUI  
(Graphic User Interface) này rbt ngą vĆi chî  
19$-79$ đối vĆi các layout riêng lẻ, hay chþa  
đến 200$ cho mt phiên bn nhiều ngþąi dùng  
(PrimeTek Informatics, 2020), đây cò lẽ là hai lý  
do chính JSF đþĉc sā dýng nhiều hĄn các  
framework khác, dù nó có mt số nhþĉc điểm.  
ZK đþĉc viết bći Potix Đài Loan năm 2005  
(Potix, 2020), ZK bao gm hai phiên bn, phiên  
bản thþĄng mại và phiên bn mã ngun mć  
dành min phí cho cộng đồng. Dù ra đąi sau, ZK  
đã nhanh chòng phát triển và chiếm đþĉc să tin  
tþćng cûa nhiu công ty, tập đoàn lĆn trên thế  
giĆi nhþ Samsung, Sony, Toyota, HTC, Airbus,  
Barclays, Ebay, Bank of America, Deutsche  
Bank, US Department of Defense„ và chính  
Oracle cüng sā dýng ZK. Triết lý cûa ZK là  
“Ajax without Javascript”, nò cho phép ngþąi  
dùng xây dăng Āng dýng web mà không cn  
biết bt kĊ kiến thĀc nào vAjax và Javascript.  
ZK htrĉ số lþĉng lĆn các thành phn giao din  
đã đþĉc xây dăng sn vĆi trên 200 thành phn,  
là framework đầu tiên htrĉ bng tính  
(spreadsheet), mô hình MVVM (Model-View-  
ViewModel) trên nn web. Theo phn hi tÿ  
phía ngþąi sā dýng, thąi gian xây dăng Āng  
dýng vĆi ZK gim tÿ 4 đến 16 ln. ZK bo vcác  
Āng dýng chng li các hình thĀc tn công XSS,  
Vmt tính năng, ZK cò nhiều þu điểm  
vþĉt tri so vĆi JSF. Tuy nhiên, các tính năng,  
chĀc năng cûa mt hthng phn mm không  
phi mi quan tâm duy nht, hiệu năng cûa mt  
phn mềm cüng là mt yếu tố đáng chú ċ. Hiệu  
năng bao gồm các yếu tố nhþ thąi gian phn hi  
(response time), độ tin cy (reliability), mĀc độ  
sā dýng tài nguyên (resource usage) và khả  
năng mć rng (scalability) (Bathia & cs., 2018),  
các yếu tnày ảnh hþćng không nhó đến cht  
lþĉng dðch vý cung cấp cho ngþąi dùng, cüng  
nhþ să tiêu tn tài nguyên phía nhà cung cp  
phải đáp Āng. Nghiên cĀu này nhm so sánh  
hiệu năng cûa hai framework, và thăc nghim  
vĆi hai framework tiêu biu cûa nhóm các  
server-centric java web framework là JSF và  
ZK, tÿ đò lăa chn ra mt framework tốt hĄn  
cho xây dăng Āng dýng.  
2. PHƯƠNG PHÁP NGHIÊN CỨU  
Có nhiu loi kim thā hiệu năng bao gồm:  
load test (kim thā khả năng tải), stress test  
(kim thā xem hthng hoạt động nhþ thế nào  
khi quá ti và cách hthng phýc hi khi xy  
ra li), capacity test (kim thā lþĉng giao dðch  
trên một đĄn vð thąi gian), endurance test  
(kim thā lþĉng ti ổn đðnh trong mt khong  
thąi gian dài), spike test (kim thā phn Āng  
cûa phn mềm trþĆc các thay đổi lĆn hoặc đột  
ngt khi ti), volume test (kim thā hiu sut  
cûa hthng Āng vĆi các khi lþĉng cĄ sć dĂ  
liu khác nhau), scalability test (kim thkhả  
năng mở rng ti ca ng dng), reliability test  
(kim thử độ tin cy ca hthng, hay khả  
năng thực hin mt hoạt động không có li  
trong mt khong thi gian nhất định)  
(SoftwareTestingHelp, 2020).  
487  
So sánh hiệu năng của các framework tp trung xlý phía máy chtrên nn tng web vi công nghJava và  
ng dng ti Hc vin Nông nghip Vit Nam  
Bng 1. Thhng ngôn nglập trình Java qua 20 năm theo Tiobe  
Programming Language  
Java  
2020  
1
2015  
2
2010  
1
2005  
2
2000  
3
“Load test” là mt quá trình thêm nhu cu  
vào mt hthng hoc thiết bð đo lþąng phn  
Āng cûa nò. Load testing đþĉc thăc hiện để xác  
đðnh Āng xā cûa hthống trong các điều kin ti  
bình thþąng và cao hĄn điều kin ti dă kiến  
(Try QA, 2020). “Load test” cò thể đþĉc sā dýng  
để so sánh hiệu năng cûa các Āng dýng. Ví dý,  
mt nghiên cu so sánh hiệu năng ứng dng  
web trên hai nn tng.NET và Java EE  
(Enterprise Edition) sā dýng phþĄng pháp  
“Load test” vĆi công cý Load Runner và  
Webking để đo thąi gian phn hi và dung lþĉng  
bnhĆ sā dýng Āng vĆi các trþąng hĉp gilp số  
ngþąi dùng khác nhau trên cùng mt Āng dýng  
(Hamed & cs., 2009). Ti website trang chû cûa  
ZK framework, nghiên cĀu cûa tác giJames  
Chu so sánh hiệu năng cûa phiên bản ZK 7, ZK  
8 đþĉc thăc hiện trên một máy tính cá nhân  
thông thþąng, sā dýng công cý Apache Jmeter  
để giả lập ngþąi dùng và kiểm thā thąi gian  
phản hồi, công cý Visual VM để kiểm thā dung  
lþĉng bộ nhĆ sā dýng Āng vĆi các trþąng hĉp giả  
lập số ngþąi dùng tăng dần tÿ 100, 200 tĆi 1.500  
trong thąi gian một giây, Āng dýng thā nghiệm  
cò giao diện khá nặng vĆi khoảng 900 khối div  
và label (Potix, 2020).  
CPU:  
Processor @ 2.50GHz  
Intel(R)  
Core(TM)  
i5-3210M  
BnhĆ: 8GB  
Vphn mm, chúng tôi sā dýng các phn  
mm sau:  
ZK 9.0.0 CE: phiên bn ZK framework min  
phí dành cho cộng đồng  
JSF 2.1: sā dýng kết hĉp vĆi PrimeFaces  
PrimeFaces 8.0: sā dýng phiên bn min  
phí dành cho cộng đồng  
JDK 1.8.0_241: Bcông cý phát trin Java,  
bao gm máy o Java  
Apache Tomcat 9: Webserver  
Eclipse IDE 2020-03: Môi trþąng phát trin  
tích hĉp cho Āng dýng Java EE  
Apache Jmeter 5.3 (The Apache Software  
Foundation, 2020): Công cý kim thā hiệu năng  
Āng dýng  
Visual VM 1.4.2 (The Apache Software  
Foundation, 2020): Công cý kim thā bnhĆ sā  
dýng cho các Āng dýng Java  
VĆi ZK, vì không cò điều kin sā dýng phiên  
bn mt phí nên chúng tôi sā dýng phiên bn  
min phí dành cho cộng đồng. Phiên bn ZK,  
JSF, PrimeFaces đþĉc chn là mĆi nht ti thąi  
điểm tiến hành kim thā, các phiên bn phn  
mm còn li có thtùy chọn, sao cho đảm bo să  
tþĄng thích là đþĉc.  
Để so sánh hiệu năng cûa hai framework,  
trong bài báo này chúng tôi chn loi kim thā  
“load test” để so sánh thąi gian phn hi  
(response time), dung lþĉng bnhĆ sā dýng  
(memory consumption) và phần trăm sā dýng  
CPU tþĄng Āng. Các bþĆc kim thā bao gm:  
xác đðnh môi trþąng kim thā, thiết kế trþąng  
hĉp kim thā (testcase), cài đặt môi trþąng  
kim thā và thăc hin kim thā.  
Vcác thông scấu hình, để đảm bo vic  
so sánh đþĉc khách quan, chúng tôi cn cu  
hình mt sthông số trong webserver sao cho cĄ  
chế qun lý cûa webserver không gây nh  
hþćng đến vic so sánh. Các thông scu hình  
Tomcat webserver bao gm:  
2.1. Xác định môi trường kim thử  
Session timeout mặc đðnh: Thąi gian kim  
thā Āng dýng là ngn nên không cn cu hình  
đặc bit gì cho tham snày  
Vphn cĀng, chúng tôi sā dýng máy cýc  
bộ (localhost) đòng vai trñ làm webserver để  
chy hai Āng dýng Āng vĆi hai framework có  
cu hình:  
- Xms 2048MB: kích thþĆc bnhĆ heap  
khći to khi máy o Java hoạt đng  
488  
Trn Trung Hiếu, Phạm Quang Dũng, Đỗ ThNhâm  
- Xmx 2048MB: kích thþĆc bnhĆ heap  
tối đa  
kích thþĆc bnhĆ Heap khi khći tạo cüng nhþ  
tối đa bằng nhau, đều là 2048MB.  
- XX: MetaspaceSize 1024MB: kích thþĆc bộ  
nhĆ Metaspace khći to  
TrþĆc phiên bn Java 8, bnhĆ PermGen  
nằm trong Heap đþĉc sā dýng khi Āng dýng  
cn ti số lþĉng lĆn các lĆp (class), do bð hn  
chế bći kích thþĆc bnhĆ Heap, nên Āng dýng  
dcó khả năng bð li tràn bnhĆ (java.lang.  
OutOfMemoryError: PermGen space). Tÿ  
phiên bn Java 8, bnhĆ PermGen đþĉc loi  
bó, thay thế bći bnhĆ Metaspace (Oracle,  
2020). Metaspace không phi mt phn cûa bộ  
nhĆ Heap nhþ PermGen, kích thþĆc cûa nó  
không giĆi hn, tùy thuc vào bnhĆ đþĉc hệ  
điều hành cp cho máy o Java. BnhĆ  
Metaspace tuy không giĆi hạn nhþng ta nên  
đặt giĆi hạn cho nò để tránh vic rò rî bnhĆ  
(memory leak).  
- XX: MaxMetaspaceSize 1024MB: kích  
thþĆc bnhĆ Metaspace tối đa  
maxThreads: 2000: syêu cu tối đa cò thể  
đþĉc xā lċ đồng thąi bći webserver, mặc đðnh  
giá trð này trong tomcat là 200 (The Apache  
Software Foundation, 2020)  
acceptCount: 1024: Độ dài hàng đĉi tối đa  
cho các yêu cu kết nối đến webserver. Mi yêu  
cu nhận đþĉc khi hàng đĉi đầy sbð tÿ chi.  
Giá trð mặc đðnh là 100 (The Apache Software  
Foundation, 2020). Số lþĉng ngþąi dùng tối đa  
trong thā nghim là 1000 nên giá trð y đþĉc  
thiết lp là 1024.  
BnhĆ heap chĀa các đối tþĉng (Object)  
Java, các biến tïnh, các biến toàn cýc. BnhĆ  
heap đþĉc dn dp tă động bći bdn rác GC  
(garbage collector), mặc đðnh kích thþĆc bnhĆ  
heap tối đa là 64MB (Oracle, 2020). Mi  
framework sā dýng bnhĆ Heap khác nhau, để  
vic dn dp bnhĆ bći bGC mà ta không đoán  
đðnh đþĉc không ảnh hþćng chþĄng trình, và  
phòng khi kim thā số lþĉng ngþąi dùng truy  
cp lĆn có ththiếu bnhĆ, chúng tôi thiết lp  
2.2. Thiết kế kch bn kim thử  
Để so sánh hiệu năng cûa hai framework,  
chúng tôi kim tra khả năng cûa hai Āng dýng  
đþĉc xây dăng tÿ hai framework, thăc hin ti  
trang web có chĀa mt bng dĂ liu vĆi 9 ct và  
2.000 dòng, mô phóng vĆi lần lþĉt 100, 200,„  
1.000 ngþąi dùng đồng thąi truy cp trong 1s và  
ghi nhn thąi gian phn hồi, dung lþĉng bnhĆ  
sā dýng.  
Bng 2. Mu testcase kim thso sánh hai framework  
Thi gian phn hi Bnhsdng % CPU sdng  
Dliu  
Mã  
testcase  
Mô tả  
testcase  
Các bước thc hin  
kim thử  
JSF  
?
ZK  
?
JSF  
?
ZK  
JSF  
ZK  
XX  
Kim thử  
khả năng  
ti N user  
dùng đồng  
thi truy  
cp trong  
1s  
Trang web 1. Mô phỏng N user đồng  
vi bng  
dliu 9  
ct, 2.000  
dòng  
thi truy cp trong 1s trên  
Jmeter  
?
?
?
2. Đồng thi theo dõi bnhớ  
sdng trên VisualVM  
3. Xut tp csv kết qutrên  
hai công ckhi kết thúc  
Hình 1. Mu dliu kim thminh ha cho 2.000 bn ghi  
489  
So sánh hiệu năng của các framework tp trung xlý phía máy chtrên nn tng web vi công nghJava và  
ng dng ti Hc vin Nông nghip Vit Nam  
Hình 2. Thiết lp thông scho máy o Java trên Eclipse  
framework đþĉc thiết kế ging nhau và đþĉc  
2.3. Thiết lập môi trường kim thử  
sinh động, mi bn ghi dĂ liu Āng vĆi một đối  
Môi trþąng kim thā đþĉc thăc hin trên  
máy cýc bvĆi cấu hình đã khai báo. Các phần  
mềm đþĉc cài đặt theo thĀ tă: JDK, Jmeter,  
VisualVM, Eclipse. Webserver Tomcat đþĉc cài  
đặt trong môi trþąng phát trin tích hĉp  
Eclipse.  
tþĉng đþĉc to ra trong bnhĆ nên nò cüng cò  
tác dýng làm tăng yêu cầu kim thā khả năng  
ti cûa webserver vĆi Āng dýng trên framework  
tþĄng Āng.  
Để gilp truy cập đồng thąi cûa nhiu  
ngþąi sā dýng vào mt Āng dýng chúng tôi sā  
dýng công cý Jmeter. Jmeter thăc hin gilp  
một nhòm ngþąi dùng gāi các yêu cu tĆi mt  
máy chû, nhn và xā lý các phn hi tÿ máy chû  
và cung cp các kết qubáo cáo hiu suất dþĆi  
dng biểu đtrăc quan, dhiu (Hình 3).  
Các thông scu hình cho máy o Java  
đþĉc thăc hin ti chế độ chy cu hình Āng  
dýng (Run configuration) trên Eclipse (Hình 2).  
Các thông scu hình cho webserver  
Tomcat gm maxThreads và acceptCount đþĉc  
cu hình trong file server.xml nằm trong thþ  
mýc cài đặt Tomcat:  
Các tham scn thiết lp trên Jmeter:  
- Thread group:  
<Connector  
"HTTP/1.1"  
redirectPort="8443"  
port="8080"  
connectionTimeout="20000"  
acceptCount="1024"  
protocol=  
Number of Thread (users): N  
Số ngþąi dùng đồng thąi truy cp hthng,  
N đþĉc thay đổi trong mi ln kim thā  
maxThreads="2000"/>  
Ramp-up period (seconds): 1  
Hai project Āng dýng đþĉc xây dăng trên  
Eclipse và thăc hin chy trên webserver  
Tomcat. Giá trð các trþąng dĂ liệu đþĉc sinh  
ngu nhiên tÿ mt mng các giá trð tþĄng Āng.  
DĂ liu cung cp cho tng xā lý hin thð cûa hai  
Khong thąi gian mà N ngþąi dùng đồng  
thąi truy cp  
Loop count: 1  
Sln kim thā lp li  
Hình 3. Cơ chế gii lp ca Jmeter (Guru99, 2020)  
490  
Trn Trung Hiếu, Phạm Quang Dũng, Đỗ ThNhâm  
Hình 4. Cách btrí ca shai ng dng kim thử để đảm bảo đồng bdliu  
Hình 5. Dliu phn hi tcác request trên Jmeter gi ti ng dng ZK  
- Http request:  
PhþĄng thĀc gāi request tĆi webserver  
Protocol: http  
Path: http://localhost:8080/TestZKforArticle/  
Giao thĀc truy cp Āng dýng web  
Server name or IP: localhost  
Đða chî server Āng dýng  
Port Number: 8080  
Đþąng dn truy cp Āng dýng, thay đþąng  
dẫn tþĄng Āng vĆi Āng dýng JSF  
- Summary Report: Báo cáo tng hĉp cn  
thêm vào trên Thread group  
Scng lng nghe yêu cu cûa webserver  
tomcat  
- View results tree: Cây theo dõi các request  
đþĉc gāi và dĂ liu phn hi tÿ server cn thêm  
vào trên Thread group  
Request: GET  
491  
So sánh hiệu năng của các framework tp trung xlý phía máy chtrên nn tng web vi công nghJava và  
ng dng ti Hc vin Nông nghip Vit Nam  
Hình 6. Dliu phn hi tcác request trên Jmeter gi ti ng dng JSF  
thêm tính tin cy cûa vic gilp trên Jmeter.  
Có nhĂng framework nhþ Vaadin ta rất khó  
thăc hin kim thā trên Jmeter bći dĂ liu  
phn hi tÿ webserver có chĀa mã động  
javascript, Jmeter chî có thti mt phn dĂ  
liu mong mun dẫn đến kết qukim thā  
không chính xác.  
Trên công cý VisualVM cn cài đặt thêm  
plugin Tracer-Monitor để có ththeo dõi và  
xut dĂ liệu ra dþĆi dng tp csv.  
2.4. Thc hin kim thử  
Để tiến hành kim thā cho mỗi trþąng hĉp  
N ngþąi sā dýng truy cp vào Āng dýng, ta cn  
bt webserver, btrí hai Āng dýng Jmeter và  
VisualVM song song trên cāa smàn hình.  
Đồng thąi khći động kim thā mô phóng trên  
Jmeter, và kim thā bnhĆ sā dýng trên  
VisualVM, khi vic chy trên Jmeter kết thúc,  
cüng đồng thąi nhn kết thúc chþĄng trình chạy  
trên VisualVM. Vic xut kết qura tp csv  
trên hai Āng dýng diễn ra sau đò. Sau mỗi ln  
nhþ vậy ta thu đþĉc 2 tp csv kết quả. Để kim  
thā vĆi mi giá trð số ngþąi sā dýng N khác  
nhau, cn thăc hin khći động lại webserver để  
đảm bo tài nguyên sā dýng cho ln kim thā  
trþĆc đþĉc gii phóng hoàn toàn  
Thăc hin kim thā theo mẫu testcase đã  
đề ra và phþĄng pháp đþa ra ć mýc 2.4, ta thu  
đþĉc bng sliu (Bng 3), tÿ đò ta vẽ đþĉc các  
biu đồ so sánh thąi gian phn hi (Hình 7),  
phần trăm CPU sā dýng (Hình 8) và bnhĆ sā  
dýng (Hình 9).  
Qua biểu đồ so sánh thąi gian phn hi, ta  
thy cả hai framework đều có thąi gian phn hi  
tăng dần khi số ngþąi dùng truy cập tăng dần.  
Thąi gian phn hi cûa ZK framework là nhanh  
hĄn trong mọi trþąng hĉp kim thā. Thąi gian  
phn hi trung bình vĆi JSF framework là  
59995,4 (ms), vĆi ZK framework là 22607,6  
(ms), tính trung bình thąi gian phn hi cûa ZK  
nhanh hĄn JSF 2,65 lần.  
Biểu đồ so sánh phần trăm sā dýng CPU  
cûa máy o Java cho thy, JSF sā dýng CPU  
nhiều hĄn và ít biến động hĄn, trung bình JSF  
sā dýng là 87,9%. ZK sā dýng CPU ít hĄn JSF,  
khi số ngþąi dùng truy cập tăng (tÿ 800 đến  
1.000), ZK cho thấy xu hþĆng gim phần trăm  
CPU sā dýng, đây là một điểm cng cûa ZK.  
Trung bình ZK sā dýng 72,5% CPU.  
3. KT QUVÀ THO LUN  
Về tính đáng tin cậy cûa vic gilp trên  
Jmeter, kim tra ni dung request gāi trên  
“View Result Tree” trong Jmeter, ta thấy ni  
dung dĂ liu phn hi tÿ webserver phn ánh  
đúng mã nguồn trang web tþĄng Āng trên  
trình duyt vĆi bng dĂ liệu. Điều này cûng cố  
492  
Trn Trung Hiếu, Phạm Quang Dũng, Đỗ ThNhâm  
Bng 3. Bng kết qukim thử  
Mã  
testcase  
Mô tả  
testcase  
Bnhsdng  
(Byte)  
CPU  
(%)  
Thi gian phn hi trung bình(ms)  
JSF  
ZK  
JSF  
ZK  
JSF  
ZK  
01  
02  
03  
04  
05  
06  
07  
08  
09  
10  
100 users/1s  
200 users/1s  
300 users/1s  
400 users/1s  
500 users/1s  
600 users/1s  
700 users/1s  
800 users/1s  
900 users/1s  
1000 users/1s  
24614  
42534  
46288  
54741  
62395  
68553  
64221  
81624  
77185  
77799  
9275  
337379315,2  
385484710,22  
412876526,96  
400760045,61  
396215852,92  
411764396,61  
396889074,54  
389539320,61  
424241753,82  
438933267,6  
448324734,77  
586512438,59  
722201673,33  
803781468,31  
828885223,38  
917078304,94  
959050239,79  
1039310375,83  
1195223791,89  
1391515294,33  
80,38  
85,97  
86,86  
89,32  
91,13  
88,49  
88,95  
89,71  
89,54  
89,37  
61,35  
77,28  
85,04  
78,6  
14733  
15550  
19127  
19286  
20607  
24934  
27910  
34108  
40546  
77,35  
73,01  
76,42  
78,9  
67,03  
50,2  
Hình 7. Biểu đồ so sánh thi gian phn hi trung bình  
cn thiết phi sā dýng thêm các mô hình kim  
nghim. Các thông skết qumà chúng tôi thu  
đþĉc trong phép kim thā khả năng tải trên  
môi trþąng máy cýc bộ, nhþ thąi gian phn hi,  
chênh lch nhiu so vĆi khong chp nhn  
đþĉc trên môi trþąng trin khai thăc, đò là do  
đặc thù cûa phép kim thā truy cập đồng thąi  
trong thąi gian ngắn, lþĉng dĂ liu cn ti lĆn,  
vic khći động li webserver khiến mt số đối  
tþĉng chĀc năng phải khći to li và năng lăc  
hn chế cûa máy cá nhân đþĉc dùng làm  
webserver. Tuy nhiên, các thông số đò là có giá  
trð giúp chúng tôi đạt đþĉc mýc đích so sánh  
hiệu năng cûa hai framework.  
Biểu đồ so sánh dung lþĉng bnhĆ sā dýng  
cho thy, JSF sā dýng ít bnhĆ hĄn ZK. Trong  
khong tÿ 100 đến 1.000 ngþąi sā dýng truy  
cp, bnhĆ sā dýng cûa JSF là ít biến động, ZK  
sā dýng nhiu bnhĆ hĄn và cò xu hþĆng tăng  
dn khi số lþĉng ngþąi dùng tăng. Trung bình  
JSF sā dýng 380,9 (MB), trung bình ZK sā dýng  
848 (MB), trung bình bnhĆ ZK sā dýng nhiu  
gp 2,2 ln JSF.  
Trong các biểu đồ kết quchúng tôi thu  
đþĉc, đồ thð biu din sliu Āng vĆi hai  
framework là tách bit hoàn toàn, vì vy trong  
nhận xét đánh giá, chúng tôi thấy cüng không  
493  
So sánh hiệu năng của các framework tp trung xlý phía máy chtrên nn tng web vi công nghJava và  
ng dng ti Hc vin Nông nghip Vit Nam  
Hình 8. Biểu đồ so sánh phần trăm CPU sử dng  
Hình 9. Biểu đồ so sánh dung lượng bnhsdng  
vin có thể đăng kċ suất ăn trþa trăc tuyến,  
quét thxác nhận dùng cĄm và thng kê, xut  
báo cáo danh sách các cán bộ đã dùng cĄm theo  
mt khong thąi gian nhất đðnh.  
4. NG DNG  
Sau khi tiến hành kho sát, so sánh các  
framework cûa Java, chúng tôi quyết đðnh sā  
dýng ZK framework để xây dăng website đặt  
cĄm tại nhà hàng H+ Green VNUA cûa Hc vin  
Nông nghip Vit Nam. Website nm trong  
chþĄng trình cûa Hc vin htrĉ mt phn tin  
ăn trþa cho cán bộ Hc vin, phi hĉp vĆi nhà  
hàng H+ Green Vnua cho phép các cán bhc  
Nhą có nhĂng þu điểm cûa ZK framework,  
chúng tôi có thtrin khai xây dăng website  
trong thąi gian ngn, website có giao diện đẹp, ti  
þu hòa trải nghiệm ngþąi dùng nhą các thành  
phn giao din htrĉ mnh bći ZK framework.  
494  
Trn Trung Hiếu, Phạm Quang Dũng, Đỗ ThNhâm  
Hình 10. Hình nh giao diện website đặt cơm vnua  
Website phýc vý cho hĄn 10.00 cán bộ cûa  
Hc viện đăng kċ ăn trþa và quét thxác nhn  
hàng ngày, vic xut báo cáo theo tháng vĆi file  
excel cĈ lĆn chĀa tÿ 3.000 đến 4.500 bn ghi dĂ  
liu. Website vn hoạt động tt ktÿ khi trin  
khai tháng 9/2019 đến nay (tháng 6/2020).  
Trong thąi gian xây dăng website, chúng tôi gp  
rt ít li phi sāa và trong thąi gian tÿ khi trin  
khai, cüng cò rất ít li phi bảo trì, điều này có  
đþĉc cüng nhą mt phn ć tính þu việt cûa công  
nghZK framework. Website có thtruy cp  
khách quan hiệu năng cûa hai Āng dýng đþĉc  
xây dăng bći mi framework.  
Qua kết qukim thā hiệu năng, chúng tôi  
thấy đþĉc ZK framework tối þu hĄn về mt thąi  
gian phn hi và phần trăm sā dýng CPU.  
Điểm trÿ cûa ZK framework so vĆi JSF  
framework là ć dung lþĉng bnhĆ sā dýng, ZK  
framework sā dýng dung lþĉng bnhĆ nhiu  
hĄn nhþng điểm này hoàn toàn có thchp  
nhận đþĉc khi thăc tế số lþĉng ngþąi dùng lĆn  
cùng truy cp vào Āng dýng trong 1 giây là ít  
xy ra và bnhĆ cûa máy chû thþąng lĆn tÿ  
32GB đến 2TB. HĄn nĂa, nếu ngþąi dùng có  
điều kin sā dýng các phiên bản thþĄng mại cûa  
ZK framework, tốc độ phn hi và dung lþĉng  
bnhĆ sā dýng cñn đþĉc ci thin nhiu.  
Hiện chúng tôi đang tiếp týc vn dýng công  
nghZK framework vào một đề tài cp Hc vin  
để phát trin website cho khoa Công nghthông  
tin. Đề tài shoàn thành vào tháng 12/2020  
Cui cùng, tng hĉp tt cả các so sánh þu  
nhþĉc điểm, chúng tôi quyết đðnh lăa chn ZK  
framework cho xây dăng Āng dýng cûa nhóm.  
ng dýng đã xây dăng thành công gim thiu  
công sĀc và thąi gian, Āng dýng hiện đang hoạt  
động tt, ổn đðnh, đáp Āng nhanh, phýc vý cho  
công vic thăc tế cûa cán bHc vin.  
5. KT LUN  
Trong bài báo này, chúng tôi đã đþa ra đþĉc  
phþĄng pháp so sánh hiệu năng cûa hai  
framework tiêu biu trong nhóm các server-  
centric java web framework hþĆng đến mt lăa  
chn sā dýng. Các kết quả đþa ra phản ánh  
495  
So sánh hiệu năng của các framework tp trung xlý phía máy chtrên nn tng web vi công nghJava và  
ng dng ti Hc vin Nông nghip Vit Nam  
Perforce Software, Inc (2020). Best Java frameworks.  
LI CẢM ƠN  
java-frameworks on June 15, 2020.  
Để hoàn thành bài báo trên, các tác gixin  
Potix (2020). Faster And Lighter, The Performance  
bày tó ląi cảm Ąn đến Hc vin Nông nghip  
Việt Nam đã phê duyệt đề tài cp Hc vin, mã  
sT2020-10-44.  
Test  
On  
ZK8.  
Retrieved  
from  
tember/Faster_And_Lighter,_The_Performance_T  
est_On_ZK8 on June 15, 2020.  
Potix  
(2020).  
Our  
Story.  
Retrieved  
on  
from  
June  
TÀI LIU THAM KHO  
1&1 IONOS Inc (2017). Web frameworks overview  
15, 2020.  
and  
classification.  
Retrieved  
from  
Potix (2020). ZK home page. Retrieved from  
development/web-frameworks-an-overview  
June 15, 2020.  
on  
PrimeTek Informatics (2020). Choose a Product to  
View Available Templates. Retrieved from  
Abdullah J.M., Mohammed M.A. & Muhammed D.A.  
(2015). Java 8 New Features Improvements and  
Complications. Int. J. of Multidisciplinary and  
Current research.  
15, 2020.  
on  
June  
PrimeTek Informatics (2020). Prime faces home page.  
June 15, 2020.  
Bathia S. (2018). PSD: Professional Scrum Developer  
Question Bank and Reference Guide. Retrieved  
DwAAQBAJ&printsec=copyright&redir_esc=y#v  
=onepage&q&f=false on June 17, 2020.  
Qing S. (2012). Web Performance Testing with Apache  
Jmeter. Intelligent Computer and Applications, 2.  
RedHat (2020). RichFaces home page. Retrieved from  
Ciugudean M. & Gorgan D. (2016). Methodology for  
Identification and Evaluation of Web Application  
Scholtz B. & Tijms A. (2018). The Definitive Guide to  
JSF in Java EE 8: Building Web Applications with  
JavaServer Faces. Apress.  
Performance  
Revista Romana  
Calculator. 9(2):155-176.  
Guru99 (2020). How to Use JMeter for Performance &  
Load Testing. Retrieved from  
Oriented  
Usability  
Issues.  
de  
Interactiune  
Om-  
Shan T.C. & Hua W.W. (2006). Taxonomy of java web  
application  
International  
Engineering (ICEBE'06). IEEE. pp. 378-385.  
frameworks.  
Conference  
In 2006  
on e-Business  
IEEE  
testing.html on June 15, 2020.  
SoftwareTestingHelp (2020). Performance Testing Vs  
Load Testing Vs Stress Testing (Difference).  
com/what-is-performance-testing-load-testing-  
stress-testing on June 15, 2020.  
Hamed O. & Kafri N. (2009). Performance Prediction  
of Web Based Application Architectures Case  
Study:.NET vs. Java EE. International Journal of  
Web Applications. 1(3): 146-156.  
Jha N. & Popli R. (2017). Comparative analysis of web  
applications using JMeter. International Journal of  
Advanced Research in Computer Science. 8(3).  
The Apache Software Foundation (2020). Apache  
Jmeter  
home  
page.  
Retrieved  
from  
Oracle (2020). Command Line Reference. Retrieved  
The Apache Software Foundation (2020). Apache  
Tomcat 9 Configuration Reference. Retrieved from  
from  
jrockit_jvm/jrockit/jrdocs/refman/optionX.html on  
June 15, 2020.  
doc/config/http.html on June 15, 2020.  
Oracle (2020). Java Platform, Standard Edition  
HotSpot Virtual Machine Garbage Collection  
com/ javase/8/docs/technotes/guides/vm/gctuning/  
considerations.html on June 15, 2020.  
Try QA (2020). What is Load testing in software  
testing? Examples, How To Do, Importance,  
is-load-testing-in-software on June 15, 2020.  
Vosloo I., & Kourie D.G. (2008). Server-centric web  
frameworks: An overview. ACM Computing  
Surveys (CSUR). 40(2): 1-33.  
Oracle (2020). VisualVM home page. Retrieved from  
496  
pdf 11 trang baolam 10/05/2022 3500
Bạn đang xem tài liệu "So sánh hiệu năng của các framework tập trung xử lý phía máy chủ trên nền tảng web với công nghệ java và ứng dụng tại Học viện Nông nghiệp Việt Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfso_sanh_hieu_nang_cua_cac_framework_tap_trung_xu_ly_phia_may.pdf