SlideShare a Scribd company logo
1 of 25
Đánh giá tải với Gatling
Người trình bày: Nguyễn Bá Thành
About me
● Công Ty Nhân Hòa
● github.com/lacoski
● thanh.nguyenba0611@gmail.com
Cấu trúc
1. Performance Testing
2. Tổng quan về Gatling
3. Ước lượng tải với Gatling
4. Distributed Gatling
5. Demo
Performance tests - tổng quan
Kỹ thuật nhằm đánh giá hiệu năng hệ thống (Performance Testing)
Kỹ thuật kiểm thử nhằm xác định băng thông, khả năng xử lý, khả năng
mở rộng dưới một khối lượng truy cập, khối được công việc xác định -
Theo wiki
Performance tests - mục tiêu
Đánh giá hiệu năng, hiệu suất sản phẩm
Đánh giá hạ tầng, mô hình triển khai
Tìm ra các vấn đề ảnh hưởng tới hiệu năng sản phẩm
Hỗ trợ điều chỉnh hệ thống
Mô phỏng môi trường (càng giống production càng tốt):
- Hardware - Phần cứng:
- Cpu, Ram, Storage v.v
- Ảo hóa hoặc Vật lý
- Software - Phần mềm:
- OS, Proxy, LB, DB, Web Server (Version v.v)
- Data - Dữ liệu:
- Dữ liệu mẫu phục vụ tests
Performance tests - cần gì?
Performance tests - cần gì?
Thu thập thông tin:
- Giám sát (monitoring):
- Hardware: CPU, RAM, Bandwidth, IOPS v.v
- Software: Database, Web Server, v.v
- Thu thập (collecting):
- Logging:
- OS
- Application (Access, Error log, Slow query log) v.v
Performance tests - cần gì?
Để cải thiện hiệu năng:
1. Thu thập dữ liệu(logging, monitoring, reports)
2. Tìm điểm gây nghẽn (bottleneck)
3. Giải quyết
4. Thu thập dữ liệu và kiểm chứng sự thay đổi
5. Quay lại bước 1
Performance tests - vấn đề?
Hạ tầng
- Triển khai môi trường phục vụ việc đánh giá
Dữ liệu mô phỏng
- Dữ liệu phục vụ việc đánh giá
Performance tests - vấn đề?
Test hoặc bài tests?
- Kịch bản
- Viết và maintenance
Gatling - Tổng quan
Công cụ kiểm tra tải thông minh, cao cấp, dễ sử dụng.
Phát triển từ ngôn ngữ Scala (tùy chỉnh, tạo bài test linh hoạt).
Hỗ trợ tốt giao thức HTTP, Hỗ trợ nhiều giao thức khác (WebSockets,
JMS, MQTT, …).
Tại sao dùng Gatling
- Dễ tiếp cận, sử dụng
- Report:
- Gatling cung cấp Report rõ ràng, chi tiết, dễ đọc (biểu thị dưới dạng biểu đồ).
- Continuous integration (CI):
- Gatling scripts phong phú thêm các bài test khi áp dụng CI (Jenkins plugins)
- Tạo tải tốt:
- Có thể tạo tải tối đa tới 20K user cùng một thời điểm (Từ 1 node duy nhất)
- Sử dụng ít CPU, RAM, tương thích cao với nhiều OS
Hiệu năng
- Tạo tải với một thread duy nhất, sử dụng ít tài nguyên
- Tool truyền thống 1 user = 1 thread => 1000 user = 1000 thread => Khi thread chờ
phản hồi, chúng sẽ đặt vào trạng thái sleep => Dùng nhiều CPU, RAM, giảm hiệu
năng test
- Sử dụng kiến trúc non-blocking, asynchronous stack (scala, akka,
netty)
- Mô hình actors
- Xử lý kịch bản dưới dạng message bất đồng bộ.
- Sử dụng akka library, netty, scala
Usability, Maintainability
- Hỗ trợ Proxy Recorder
- Cho phép sinh các script scala động. Không cần tự viết
- Sử dụng ngôn ngữ Scala
- Tạo ra đa dạng các bài test dựa trên ngôn ngữ lập trình Scala.
- Dễ đọc, dễ hiểu hiểu, dễ chỉnh sửa nâng cấp kịch bản
Plugins
Có thể tích hợp với nhiều phần mềm thứ 3
- Jenkins, Maven, JMS, v.v
Cách sử dụng Gatling
- Bước 1: Tạo kịch bản (Gatling Recorder)
- Bước 2: Chạy kịch bản (Gatling Test)
- Bước 3: Phân tích report (Gatling Report)
- Vẫn cần monitor dịch vụ
- Bước 4: Đánh giá, thay đổi tải, trở lại bước 2
- Bước 5: Kết luận
Các tham số cần lưu ý
Phía Gatling:
- Phản hồi - Response time
- Băng thông, thông lượng - Throughput, Req/s, CCU
Phía dịch vụ:
- Tài nguyên sử dụng - Cpu, Ram, Bandwidth, Disk IO, Conn
Distributed Gatling
Distributed Gatling
Để triển khai mô hình
- Gatling Frontline (trả phí)
- Gatling InfluxDB Grafana
Distributed Gatling
Write metricRead data
Distributed Gatling
Gatling + Influxdb + Grafana
Demo
Tạo kịch bản
Chạy kịch bản
Distributed Gatling

More Related Content

What's hot

Kubernetes #2 monitoring
Kubernetes #2   monitoring Kubernetes #2   monitoring
Kubernetes #2 monitoring Terry Cho
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Thomas Graf
 
Flagger: Istio Progressive Delivery Operator
Flagger: Istio Progressive Delivery OperatorFlagger: Istio Progressive Delivery Operator
Flagger: Istio Progressive Delivery OperatorWeaveworks
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache KafkaChhavi Parasher
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture IT Expert Club
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes VMware Tanzu
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Vietnam Open Infrastructure User Group
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnDotnet Open Group
 
Zabbix para iniciantes
Zabbix para iniciantesZabbix para iniciantes
Zabbix para iniciantesWerneck Costa
 
pfSense presentation
pfSense presentationpfSense presentation
pfSense presentationSimon Vass
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm
 
Stratum: Next-Gen SDN (beyond OpenFlow)
Stratum: Next-Gen SDN (beyond OpenFlow)Stratum: Next-Gen SDN (beyond OpenFlow)
Stratum: Next-Gen SDN (beyond OpenFlow)PLVision
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Edureka!
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort webhostingguy
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with AnsibleSwapnil Jain
 
WSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2
 

What's hot (20)

Kubernetes #2 monitoring
Kubernetes #2   monitoring Kubernetes #2   monitoring
Kubernetes #2 monitoring
 
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
StarlingX - A Platform for the Distributed Edge | Ildiko VancsaStarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
 
Flagger: Istio Progressive Delivery Operator
Flagger: Istio Progressive Delivery OperatorFlagger: Istio Progressive Delivery Operator
Flagger: Istio Progressive Delivery Operator
 
Apresentação prtg
Apresentação prtgApresentação prtg
Apresentação prtg
 
CloudStack Networking
CloudStack NetworkingCloudStack Networking
CloudStack Networking
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache Kafka
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture
 
Community Openstack 구축 사례
Community Openstack 구축 사례Community Openstack 구축 사례
Community Openstack 구축 사례
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vn
 
Zabbix para iniciantes
Zabbix para iniciantesZabbix para iniciantes
Zabbix para iniciantes
 
pfSense presentation
pfSense presentationpfSense presentation
pfSense presentation
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Stratum: Next-Gen SDN (beyond OpenFlow)
Stratum: Next-Gen SDN (beyond OpenFlow)Stratum: Next-Gen SDN (beyond OpenFlow)
Stratum: Next-Gen SDN (beyond OpenFlow)
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
 
WSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product Overview
 

Similar to Đánh giá tải với Gatling [Meetup #21 - 02]

Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việcmanhvokiem
 
Báo cáo thực tập Tuần 1
Báo cáo thực tập Tuần 1Báo cáo thực tập Tuần 1
Báo cáo thực tập Tuần 1Nat Galacticos
 
Nội dung khóa học Nukeviet
Nội dung khóa học NukevietNội dung khóa học Nukeviet
Nội dung khóa học NukevietCuoiMetagame
 
KyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxKyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxssuser73ecd9
 
Thiết lập i pv6 trên pc
Thiết lập i pv6 trên pcThiết lập i pv6 trên pc
Thiết lập i pv6 trên pcVNG
 
Virtual cluster thesis
Virtual   cluster thesisVirtual   cluster thesis
Virtual cluster thesisSentifi
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềmLượng Võ Đại
 
Cluster bao cao 1
Cluster   bao cao 1Cluster   bao cao 1
Cluster bao cao 1phanleson
 
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...Dịch vụ viết đề tài trọn gói 0934.573.149
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnAsahina Infotech
 

Similar to Đánh giá tải với Gatling [Meetup #21 - 02] (20)

VTV Mobile Performace Test
VTV Mobile Performace TestVTV Mobile Performace Test
VTV Mobile Performace Test
 
Jmeter tool
Jmeter toolJmeter tool
Jmeter tool
 
Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việc
 
Báo cáo thực tập Tuần 1
Báo cáo thực tập Tuần 1Báo cáo thực tập Tuần 1
Báo cáo thực tập Tuần 1
 
Nội dung khóa học Nukeviet
Nội dung khóa học NukevietNội dung khóa học Nukeviet
Nội dung khóa học Nukeviet
 
KyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxKyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptx
 
Báo cáo tuần đồ án
Báo cáo tuần đồ ánBáo cáo tuần đồ án
Báo cáo tuần đồ án
 
Dsd02 sta
Dsd02 staDsd02 sta
Dsd02 sta
 
Thiết lập i pv6 trên pc
Thiết lập i pv6 trên pcThiết lập i pv6 trên pc
Thiết lập i pv6 trên pc
 
Java8
Java8Java8
Java8
 
Virtual cluster thesis
Virtual   cluster thesisVirtual   cluster thesis
Virtual cluster thesis
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềm
 
Baocaocuoiki
BaocaocuoikiBaocaocuoiki
Baocaocuoiki
 
Dsd04 sta
Dsd04 staDsd04 sta
Dsd04 sta
 
Cluster bao cao 1
Cluster   bao cao 1Cluster   bao cao 1
Cluster bao cao 1
 
04 de cuong
04 de cuong04 de cuong
04 de cuong
 
Kali
KaliKali
Kali
 
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...
Xây Dựng Chương Trình Sinh Tự Động Mã Các Trigger Thực Hiện Cập Nhật Gia Tăng...
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vn
 
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.docKiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
 

More from Vietnam Open Infrastructure User Group

Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with Ceph
Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with CephRoom 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with Ceph
Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with CephVietnam Open Infrastructure User Group
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Vietnam Open Infrastructure User Group
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Vietnam Open Infrastructure User Group
 
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...Vietnam Open Infrastructure User Group
 
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Vietnam Open Infrastructure User Group
 
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Vietnam Open Infrastructure User Group
 
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...Vietnam Open Infrastructure User Group
 
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Vietnam Open Infrastructure User Group
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Vietnam Open Infrastructure User Group
 
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...Vietnam Open Infrastructure User Group
 
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsiRoom 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsiVietnam Open Infrastructure User Group
 
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...Vietnam Open Infrastructure User Group
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Vietnam Open Infrastructure User Group
 
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...Vietnam Open Infrastructure User Group
 
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...Vietnam Open Infrastructure User Group
 
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Vietnam Open Infrastructure User Group
 
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache James
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache JamesRoom 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache James
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache JamesVietnam Open Infrastructure User Group
 
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giới
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giớiPhiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giới
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giớiVietnam Open Infrastructure User Group
 

More from Vietnam Open Infrastructure User Group (20)

Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with Ceph
Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with CephRoom 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with Ceph
Room 3 - 5 - Nguyễn Văn Hoàn - 101 Bugs, issues when I work with Ceph
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
 
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...
Room 3 - 4 - Lê Quang Hiếu - How to be a cool dad: Leverage DIY Home Automati...
 
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
 
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
 
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...
Room 2 - 2 - Giang Thiên Phú - Kinh nghiệm tối ưu mongodb với database hơn 10...
 
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
 
Room 2 - 7 - Lã Mạnh Hà - Agile + DevOps = A great combination
Room 2 - 7 - Lã Mạnh Hà - Agile + DevOps = A great combinationRoom 2 - 7 - Lã Mạnh Hà - Agile + DevOps = A great combination
Room 2 - 7 - Lã Mạnh Hà - Agile + DevOps = A great combination
 
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practiceRoom 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
 
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...
Room 2 - 5 - Seong Soo - NHN Cloud - Upstream contribution mentoring program ...
 
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsiRoom 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
 
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...
Room 1 - 6 - Trần Quốc Sang - Autoscaling for multi cloud platform based on S...
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
 
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...
Room 1 - 7 - Lê Quốc Đạt - Upgrading network of Openstack to SDN with Tungste...
 
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...
Room 1 - 5 - Thủy Đặng - Load balancing k8s services on baremetal with Cilium...
 
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
 
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache James
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache JamesRoom 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache James
Room 1 - 1 - Benoit TELLIER - On premise email inbound service with Apache James
 
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giới
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giớiPhiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giới
Phiên sáng - 05 - Chia sẻ về Open Infrastructure trên thế giới
 

Đánh giá tải với Gatling [Meetup #21 - 02]

  • 1. Đánh giá tải với Gatling Người trình bày: Nguyễn Bá Thành
  • 2. About me ● Công Ty Nhân Hòa ● github.com/lacoski ● thanh.nguyenba0611@gmail.com
  • 3. Cấu trúc 1. Performance Testing 2. Tổng quan về Gatling 3. Ước lượng tải với Gatling 4. Distributed Gatling 5. Demo
  • 4.
  • 5. Performance tests - tổng quan Kỹ thuật nhằm đánh giá hiệu năng hệ thống (Performance Testing) Kỹ thuật kiểm thử nhằm xác định băng thông, khả năng xử lý, khả năng mở rộng dưới một khối lượng truy cập, khối được công việc xác định - Theo wiki
  • 6. Performance tests - mục tiêu Đánh giá hiệu năng, hiệu suất sản phẩm Đánh giá hạ tầng, mô hình triển khai Tìm ra các vấn đề ảnh hưởng tới hiệu năng sản phẩm Hỗ trợ điều chỉnh hệ thống
  • 7. Mô phỏng môi trường (càng giống production càng tốt): - Hardware - Phần cứng: - Cpu, Ram, Storage v.v - Ảo hóa hoặc Vật lý - Software - Phần mềm: - OS, Proxy, LB, DB, Web Server (Version v.v) - Data - Dữ liệu: - Dữ liệu mẫu phục vụ tests Performance tests - cần gì?
  • 8. Performance tests - cần gì? Thu thập thông tin: - Giám sát (monitoring): - Hardware: CPU, RAM, Bandwidth, IOPS v.v - Software: Database, Web Server, v.v - Thu thập (collecting): - Logging: - OS - Application (Access, Error log, Slow query log) v.v
  • 9. Performance tests - cần gì? Để cải thiện hiệu năng: 1. Thu thập dữ liệu(logging, monitoring, reports) 2. Tìm điểm gây nghẽn (bottleneck) 3. Giải quyết 4. Thu thập dữ liệu và kiểm chứng sự thay đổi 5. Quay lại bước 1
  • 10. Performance tests - vấn đề? Hạ tầng - Triển khai môi trường phục vụ việc đánh giá Dữ liệu mô phỏng - Dữ liệu phục vụ việc đánh giá
  • 11. Performance tests - vấn đề? Test hoặc bài tests? - Kịch bản - Viết và maintenance
  • 12.
  • 13. Gatling - Tổng quan Công cụ kiểm tra tải thông minh, cao cấp, dễ sử dụng. Phát triển từ ngôn ngữ Scala (tùy chỉnh, tạo bài test linh hoạt). Hỗ trợ tốt giao thức HTTP, Hỗ trợ nhiều giao thức khác (WebSockets, JMS, MQTT, …).
  • 14. Tại sao dùng Gatling - Dễ tiếp cận, sử dụng - Report: - Gatling cung cấp Report rõ ràng, chi tiết, dễ đọc (biểu thị dưới dạng biểu đồ). - Continuous integration (CI): - Gatling scripts phong phú thêm các bài test khi áp dụng CI (Jenkins plugins) - Tạo tải tốt: - Có thể tạo tải tối đa tới 20K user cùng một thời điểm (Từ 1 node duy nhất) - Sử dụng ít CPU, RAM, tương thích cao với nhiều OS
  • 15. Hiệu năng - Tạo tải với một thread duy nhất, sử dụng ít tài nguyên - Tool truyền thống 1 user = 1 thread => 1000 user = 1000 thread => Khi thread chờ phản hồi, chúng sẽ đặt vào trạng thái sleep => Dùng nhiều CPU, RAM, giảm hiệu năng test - Sử dụng kiến trúc non-blocking, asynchronous stack (scala, akka, netty) - Mô hình actors - Xử lý kịch bản dưới dạng message bất đồng bộ. - Sử dụng akka library, netty, scala
  • 16. Usability, Maintainability - Hỗ trợ Proxy Recorder - Cho phép sinh các script scala động. Không cần tự viết - Sử dụng ngôn ngữ Scala - Tạo ra đa dạng các bài test dựa trên ngôn ngữ lập trình Scala. - Dễ đọc, dễ hiểu hiểu, dễ chỉnh sửa nâng cấp kịch bản
  • 17. Plugins Có thể tích hợp với nhiều phần mềm thứ 3 - Jenkins, Maven, JMS, v.v
  • 18. Cách sử dụng Gatling - Bước 1: Tạo kịch bản (Gatling Recorder) - Bước 2: Chạy kịch bản (Gatling Test) - Bước 3: Phân tích report (Gatling Report) - Vẫn cần monitor dịch vụ - Bước 4: Đánh giá, thay đổi tải, trở lại bước 2 - Bước 5: Kết luận
  • 19. Các tham số cần lưu ý Phía Gatling: - Phản hồi - Response time - Băng thông, thông lượng - Throughput, Req/s, CCU Phía dịch vụ: - Tài nguyên sử dụng - Cpu, Ram, Bandwidth, Disk IO, Conn
  • 21. Distributed Gatling Để triển khai mô hình - Gatling Frontline (trả phí) - Gatling InfluxDB Grafana
  • 24. Gatling + Influxdb + Grafana
  • 25. Demo Tạo kịch bản Chạy kịch bản Distributed Gatling

Editor's Notes

  1. Cám ơn mọi người đã giành thời gian lắng nghe bài trình bày Sau đây, em sẽ trình bày chủ đề ‘Đánh giá tải với Gatling’
  2. Giời thiệu bản thân: Tên Vị RD, Sản phẩm em đang tập trung phát triển là Portal dịch vụ cloud (cuối thàng release version mới có nhiều tính năng thú vị mong được các anh/chị quan tâm. Emai, github
  3. - Trước khi triển khai 1 hệ thống, 1 dịch vụ từ môi trường lab, môi trường test => product => yêu cầu về cái nhìn tổng quan về hiệu năng của hệ thống là vấn đề quan trọng. Vì ko có gì đảm bảo hệ thống ở môi trường lab hay môi trường test sẽ hoạt động ổn định tại môi trường production. Hay 1 sản phẩm từ môi trường dev tới môi trường thực tế rất khác nhau. Có rất nhiều vấn đề chỉ khi hệ thống có người sử dụng thực hay chạy ở mức tải cao mới xuất hiện. - Hoặc theo case, ticket Khách Hàng Report về Nhân Hòa khi gặp vấn đề về hiệu năng. Và vấn đề thường tập trung vào: - Code không tối ưu - Lựa chọn cấu hình hệ thống không đáp ứng được tải - Tunning, sizing các cấu hình của dịch vụ chưa tốt (OS, Webserver, database, proxy). => Và để ước lượng được tải, để tìm ra được các vấn đề tiềm ẩn bên trong hệ thống, dịch vụ => Chúng ta cần đến kỹ thuật hoặc khái niệm Performnace testing
  4. Mục tiêu của performace testing là ước lượng hiệu năng của hệ thống trước khi triển khai - Khả năng đáp ứng được bao lượt truy cập, độ ổn định khi hoạt động Load testing - Mô phỏng hệ thống khi cao điểm Stress Test - Mô phỏng hệ thống khi quá tải Endurance testing - Mô phỏng hệ thống khi hoạt động trong 1 thời gian dài Volume testing - Mô phỏng hệ thống khi xử lý lượng dữ liệu lớn
  5. Đánh giá hiệu năng - Dự đoán hoặc ước tính các đặc tính hiệu suất của sản phẩm => Đánh giá độ sẵn sàng của sản phẩm Đánh giá cơ sở hạ tầng - Đánh giá sự ổn định, các ngưỡng, phản hồi, hiệu suất - Đánh giá băng thông Tìm các vấn đề ảnh hưởng tới hiệu suất - Thiếu RAM, CPU năng lực không đủ, tốc độ ổ đĩa … => Điều chỉnh hệ thống
  6. Lưu ý: Kỹ thuật này sẽ đánh giá tải toàn bộ hệ thống, bao gồm nhiều thành phần khác nhau (web, db, lb, storage) Cần mô phỏng phân cứng, phần mềm đặc biệt -Dữ liệu: Hệ thống có 1 user khác với hệ có hàng nghìn user Với nhân hòa: Khi Khách hàng sử dụng dịch vụ Nhân Hòa (Cloud), khi có vấn đề hiệu năng reports => Clone hệ thống lên cloud của Nhân Hòa => Benchmarks trên hệ thống clone ko làm gián đoạn dịch vụ.
  7. Dữ liệu chính là yêu tố cốt lõi khi thực hiện Performance test Dữ liệu đến từ đâu: ? Nếu ko có dữ liệu => ko thể ước lượng, kết luận hiệu năng hệ thống Performance tests Mục tiêu cuối: Tìm ra hiệu năng cuối hoặc điểm gây nghẽn
  8. Hạ tầng triển khai đánh giá dịch vụ: Thông thường nghiên cứu hệ thống => Triển khai trên môi trường lab => Rất khó đánh giá hiệu năng Sản phẩm của nhóm phát triển (Nhóm dev) thường chỉ chạy trên môi trường lab nhỏ, hoặc máy tính cá nhân => Triển khai thực tế ko bảo đám hiệu năng Vấn đề chi phí => Không thể lúc nào cũng sẵn sàng phần cứng hạ tầng test. Dữ liệu mô phỏng Hệ thống có 10 - 100 user khác hệ thống có hàng nghìn user, phải có dữ liệu thật mới có thể đánh giá hiệu năng => Với Nhân hòa, khi khách hàng yêu cầu kiểm tra hiệu năng => Migrate dịch vụ họ lên hạ tầng cloud nhân hòa => Benchmark, performace với hạ tầng cloud sẵn có ko gián đoạn dịch vụ khách hàng
  9. Thiết kế kịch bản (mô phỏng người dùng thực vào hệ thống) Việc viết test và bảo trì các bài test Thời gian, nhân lực, chi phí bỏ ra.
  10. Có nhiều công cụ hỗ trợ tại tải test thì tại sao em lại lựa chọn Gatling? Tiêu chí đánh giá công cụ: Đơn giản sử dụng, không phải trả phí Hiệu năng tốt Mã nguồn mở, Dễ tích hợp Thân thiện với developer. Gatling đáp ứng tiêu chí trên
  11. Gatling cung cấp Report rõ ràng, chi tiết, dễ đọc được biểu thị dưới dạng biểu đồ. Ngoài ra, Gatling còn cho phép tích hợp Report với một số phần thứ 3 như Graphite, influxdb, v.v. Ngoài ra, Gatling còn cho phép tích hợp Report với một số phần thứ 3 như Graphite, influxdb, v.v.
  12. Blocking IO là có nghĩa là xử lý đơn luồng. Thông thường một thao tác máy tính chỉ xảy ra khi các thao tác trước đó đã hoàn thành. Một ví dụ điểm hình cho Blocking IO là xử lý hàng đợi, mỗi phần tử khi thêm vào hàng đợi sẽ phải chờ các phần tử trước nó đã thêm thành công thì nó mới được thêm. Viết bằng scala, scala là ngôn ngữ phát triển từ java => Kế thừa được các thư viện tốt nhất. akka library, netty là các thư viện async nổi tiếng của ngôn ngữ java Mô hình Actor Actor có "mailbox" Cơ chế bất động bộ, giả sử gửi 3 tin nhắn tới actor, cả 3 tin nhắn được xử lý đồng thời. Nhưng để xử lý các tin nhắn chúng ta cần khái niệm mailbox. Đơn giản mailbox nhận cả 3 tin nhắn đồng thời nhưng thực hiện từng tin nhắn một => Chính là lý do Gatling có thể tạo ra tải lớn trong một thời điểm. Actor có thể thực hiện (process, communicate, storage) Tạo ra nhiều actor khác Gửi message tới actor khác Phản hổi đối với tin nhắn nhận được Actor giống với user được giải lập, mailbox tức địa chỉ gửi nhận các message hay request người dùng
  13. Jenkins là một phần mềm tự động hóa, mã nguồn mở và viết bằng Java. (CI - tự động lấy code về, tự động build, tự động báo lỗi, tự động deploy.)
  14. Tham số cơ bản khi thực hiện performance test với gatling.
  15. Trong trường hợp: - Chạy gatling từ xa (remote) - Chạy gatling theo cụm (Sử dụng cluster để tạo mức tải cao)
  16. Trong trường hợp: - Chạy gatling từ xa (remote) - Chạy gatling theo cụm (Sử dụng cluster để tạo mức tải cao)
  17. Trong trường hợp: - Chạy gatling từ xa (remote) - Chạy gatling theo cụm (Sử dụng cluster để tạo mức tải cao)
  18. Trong trường hợp: - Chạy gatling từ xa (remote) - Chạy gatling theo cụm (Sử dụng cluster để tạo mức tải cao)
  19. Trong trường hợp: - Chạy gatling từ xa (remote) - Chạy gatling theo cụm (Sử dụng cluster để tạo mức tải cao)
  20. Tạo Apache, bench băng abtool và gatling để thấy sự khác biệt (CPU tại máy client, tải trên node được test) Bước 1: - Hướng dẫn sử dụng gatling đơn giản (quay) - Cần chuẩn bị script được viết lại bằng scala Bước 2: - Chạy kịch bản với scala vừa dùng - Chạy với kịch bản scala đã tốt ưu Bước 3: - Đánh giá Site wordpress = report - Đưa tham số giám sát trên Server => Đưa ra kết luận