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  
Tạp chí Khoa học Nông nghiệp Việt Nam 2021, 19(4): 486-496  
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  
Trần Trung Hiếu*, Phạm Quang Dũng, Đỗ Thị Nhâm  
Khoa Công nghệ thông tin, Học viện Nông nghiệp Việt Nam  
*Tác giả liên hệ: [email protected].vn  
Ngày nhận bài: 20.07.2020  
Ngày chấp nhận đăng: 23.12.2020  
TÓM TẮT  
Trong nghiên cứu này, chúng tôi thực hiện so sánh hiệu năng của hai framework tiêu biểu trong nhóm 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 là ZK và JSF hướng đến một lựa  
chọn sử dụng. Bằng phương pháp kiểm thử hiệu năng dựa trên các tiêu chí thời gian phản hồi và dung lượng bộ  
nhớ sử dụng, nghiên cứu cách mô phỏng, cấu hình thông số trên các công cụ Jmeter, 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 dựng bởi mỗi framework. Qua kết  
quả kiểm thử hiệ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 dụng vào thực tiễn, xây dựng các ứng dụng đã được đưa vào sử dụng ở Học viện Nông nghiệp Việt Nam.  
Từ khó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ā lý ć 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Ă lập  
trình Java luôn là lăa chọn hàng đầu để xây  
dăng các phần mềm Āng dýng, trong nhiều năm  
Java thþąng xếp thĀ nhất hoặc nhì trong bảng  
xếp hạng các ngôn ngĂ lập trình đþĉc sā dýng  
nhiều nhất (Bảng 1).  
hói lập trình viên cần am hiểu về các ngôn ngĂ  
HTML, Javascript. Do đặc thù cûa nhĂng ngôn  
ngĂ này, chþĄng trình thþąng phĀc tạp hĄn và  
tốn nhiều thąi gian công sĀc để phát triển hĄn.  
Nhóm các server-centric framework đã xây  
dăng sẵn nhiều thþ viện để đĄn giản hóa việc  
lập trình cûa ngþąi sā dýng nên thþąng dễ phát  
triển hĄn, thąi gian xây dăng ngắn hĄn và do  
tập trung phần lĆn công việc xā lý ć phía server  
nên tính bảo mật cüng cao hĄn, đây là một tiêu  
Các framework lập 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 nhiều công việc xā lý về  
phía máy khách, nhóm server-centric tập trung  
486  
Trần Trung Hiếu, Phạm Quang Dũng, Đỗ Thị Nhâm  
DoS và CSRF, ZK tăng cþąng hĄn nĂa xác thăc  
và ûy quyền vĆi các khuôn khổ bảo mật cûa bên  
thĀ ba nhþ Spring Security, hoàn toàn cung cấp  
bảo vệ tÿ cấp độ trang đến các să kiện Ajax, đây  
cüng là lý do quan trọng để các doanh nghiệp  
lĆn lăa chọn ZK. Ngoài ra, ZK cho phép tích hĉp  
nhiều công nghệ khác nhþ JSP, Struts, Spring,  
EJB, Hibernate, CDI, JDBC, Bootstrap (Potix,  
2020)„ vĆi tài liệu hþĆng dẫn chi tiết, đây là  
một yếu tố rất quan trọng khi các Āng dýng lĆn  
cần kết hĉp nhiều công nghệ khác nhau.  
chí quan trọng trong lăa chọn cûa nhiều doanh  
nghiệp. 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 nhắc trên nhiều yếu  
tố, trong nhiều trþąng hĉp, server-centric  
framework là một lăa chọn tốt.  
Trong một số server-centric web framework  
xây dăng trên nền tảng ngôn ngĂ lập trình Java  
nhþ JavaServer Faces (JSF), Wicket, Tapestry,  
Vaadin, ZK, thì JSF đþĉc sā dýng nhiều nhất  
(Perforce Software Inc, 2020). JSF ra đąi năm  
2001, là một framework mã nguồn mć đþĉc viết  
bći Sun Microsystems. JSF thþąng phải sā dýng  
kèm vĆi một thþ viện hỗ trĉ tạo giao diện ngþąi  
dùng nhþ PrimeFaces (PrimeTek Informatics,  
2020) hay RichFaces (RedHat, 2020). Hiện nay,  
JSF đþĉc hỗ trĉ phát triển bći Oracle, tập đoàn  
tiếp quản công nghệ Java tÿ Sun Microsystems,  
JSF đã đþĉc Oracle đþa thành chuẩn Java cho  
các Āng dýng đồ họa trên nền web (Scholtz &  
cs., 2018), JSF thþąng đþĉc dùng kết hĉp vĆi  
PrimeFaces nhiều nhất, giá cûa thþ viện GUI  
(Graphic User Interface) này rẻ bất ngą vĆi chî  
19$-79$ đối vĆi các layout riêng lẻ, hay chþa  
đến 200$ cho một phiên bản 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ó một số nhþĉc điểm.  
ZK đþĉc viết bći Potix Đài Loan năm 2005  
(Potix, 2020), ZK bao gồm hai phiên bản, phiên  
bản thþĄng mại và phiên bản mã nguồn mć  
dành miễn 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 nhiều 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 cần  
biết bất kĊ kiến thĀc nào về Ajax và Javascript.  
ZK hỗ trĉ số lþĉng lĆn các thành phần giao diện  
đã đþĉc xây dăng sẵn vĆi trên 200 thành phần,  
là framework đầu tiên hỗ trĉ bảng tính  
(spreadsheet), mô hình MVVM (Model-View-  
ViewModel) trên nền web. Theo phản hồi tÿ  
phía ngþąi sā dýng, thąi gian xây dăng Āng  
dýng vĆi ZK giảm tÿ 4 đến 16 lần. ZK bảo vệ các  
Āng dýng chống lại các hình thĀc tấn công XSS,  
Về mặt tính năng, ZK cò nhiều þu điểm  
vþĉt trội so vĆi JSF. Tuy nhiên, các tính năng,  
chĀc năng cûa một hệ thống phần mềm không  
phải mối quan tâm duy nhất, hiệu năng cûa một  
phần mềm cüng là một yếu tố đáng chú ċ. Hiệu  
năng bao gồm các yếu tố nhþ thąi gian phản hồi  
(response time), độ tin cậy (reliability), mĀc độ  
sā dýng tài nguyên (resource usage) và khả  
năng mć rộng (scalability) (Bathia & cs., 2018),  
các yếu tố này ảnh hþćng không nhó đến chất  
lþĉng dðch vý cung cấp cho ngþąi dùng, cüng  
nhþ să tiêu tốn tài nguyên phía nhà cung cấp  
phải đáp Āng. Nghiên cĀu này nhằm so sánh  
hiệu năng cûa hai framework, và thăc nghiệm  
vĆi hai framework tiêu biểu cûa nhóm các  
server-centric java web framework là JSF và  
ZK, tÿ đò lăa chọn ra một framework tốt hĄn  
cho xây dăng Āng dýng.  
2. PHƯƠNG PHÁP NGHIÊN CỨU  
Có nhiều loại kiểm thā hiệu năng bao gồm:  
load test (kiểm thā khả năng tải), stress test  
(kiểm thā xem hệ thống hoạt động nhþ thế nào  
khi quá tải và cách hệ thống phýc hồi khi xảy  
ra lỗi), capacity test (kiểm thā lþĉng giao dðch  
trên một đĄn vð thąi gian), endurance test  
(kiểm thā lþĉng tải ổn đðnh trong một khoảng  
thąi gian dài), spike test (kiểm thā phản Āng  
cûa phần mềm trþĆc các thay đổi lĆn hoặc đột  
ngột khi tải), volume test (kiểm thā hiệu suất  
cûa hệ thống Āng vĆi các khối lþĉng cĄ sć dĂ  
liệu khác nhau), scalability test (kiểm thử khả  
năng mở rộng tải của ứng dụng), reliability test  
(kiểm thử độ tin cậy của hệ thống, hay khả  
năng thực hiện một hoạt động không có lỗi  
trong một khoảng thời gian nhất định)  
(SoftwareTestingHelp, 2020).  
487  
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  
Bảng 1. Thứ hạng ngôn ngữ lậ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à một quá trình thêm nhu cầu  
vào một hệ thống hoặc thiết bð và đo lþąng phản  
Āng cûa nò. Load testing đþĉc thăc hiện để xác  
đðnh Āng xā cûa hệ thống trong các điều kiện tải  
bình thþąng và cao hĄn điều kiện tải 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ý,  
một nghiên cứu so sánh hiệu năng ứng dụng  
web trên hai nền tảng.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 phản hồi và 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 khác nhau trên cùng một Āng dýng  
(Hamed & cs., 2009). Tại website trang chû cûa  
ZK framework, nghiên cĀu cûa tác giả James  
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  
Bộ nhĆ: 8GB  
Về phần mềm, chúng tôi sā dýng các phần  
mềm sau:  
ZK 9.0.0 CE: phiên bản ZK framework miễn  
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 bản miễn  
phí dành cho cộng đồng  
JDK 1.8.0_241: Bộ công cý phát triển Java,  
bao gồm máy ảo Java  
Apache Tomcat 9: Webserver  
Eclipse IDE 2020-03: Môi trþąng phát triển  
tích hĉp cho Āng dýng Java EE  
Apache Jmeter 5.3 (The Apache Software  
Foundation, 2020): Công cý kiểm thā hiệu năng  
Āng dýng  
Visual VM 1.4.2 (The Apache Software  
Foundation, 2020): Công cý kiểm thā bộ nhĆ sā  
dýng cho các Āng dýng Java  
VĆi ZK, vì không cò điều kiện sā dýng phiên  
bản mất phí nên chúng tôi sā dýng phiên bản  
miễn phí dành cho cộng đồng. Phiên bản ZK,  
JSF, PrimeFaces đþĉc chọn là mĆi nhất tại thąi  
điểm tiến hành kiểm thā, các phiên bản phần  
mềm còn lại có thể tùy chọn, sao cho đảm bảo 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 chọn loại kiểm thā  
“load test” để so sánh thąi gian phản hồi  
(response time), dung lþĉng bộ nhĆ sā dýng  
(memory consumption) và phần trăm sā dýng  
CPU tþĄng Āng. Các bþĆc kiểm thā bao gồm:  
xác đðnh môi trþąng kiểm thā, thiết kế trþąng  
hĉp kiểm thā (testcase), cài đặt môi trþąng  
kiểm thā và thăc hiện kiểm thā.  
Về các thông số cấu hình, để đảm bảo việc  
so sánh đþĉc khách quan, chúng tôi cần cấu  
hình một số thông số trong webserver sao cho cĄ  
chế quản lý cûa webserver không gây ảnh  
hþćng đến việc so sánh. Các thông số cấu hình  
Tomcat webserver bao gồm:  
2.1. Xác định môi trường kiểm thử  
Session timeout mặc đðnh: Thąi gian kiểm  
thā Āng dýng là ngắn nên không cần cấu hình  
đặc biệt gì cho tham số này  
Về phần cĀng, chúng tôi sā dýng máy cýc  
bộ (localhost) đòng vai trñ làm webserver để  
chạy hai Āng dýng Āng vĆi hai framework có  
cấu hình:  
- Xms 2048MB: kích thþĆc bộ nhĆ heap  
khći tạo khi máy ảo Java hoạt động  
488  
Trần Trung Hiếu, Phạm Quang Dũng, Đỗ Thị Nhâm  
- Xmx 2048MB: kích thþĆc bộ nhĆ heap  
tối đa  
kích thþĆc bộ nhĆ 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 tạo  
TrþĆc phiên bản Java 8, bộ nhĆ PermGen  
nằm trong Heap đþĉc sā dýng khi Āng dýng  
cần tải số lþĉng lĆn các lĆp (class), do bð hạn  
chế bći kích thþĆc bộ nhĆ Heap, nên Āng dýng  
dễ có khả năng bð lỗi tràn bộ nhĆ (java.lang.  
OutOfMemoryError: PermGen space). Tÿ  
phiên bản Java 8, bộ nhĆ PermGen đþĉc loại  
bó, thay thế bći bộ nhĆ Metaspace (Oracle,  
2020). Metaspace không phải một phần cûa bộ  
nhĆ Heap nhþ PermGen, kích thþĆc cûa nó  
không giĆi hạn, tùy thuộc vào bộ nhĆ đþĉc hệ  
điều hành cấp cho máy ảo Java. Bộ nhĆ  
Metaspace tuy không giĆi hạn nhþng ta nên  
đặt giĆi hạn cho nò để tránh việc rò rî bộ nhĆ  
(memory leak).  
- XX: MaxMetaspaceSize 1024MB: kích  
thþĆc bộ nhĆ Metaspace tối đa  
maxThreads: 2000: số yêu cầu 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 cầu kết nối đến webserver. Mọi yêu  
cầu nhận đþĉc khi hàng đĉi đầy sẽ bð tÿ chối.  
Giá trð mặc đðnh là 100 (The Apache Software  
Foundation, 2020). Số lþĉng ngþąi dùng tối đa  
trong thā nghiệm là 1000 nên giá trð này đþĉc  
thiết lập là 1024.  
Bộ nhĆ heap chĀa các đối tþĉng (Object)  
Java, các biến tïnh, các biến toàn cýc. Bộ nhĆ  
heap đþĉc dọn dẹp tă động bći bộ dọn rác GC  
(garbage collector), mặc đðnh kích thþĆc bộ nhĆ  
heap tối đa là 64MB (Oracle, 2020). Mỗi  
framework sā dýng bộ nhĆ Heap khác nhau, để  
việc dọn dẹp bộ nhĆ bći bộ GC mà ta không đoán  
đðnh đþĉc không ảnh hþćng chþĄng trình, và  
phòng khi kiểm thā số lþĉng ngþąi dùng truy  
cập lĆn có thể thiếu bộ nhĆ, chúng tôi thiết lập  
2.2. Thiết kế kịch bản kiểm thử  
Để so sánh hiệu năng cûa hai framework,  
chúng tôi kiểm tra khả năng cûa hai Āng dýng  
đþĉc xây dăng tÿ hai framework, thăc hiện tải  
trang web có chĀa một bảng dĂ liệu vĆi 9 cột 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 cập trong 1s và  
ghi nhận thąi gian phản hồi, dung lþĉng bộ nhĆ  
sā dýng.  
Bảng 2. Mẫu testcase kiểm thử so sánh hai framework  
Thời gian phản hồi Bộ nhớ sử dụng % CPU sử dụng  
Dữ liệu  
Mã  
testcase  
Mô tả  
testcase  
Các bước thực hiện  
kiểm thử  
JSF  
?
ZK  
?
JSF  
?
ZK  
JSF  
ZK  
XX  
Kiểm thử  
khả năng  
tải N user  
dùng đồng  
thời truy  
cập trong  
1s  
Trang web 1. Mô phỏng N user đồng  
với bảng  
dữ liệu 9  
cột, 2.000  
dòng  
thời truy cập trong 1s trên  
Jmeter  
?
?
?
2. Đồng thời theo dõi bộ nhớ  
sử dụng trên VisualVM  
3. Xuất tệp csv kết quả trên  
hai công cụ khi kết thúc  
Hình 1. Mẫu dữ liệu kiểm thử minh họa cho 2.000 bản ghi  
489  
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  
Hình 2. Thiết lập thông số cho máy ảo Java trên Eclipse  
framework đþĉc thiết kế giống nhau và đþĉc  
2.3. Thiết lập môi trường kiểm thử  
sinh động, mỗi bản ghi dĂ liệu Āng vĆi một đối  
Môi trþąng kiểm thā đþĉc thăc hiện trên  
máy cýc bộ vĆ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 triển tích hĉp  
Eclipse.  
tþĉng đþĉc tạo ra trong bộ nhĆ nên nò cüng cò  
tác dýng làm tăng yêu cầu kiểm thā khả năng  
tải cûa webserver vĆi Āng dýng trên framework  
tþĄng Āng.  
Để giả lập truy cập đồng thąi cûa nhiều  
ngþąi sā dýng vào một Āng dýng chúng tôi sā  
dýng công cý Jmeter. Jmeter thăc hiện giả lập  
một nhòm ngþąi dùng gāi các yêu cầu tĆi một  
máy chû, nhận và xā lý các phản hồi tÿ máy chû  
và cung cấp các kết quả báo cáo hiệu suất dþĆi  
dạng biểu đồ trăc quan, dễ hiểu (Hình 3).  
Các thông số cấu hình cho máy ảo Java  
đþĉc thăc hiện tại chế độ chạy cấu hình Āng  
dýng (Run configuration) trên Eclipse (Hình 2).  
Các thông số cấu hình cho webserver  
Tomcat gồm maxThreads và acceptCount đþĉc  
cấu hình trong file server.xml nằm trong thþ  
mýc cài đặt Tomcat:  
Các tham số cần thiết lập 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 cập hệ thống,  
N đþĉc thay đổi trong mỗi lần kiểm thā  
maxThreads="2000"/>  
Ramp-up period (seconds): 1  
Hai project Āng dýng đþĉc xây dăng trên  
Eclipse và thăc hiện chạy trên webserver  
Tomcat. Giá trð các trþąng dĂ liệu đþĉc sinh  
ngẫu nhiên tÿ một mảng các giá trð tþĄng Āng.  
DĂ liệu cung cấp cho tầng xā lý hiển thð cûa hai  
Khoảng thąi gian mà N ngþąi dùng đồng  
thąi truy cập  
Loop count: 1  
Số lần kiểm thā lặp lại  
Hình 3. Cơ chế giải lập của Jmeter (Guru99, 2020)  
490  
Trần Trung Hiếu, Phạm Quang Dũng, Đỗ Thị Nhâm  
Hình 4. Cách bố trí cửa sổ hai ứng dụng kiểm thử để đảm bảo đồng bộ dữ liệu  
Hình 5. Dữ liệu phản hồi từ các request trên Jmeter gửi tới ứng dụng ZK  
- Http request:  
PhþĄng thĀc gāi request tĆi webserver  
Protocol: http  
Path: http://localhost:8080/TestZKforArticle/  
Giao thĀc truy cập Āng dýng web  
Server name or IP: localhost  
Đða chî server Āng dýng  
Port Number: 8080  
Đþąng dẫn truy cập Āng dýng, thay đþąng  
dẫn tþĄng Āng vĆi Āng dýng JSF  
- Summary Report: Báo cáo tổng hĉp cần  
thêm vào trên Thread group  
Số cổng lắng nghe yêu cầu cûa webserver  
tomcat  
- View results tree: Cây theo dõi các request  
đþĉc gāi và dĂ liệu phản hồi tÿ server cần thêm  
vào trên Thread group  
Request: GET  
491  
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  
Hình 6. Dữ liệu phản hồi từ các request trên Jmeter gửi tới ứng dụng JSF  
thêm tính tin cậy cûa việc giả lập trên Jmeter.  
Có nhĂng framework nhþ Vaadin ta rất khó  
thăc hiện kiểm thā trên Jmeter bći dĂ liệu  
phản hồi tÿ webserver có chĀa mã động  
javascript, Jmeter chî có thể tải một phần dĂ  
liệu mong muốn dẫn đến kết quả kiểm thā  
không chính xác.  
Trên công cý VisualVM cần cài đặt thêm  
plugin Tracer-Monitor để có thể theo dõi và  
xuất dĂ liệu ra dþĆi dạng tệp csv.  
2.4. Thực hiện kiểm thử  
Để tiến hành kiểm thā cho mỗi trþąng hĉp  
N ngþąi sā dýng truy cập vào Āng dýng, ta cần  
bật webserver, bố trí hai Āng dýng Jmeter và  
VisualVM song song trên cāa sổ màn hình.  
Đồng thąi khći động kiểm thā mô phóng trên  
Jmeter, và kiểm thā bộ nhĆ sā dýng trên  
VisualVM, khi việc chạy trên Jmeter kết thúc,  
cüng đồng thąi nhấn kết thúc chþĄng trình chạy  
trên VisualVM. Việc xuất kết quả ra tệp csv  
trên hai Āng dýng diễn ra sau đò. Sau mỗi lần  
nhþ vậy ta thu đþĉc 2 tệp csv kết quả. Để kiểm  
thā vĆi mỗi giá trð số ngþąi sā dýng N khác  
nhau, cần thăc hiện khći động lại webserver để  
đảm bảo tài nguyên sā dýng cho lần kiểm thā  
trþĆc đþĉc giải phóng hoàn toàn  
Thăc hiện kiểm thā theo mẫu testcase đã  
đề ra và phþĄng pháp đþa ra ć mýc 2.4, ta thu  
đþĉc bảng số liệu (Bảng 3), tÿ đò ta vẽ đþĉc các  
biểu đồ so sánh thąi gian phản hồi (Hình 7),  
phần trăm CPU sā dýng (Hình 8) và bộ nhĆ sā  
dýng (Hình 9).  
Qua biểu đồ so sánh thąi gian phản hồi, ta  
thấy cả hai framework đều có thąi gian phản hồi  
tăng dần khi số ngþąi dùng truy cập tăng dần.  
Thąi gian phản hồi cûa ZK framework là nhanh  
hĄn trong mọi trþąng hĉp kiểm thā. Thąi gian  
phản hồi 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 phản hồi 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 thấy, 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 giảm phần trăm  
CPU sā dýng, đây là một điểm cộng cûa ZK.  
Trung bình ZK sā dýng 72,5% CPU.  
3. KẾT QUẢ VÀ THẢO LUẬN  
Về tính đáng tin cậy cûa việc giả lập trên  
Jmeter, kiểm tra nội dung request gāi trên  
“View Result Tree” trong Jmeter, ta thấy nội  
dung dĂ liệu phản hồi tÿ webserver phản ánh  
đúng mã nguồn trang web tþĄng Āng trên  
trình duyệt vĆi bảng dĂ liệu. Điều này cûng cố  
492  
Trần Trung Hiếu, Phạm Quang Dũng, Đỗ Thị Nhâm  
Bảng 3. Bảng kết quả kiểm thử  
Mã  
testcase  
Mô tả  
testcase  
Bộ nhớ sử dụng  
(Byte)  
CPU  
(%)  
Thời gian phản hồi 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 thời gian phản hồi trung bình  
cần thiết phải sā dýng thêm các mô hình kiểm  
nghiệm. Các thông số kết quả mà chúng tôi thu  
đþĉc trong phép kiểm thā khả năng tải trên  
môi trþąng máy cýc bộ, nhþ thąi gian phản hồi,  
chênh lệch nhiều so vĆi khoảng chấp nhận  
đþĉc trên môi trþąng triển khai thăc, đò là do  
đặc thù cûa phép kiểm thā truy cập đồng thąi  
trong thąi gian ngắn, lþĉng dĂ liệu cần tải lĆn,  
việc khći động lại webserver khiến một số đối  
tþĉng chĀc năng phải khći tạo lại và năng lăc  
hạn 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 bộ nhĆ sā dýng  
cho thấy, JSF sā dýng ít bộ nhĆ hĄn ZK. Trong  
khoảng tÿ 100 đến 1.000 ngþąi sā dýng truy  
cập, bộ nhĆ sā dýng cûa JSF là ít biến động, ZK  
sā dýng nhiều bộ nhĆ hĄn và cò xu hþĆng tăng  
dần 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 bộ nhĆ ZK sā dýng nhiều  
gấp 2,2 lần JSF.  
Trong các biểu đồ kết quả chúng tôi thu  
đþĉc, đồ thð biểu diễn số liệu Āng vĆi hai  
framework là tách biệt hoàn toàn, vì vậy 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 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  
Hình 8. Biểu đồ so sánh phần trăm CPU sử dụng  
Hình 9. Biểu đồ so sánh dung lượng bộ nhớ sử dụng  
viện có thể đăng kċ suất ăn trþa trăc tuyến,  
quét thẻ xác nhận dùng cĄm và thống kê, xuất  
báo cáo danh sách các cán bộ đã dùng cĄm theo  
một khoảng thąi gian nhất đðnh.  
4. ỨNG DỤNG  
Sau khi tiến hành khảo 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 Học viện  
Nông nghiệp Việt Nam. Website nằm trong  
chþĄng trình cûa Học viện hỗ trĉ một phần tiền  
ăn trþa cho cán bộ Học viện, phối hĉp vĆi nhà  
hàng H+ Green Vnua cho phép các cán bộ học  
Nhą có nhĂng þu điểm cûa ZK framework,  
chúng tôi có thể triển khai xây dăng website  
trong thąi gian ngắn, website có giao diện đẹp, tối  
þu hòa trải nghiệm ngþąi dùng nhą các thành  
phần giao diện hỗ trĉ mạnh bći ZK framework.  
494  
Trần Trung Hiếu, Phạm Quang Dũng, Đỗ Thị Nhâ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  
Học viện đăng kċ ăn trþa và quét thẻ xác nhận  
hàng ngày, việc xuất báo cáo theo tháng vĆi file  
excel cĈ lĆn chĀa tÿ 3.000 đến 4.500 bản ghi dĂ  
liệu. Website vẫn hoạt động tốt kể tÿ khi triển  
khai tháng 9/2019 đến nay (tháng 6/2020).  
Trong thąi gian xây dăng website, chúng tôi gặp  
rất ít lỗi phải sāa và trong thąi gian tÿ khi triển  
khai, cüng cò rất ít lỗi phải bảo trì, điều này có  
đþĉc cüng nhą một phần ć tính þu việt cûa công  
nghệ ZK framework. Website có thể truy cập  
khách quan hiệu năng cûa hai Āng dýng đþĉc  
xây dăng bći mỗi framework.  
Qua kết quả kiểm thā hiệu năng, chúng tôi  
thấy đþĉc ZK framework tối þu hĄn về mặt thąi  
gian phản hồi 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 bộ nhĆ sā dýng, ZK  
framework sā dýng dung lþĉng bộ nhĆ nhiều  
hĄn nhþng điểm này hoàn toàn có thể chấp  
nhận đþĉc khi thăc tế số lþĉng ngþąi dùng lĆn  
cùng truy cập vào Āng dýng trong 1 giây là ít  
xảy ra và bộ nhĆ 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 kiện sā dýng các phiên bản thþĄng mại cûa  
ZK framework, tốc độ phản hồi và dung lþĉng  
bộ nhĆ sā dýng cñn đþĉc cải thiện nhiều.  
Hiện chúng tôi đang tiếp týc vận dýng công  
nghệ ZK framework vào một đề tài cấp Học viện  
để phát triển website cho khoa Công nghệ thông  
tin. Đề tài sẽ hoàn thành vào tháng 12/2020  
Cuối cùng, tổng hĉp tất cả các so sánh þu  
nhþĉc điểm, chúng tôi quyết đðnh lăa chọn 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 giảm thiểu  
công sĀc và thąi gian, Āng dýng hiện đang hoạt  
động tốt, ổn đðnh, đáp Āng nhanh, phýc vý cho  
công việc thăc tế cûa cán bộ Học viện.  
5. KẾT LUẬN  
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 biểu trong nhóm các server-  
centric java web framework hþĆng đến một lăa  
chọn 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 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  
Perforce Software, Inc (2020). Best Java frameworks.  
LỜI CẢM ƠN  
java-frameworks on June 15, 2020.  
Để hoàn thành bài báo trên, các tác giả xin  
Potix (2020). Faster And Lighter, The Performance  
bày tó ląi cảm Ąn đến Học viện Nông nghiệp  
Việt Nam đã phê duyệt đề tài cấp Học viện, mã  
số T2020-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 LIỆU THAM KHẢO  
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 24700 Free
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