κ°μ
μλ° λλ©μΈμ λ΄λΉνμ¬ κ΅¬νμ νμμ§λ§, λ΄κ° λ§λ μλΉμ€κ° λκ·λͺ¨ νκ²½μμ μλ§μ νΈλν½μ κ°λΉν μ μμμ§ μλ¬Έμ΄ λ€μλ€. κ²μ μλΉμ€μμ RDMS μμ μ‘°ννμ§ μλλ€λ κ±Έ μμ§λ§, μλΌμ€ν± μμΉκ°μ κΈ°μ μ€νλ μ λͺ¨λ₯Ό λΏλλ¬ λ°°μ΄ μ§μκ³Ό μ£Όμ΄μ§ νκ²½μμ μ΅μ μ κ²°κ³Όλ₯Ό λμΆνκΈ° μν΄ μΈλ±μ€λ₯Ό μ μ©νμ¬ μλ° μ‘°νλ₯Ό μ€μνμκ³ , μ΄ μΈλ±μ€κ° μ μλνλμ§, μ΄λ μ λ μ±λ₯ ν₯μμ΄ μλμ§ ν μ€νΈ ν΄λ³΄κΈ° μν΄, μνμΉ μ μ΄λ―Έν°λ₯Ό κΉμ μ±λ₯ν μ€νΈλ₯Ό μ§ννκΈ°λ‘ νμλ€.
μ±λ₯ν μ€νΈ λ?
- μλΉμ€ λ° μλΉμ€ μμ€ν μ μ±λ₯μ νμΈνκΈ° μν΄ μ€μ μ¬μ© νκ²½κ³Ό λΉμ·ν νκ²½μμ ν μ€νΈλ₯Ό μ§ννλ κ²μ λ§νλ€.
- μ΄λ₯Ό ν΅ν΄μ Response Time(μλ΅μκ°) κ³Ό Throughput(μ²λ¦¬λ), λ³λͺ©κ΅¬κ° λ±μ νμΈν μ μλ€.
- μ±λ₯ ν μ€νΈλ‘ μ»μ μ λ³΄λ‘ μλΉμ€λ μλΉμ€ μμ€ν μ λ¬Έμ μ μ νμΈνκ³ μ΄λ₯Ό κ°μ νμ¬ λ³΄μν μ μλ€.
Apache JMeter λ?
μΉ μ ν리μΌμ΄μ μ μ€μ¬μΌλ‘ λ€μν μλΉμ€μ μ±λ₯μ λΆμνκ³ μΈ‘μ νκΈ° μν λΆν ν μ€νΈ λκ΅¬λ‘ μ¬μ©ν μ μλ μνμΉ νλ‘μ νΈμ΄λ€.
μΉ μ ν리μΌμ΄μ μ²λΌ ν΄λΌμ΄μΈνΈ-μλ² κ΅¬μ‘°λ‘ λ μννΈμ¨μ΄μ μ±λ₯ ν μ€νΈλ₯Ό μν΄μ λ§λ€μ΄μ§ λ¬΄λ£ μλ° νλ‘κ·Έλ¨μ΄λ€.
JMeterλ λ¨μ/μ±λ₯/μ€νΈλ μ€ ν μ€νΈ λ± λ§μ κ³³μμ νμ©ν μ μλ€.
JMeterλ ν΅μ νλ‘ν μ½ λ¨κ³μμλ§ λμνκ³ μΉ λΈλΌμ°μ μλ λμνμ§ μλλ€. μ¦ , ν΅μ κ·μ½μ λ§λλ‘ ν΄λΌμ΄μΈνΈμ μλ² κ° λ©μμ§λ§ μ‘μμ ν λΏμ΄κ³ ν΄λΌμ΄μΈνΈ μ체μμ νν΄μ§λ μ°μ°λμμ νμ§μλλ€.
Apache JMeter μ€μΉ
μνμΉ μ μ΄λ―Έν° λ€μ΄λ‘λ
https://jmeter.apache.org/download_jmeter.cgi
Apache JMeter - Download Apache JMeter
Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava
jmeter.apache.org
λ¨Όμ μ μ΄λ―Έν°λ₯Ό μ€μΉνκΈ° μν΄μ μλ° 8 μ΄μ λ²μ μ΄ νμνλ€. μ μ΄λ―Έν°λ₯Ό μ°κΈ°μ μλ° 8 μ΄μμ κΉκ³ νκ²½λ³μλ±μ μ€μ ν΄λμ.
λ°μ΄λ리 νμΌμ€ zip νμΌμ λ€μ΄ λ°μ μ€λ€.
κ·Έλ¦¬κ³ μμΆμ ν΄μ μμΌμ€λ€.
JMeter - DBκ΄λ ¨ λꡬ μ€μΉ
1) μ μλλΌμ΄λ² μ€μΉ
Jmeterκ° DBμ μ μνκΈ° μν΄μλ μ μλλΌμ΄λ²κ° νμνλ€. μλ λ§ν¬μ λ€μ΄κ° platform independent λ©λ΄μμ zipνμΌμ λ€μ΄λ‘λ λ°μΌλ©΄ λλ€.
https://dev.mysql.com/downloads/connector/j/
MySQL :: Download Connector/J
MySQL Connector/J is the official JDBC driver for MySQL. MySQL Connector/J 8.0 and higher is compatible with all MySQL versions starting with MySQL 5.7. Additionally, MySQL Connector/J 8.0 and higher supports the new X DevAPI for development with MySQL Ser
dev.mysql.com
λ AWS RDSλ‘ MySQLμ μ¬μ©νκΈ° λλ¬Έμ MySQL 컀λ₯ν°λ₯Ό λ°μ΄ λ°μ μ£Όμλ€.
λͺλͺ DB 컀λ₯ν°λ κΈ°λ³ΈμΌλ‘ μνμΉ μ μ΄λ―Έν°μ κΈ°λ³ΈμΌλ‘ λ΄μ₯λμ΄ μλ€. μλ§ κ°μ μνμΉ μ¬λ¨ μμμΈ κΈ°μ μ€νλ€μ λ€μ΄ μλ κ²μΌλ‘ μκ°λλ€.(μ€λΌν΄ λ±λ±μ΄ μλκ±Έλ‘ λ³΄μ....)
λ€μ΄λ‘λ λ°μ νμΌμ μμΆμ νΌλ€.
.jarνμΌμΈ JDBC λλΌμ΄λ² νμΌμ 볡μ¬ν΄ λ€μ΄λ°μ κ²½λ‘λ‘ λ€μ΄κ° μμΆμ ν΄μ ν μνμΉ μ μ΄λ―Έν° ν΄λμμ libν΄λμ λ£μ΄μ€λ€.
Apache JMeter μ€ν
λ€μ΄λ°μ κ²½λ‘λ‘ λ€μ΄κ° μμΆμ ν΄μ ν μνμΉ μ μ΄λ―Έν° ν΄λμμ bin ν΄λμ λ€μ΄κ° jar νμΌμ λλΈν΄λ¦ν΄ μ€νμν¬ μ μλ€.
λͺ λ Ήμ΄λ‘λ cmd -> μμΆνΌ ν΄λ μλ bin ν΄λλ‘ μ΄λ -> jmeter μ λ ₯ ν μν°
μνμΉ μ μ΄λ―Έν° μ¬μ©λ²
μνμΉ μ μ΄λ―Έν°μμ νκ΅μ΄λ‘ μ΄μ μ§μν΄μ£ΌκΈΈλ νκ΅μ΄λ‘ μ€μ ν΄μ λλ €λ³΄μλ€.
μ€λͺ μ μμ΄λ²μ κ³Ό νκ΅μ΄ λ²μ λ λ€ ν΄λκ² λ€.
λ¨Όμ μ μ΄λ―Έν° ν μ€νΈ μ©μ΄λ€μ΄λ€.
- Thread Group : ν μ€νΈμ μ¬μ©λ μ°λ λ κ·Έλ£Ή, μ°λ λ 1κ°λΉ μ¬μ©μ 1λͺ μΈ κΌ΄μ΄λ€.
- Sampler : μ¬μ©μμ μ‘μ (μ: λ‘κ·ΈμΈ, κ²μλ¬Ό μμ±, κ²μλ¬Ό μ‘°ν λ±)
- Listener : μλ΅μ λ°μ 리ν¬ν , κ²μ¦, κ·Έλν λ± λ€μν μ²λ¦¬
- Configuration : Sampler λλ Listenerκ° μ¬μ©ν μ€μ κ° (μΏ ν€, JDBC 컀λ₯μ λ±)
- Assertion : μλ΅ νμΈ λ°©λ² (μλ΅ μ½λ, λ³Έλ¬Έ λ΄μ© λΉκ΅ λ±)
1) ν νλ¦Ώ μμ±
[ File > Templates ]λ₯Ό ν΄λ¦νκ³ μλ¨ μ λ νΈλ°μ€μμ JDBC Load Testλ₯Ό ν΄λ¦νλ€. create λ²νΌμ λλ¬ μμ±νλ€.
2) Configuration μ€μ
ν μ€νΈν DB μλ² μ°κ²° μ€μ μ νλ€.
κ΄λ ¨μ΅μ μ μλ¬Έμ
https://jmeter.apache.org/usermanual/component_reference.html
Apache JMeter - User's Manual: Component Reference
< Prev Index Next > 18 Introduction¶ Several test elements use JMeter properties to control their behaviour. These properties are normally resolved when the class is loaded. This generally occurs before the test plan starts, so it's not possible to change
jmeter.apache.org
μ°κ²° μ΅λ κ°―μλ μ€μ μ νλ©΄ λλΉ μλ²μ μ΅λλ‘ μ»€λ₯νΈν μ μλ μ°λ λ κ°―μμ΄λ€. 0μΌλ‘ νλ©΄ μ΅λμΉκΉμ§ νμ©νλ€.
λλ¨Έμ§λ κΈ°λ³Έκ° κ·Έλλ‘ λμλ€.
DB μ°κ²° μ€μ μ΄λ€.
μνμΉ μ μ΄λ―Έν°λ ν μ€νΈ νλ μΉ μ΄ν리μΌμ΄μ μλ²μ ν μ€νΈλ₯Ό λ리λ μλ²λ μλ‘ λ¬λΌμΌ νλ€.
JMeterλ₯Ό λ리λ μλ²μ μΉ μ΄ν리μΌμ΄μ μλ²κ° κ°μΌλ©΄ κ°μ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκΈ° λλ¬Έμ μ νν κ°μ μΈ‘μ ν μ μκΈ° λλ¬Έμ΄λ€.
IDE νλ‘μ νΈμ μΌλ―νμΌμμ datasource μ λ―μ΄ μ°κ²°ν λ°μ΄ν°λ² μ΄μ€ URLμ κΈ°μ ν΄μ€λ€.
JDBC λλΌμ΄λ² ν΄λμ€λ κΈ°λ³Έκ°μΌλ‘ postgresql λ‘ μ€μ λμ΄ μλλ°, λ€μ΄λ°μμ lib ν΄λμ λ£μ΄μ€ mysql λλΌμ΄λ²λ₯Ό μ€μ ν΄μ€λ€.
username κ³Ό passwordλ RDSμ username κ³Ό passwordλ₯Ό μ λ ₯ν΄μ€λ€.
λ°λ‘ μλ£ λ²νΌμ μλ€.
3) Thread Group μ€μ
μ°λ λ κ·Έλ£Ήμ λΆνλ₯Ό μ€ μκ³Ό λΉλλ₯Ό μ€μ
μμ°¨νΌ μ μ΄λ―Έν°μ κ½μ΄μ ν΅μ¬μ΄λ€.
μ΄μ€ μ°λ λ κ·Έλ£Ήμ΄ μ μΌ μ€μνλ°, λ΄κ° μ€μ ν΄μ€ λΆνλ‘ RDS μλ²λ‘ 보λ΄κΈ° λλ¬Έμ΄λ€.
- Number of Threads : μ°λ λ κ°μ(μ¬μ©μ μ)
- Ramp-up period : μ°λ λ κ°μλ₯Ό λ§λλλ° μμλλ μκ° / μ¦ ν μ€νΈμ 걸리λ μ΄ μκ°
- Loop Count : infinite λλ n μΌλ‘ κ°μ μ€μ ν μ μμΌλ©° μ€μ λ κ°μ λ°λΌ Number of Threads μ Ramp-up period λ§νΌ μμ²μ λ€μ 보λΈλ€. μ½κ² λ§ν΄ λ°λ³΅ νμμ΄λ€.
μμ κ°μ΄ μ€μ νλ©΄ 10μ μ κ° 30μ΄ μμ λͺ¨λ μ€νν΄μΌ λλ―λ‘, (30/10)μ΄μ ν λ²μ© μ΄ 10κ° μ°λ λκ° DBμ μ°κ²°λλ€. κ·Έλ¦¬κ³ μ΄ μμ μ 2λ² λ°λ³΅νλ€.
4) Sampler μ€μ (JDBC Request μ€μ )
JDBC μμ² μμ± - μ€μ ν μ€νΈν λ‘μ§μ μμ±
μ§μ νμ μ λ³ΈμΈμ΄ ν μ€νΈνκ³ μΆμ νμ μΌλ‘ μ€μ . μλ₯Όλ€μ΄ μ‘°νλ©΄ "Select Statement"
μλμλ μ±λ₯ν μ€νΈν 쿼리문 μμ±
(API μλμμΌ°μλ μ€νλλ 쿼리문μ 볡λΆνμλ€. show-sql: true λ‘ μΌλ―νμΌ μ€μ νλ©΄ 쿼리문μ λ‘κ·Έλ‘ λ³Ό μ μλ€.)
5) Listener μΆκ°
summary report λ± μ¬λ¬ 리μ€λλ€μ μμ²μ±κ³΅μ¬λΆ ν΅κ³λ₯Ό λ΄μ€λ€. DBμ λΆνκ° λ§μ΄ κ±Έλ €μ μμ²μ μ€ν¨νκ² λ κ²½μ°, λλ΅ λͺ 건κΉμ§ μμ²μ΄ μ±κ³΅νλμ§ νμ ν μ μλ€.
3κ°μ§ μ λλ₯Ό λ§μ΄ μ΄λ€.
6) Assertion μΆκ°
μλ΅κ°μ΄ μ λλ‘ μλμ§ κ²μ¦μ νκΈ°μν΄ Assertionμ μΆκ°
μ±λ₯ν μ€νΈ μ€ν
[ νμΌ > μ μ₯ ]μ λλ¬ νμΌμ μ μ₯νκ³ JDBC Requestνλ©΄μ λμ°κ³ μλ¨μ μ΄λ‘μμΌλ‘ λ μμλ²νΌμ λλ¬ μμνλ€.
κ²°κ³Όμμ μ΄λ‘μμ΄ μμ² μ±κ³΅μ΄κ³ λΉ¨κ°μμ΄ μμ² μ€ν¨μ΄λ€.
λ§μ½ μκΉ λ§λ μ€μ λ€μ΄ μ μ©μ΄ μ λλ€λ©΄ μ λ²νΌμ ν΄λ¦ν΄μ€λ€.
ν μ€νΈ κ²°κ³Ό
μμ½ λ³΄κ³ μ μμ
- Label : Sampler λͺ
- # Samples : μν μ€ν μ (Number of Threads X λ°λ³΅μ)
- Average : νκ· μλ΅ μκ° (ms)
- Min : μ΅μκ°
- Max : μ΅λκ°
- Std. Dev. : νμ€νΈμ°¨
- Error % : μ€λ₯ %
- Throughput : λ¨μ μκ°λΉ μ²λ¦¬λ
- Received KB/sec : μ΄λΉ μμ λ°μ΄ν°λ
- Sent KB/sec : μ΄λΉ μ μ‘ λ°μ΄ν°λ
- Avg. Bytes : μλ²λ‘λΆν° λ°μ νκ· λ°μ΄ν° λ°μ΄νΈ μ
κ²°κ³Όλ€μ νΈλ¦¬ 보기 μμ
νλμ 리νμ€νΈμ ν μ€νΈ μμ μκ°, μλ΅ μλ λ± λ€μν μ 보λ€μ΄ λμ¨λ€.
κ²°κ³Όλ€μ ν μ΄λΈλ‘ 보기
View Results Treeλ₯Ό Table νμμΌλ‘ 보μ¬μ€λ€. λ°μ΄ν°λ λμΌλ€.
μ΄ν© λ³΄κ³ μ / μλ΅ Assertion
- Label : Sampler λͺ
- # Samples : μν μ€ν μ (Number of Threads X λ°λ³΅μ)
- Average : νκ· μλ΅ μκ° (ms)
- Median : μλ΅ μκ° μ€μκ°
- 90% Line : 90%μ μνμ ν΄λΉ κ°λ³΄λ€ μ μ μκ° λ΄μ λλκ³ 10%λ λ κ±Έλ¦°λ€. λΌλ λ»μ 컬λΌ
- 95% Line : 95%μ μνμ ν΄λΉ κ°λ³΄λ€ μ μ μκ° λ΄μ λλκ³ 5%λ λ κ±Έλ¦°λ€. λΌλ λ»μ 컬λΌ
- 99% Line : 99%μ μνμ ν΄λΉ κ°λ³΄λ€ μ μ μκ° λ΄μ λλκ³ 1%λ λ κ±Έλ¦°λ€. λΌλ λ»μ 컬λΌ
- Min : μ΅μκ°
- Max : μ΅λκ°
- Std. Dev. : νμ€νΈμ°¨
- Error % : μ€λ₯ %
- Throughput : λ¨μ μκ°λΉ μ²λ¦¬λ
- Received KB/sec : μ΄λΉ μμ λ°μ΄ν°λ
- Sent KB/sec : μ΄λΉ μ μ‘ λ°μ΄ν°λ
- Avg. Bytes : μλ²λ‘λΆν° λ°μ νκ· λ°μ΄ν° λ°μ΄νΈ μ
Aggregate Reportμ μ₯μ μ 90%, 95%, 99% Line 컬λΌμ΄λ€.
μ΄λ κ² μμ°¨νΌ μ μ΄λ―Έν°μ μ€μΉλ²κ³Ό μ¬μ©λ²μ λν΄ μμ보μλ€. λμ¨ κ²°κ³Ό λ€λ‘ μ°λ λ κ·Έλ£Ήμ μμ±λ€μ μλ΄μ£Όμ΄ μνλ νκ²½μ μ€μ μ ν΄λκ³ μ΄λ λ΄ μλ²κ° μ΄λ€ μλ΅κ°μ λμΆνλμ§ λͺ¨λν°λ§ νλ©΄λλ€.
νμλ μΆκ°μ μΌλ‘ AWS CloudWatch κΉμ§ κ°μ΄ 보면μ μλ² CPU μ¬μ©λ, 컀λ₯μ μμ κ°μ© λ©λͺ¨λ¦¬λ λ³νκΉμ§ λͺ¨λν°λ§ ν΄λ³΄μλ€.
μ§μλ¬Έμ λ°κΏκ°λ©° ν μ€νΈλ₯Ό κ³μ μ§νν΄λ³΄κ³ μ΅μ μ κ²°κ³Όκ° λμ¨ λ°©ν₯μ μ ννλ©΄ λ κ²μ΄λ€.
λ€μμ μΈλ±μ€λ₯Ό νμ©νμ¬ μλ°μ‘°νλ₯Ό νμ μ κ·Έλ₯ μ‘°ννλ κ²λ³΄λ€ μ΄λμ λμ μ±λ₯ μ°¨μ΄κ° μλμ§ ν μ€νΈλ₯Ό μ§νν΄ λ³Ό κ²μ΄λ€.
μ°Έκ³
- μΈνλ°/ λ°±κΈ°μ - λ μλ° μ ν리μΌμ΄μ μ ν μ€νΈνλ λ€μν λ°©λ²
- https://jocoma.tistory.com/entry/%EC%84%B1%EB%8A%A5%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EA%B5%AC-Jmeter#recentComments
'Testing' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ° μ‘°ν κΈ°λ₯ - μΈλ±μ€ μ μ© λ° μ±λ₯ν μ€νΈ νΈλ¬λΈ μν , ν μ€νΈ κ²°κ³Ό (0) | 2024.01.11 |
---|
λκΈ