mysql ERROR 1040 (HY000) Too many connections
π¬ Intro
μ¬μ΄λ νλ‘μ νΈ μ€ λ°μν mysql ERROR 1040 (HY000) Too many connections μλ¬μ λν΄ μμλ³΄κ² μ΅λλ€.
β max_connections
MySQL μλ²λ λμμ μ²λ¦¬ν μ μλ μ΅λ μ°κ²° μλ₯Ό μ€μ μΌλ‘ κ΄λ¦¬ν©λλ€. μ΄ μ€μ κ°μ max_connectionsλΌλ λ§€κ°λ³μλ‘ μ μ΄λλ©°, κΈ°λ³Έμ μΌλ‘ 151λ‘ μ€μ λμ΄ μμ΅λλ€. μ¦, MySQL μλ²λ κΈ°λ³Έ μ€μ μμλ μ΅λ 151κ°μ μ°κ²°λ§ λμμ νμ©ν©λλ€.
β mysql ERROR 1040 (HY000): Too many connections
MySQLμ ERROR 1040 (HY000): Too many connections μλ¬λ 컀λ₯μ μ μκ° max_connections κ°μ μ΄κ³Όνμλ λ°μνλ μ€λ₯ μ λλ€.
- μ ν리μΌμ΄μ μλ²μμ λ€μμ μ¬μ©μκ° μ μνμ¬ λ°μ΄ν°λ² μ΄μ€μ μ°κ²°ν λ
- λ°μ΄ν°λ² μ΄μ€μ λν λλμ 쿼리λ₯Ό λμμ μ²λ¦¬ν λ
- λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ΄ μ λλ‘ μ’ λ£λμ§ μκ³ κ³μ μ΄λ¦° μνλ‘ μ μ§λ λ(컀λ₯μ λμ)
μ£Όλ‘ μ΄ 3κ°μ§ μν©μμ λ°μνκ² λ©λλ€.
β λ¬Έμ
νμ¬ μ¬μ΄λνλ‘μ νΈλ @CommandLineRunner
μ flywayλ₯Ό ν΅ν΄ νλ‘μ νΈμ νμν μ΄κΈ° λ°μ΄ν°λ₯Ό μΈμνΈνκ³ μμ΅λλ€. λ°λΌμ λΉλ λ¨κ³μμ λ€μμ DB 컀λ₯μ
μ΄ λ°μνκ² λ©λλ€.
1
show status like 'Max_used_connections';
- RDS(mysql)μ μ΅λλ‘ μ¬μ©λ 컀λ₯μ μ΄ 263μΌλ‘ μ‘°νλ©λλ€.
- νμ§λ§ mysqlμ κ²½μ° max_connectionsμ΄ 151μ΄ λν΄νΈλ‘ μ€μ λμ΄ μμ΅λλ€.
1 2
# max_connections μ‘°ν λͺ λ Ήμ΄ show variables like 'max_connections';
- λ°λΌμ 컀λ₯μ
μ΄ 151μ΄ μ΄κ³Όν κ²½μ°
mysql ERROR 1040 (HY000) Too many connections
κ° λ°μνκ² λ©λλ€.
β ν΄κ²°λ°©λ²
max_connections
λ₯Ό μ μ νκ² μ€μ νλ©΄ λ©λλ€.
1
2
# max_connections μ€μ λͺ
λ Ήμ΄
set global max_connections=500;
μ€μ κ° μ ν κΈ°μ€μ Prometheus + Grafanaμ κ°μ λͺ¨λν°λ§ λꡬλ₯Ό ν΅ν΄μ Max Used Connectionsμ 체ν¬ν μ μμ΅λλ€. λν μ€νλ§ λΆνΈμ
spring.datasource.hikari.maximum-pool-size
λ³΄λ€ ν° κ°μΌλ‘ μ€μ ν΄μΌ ν©λλ€. ν΄λΉ μ΅μ
μ μ€νλ§ λΆνΈ μ΄ν리μΌμ΄μ
μμ dbμ λμμ 컀λ₯μ
ν μ μλ κ°μ μλ―Έν©λλ€. νμ§λ§ μ£Όμ ν μ μ max_connections κ°μ λμ΄λ©΄ κ·Έλ§νΌ λ©λͺ¨λ¦¬λ₯Ό λ λ§μ΄ ν λΉνκ² λ©λλ€. μλ² λ©λͺ¨λ¦¬κ° λΆμ‘±ν΄μ§λ©΄ swapμ΄ λ°μνκ² λλλ° μ΄λ λ°μ΄ν°λ₯Ό νλ λμ€ν¬μ μ μ₯νκ² λ©λλ€. μΌλ° μ μΌλ‘ νλ λμ€ν¬λ RAMλ³΄λ€ ν¨μ¬ λ리기 λλ¬Έμ, λ°μ΄ν° μ²λ¦¬λ₯Ό νλ λμ€ν¬μ λ§‘κΈ°λ©΄ μλκ° ν¬κ² λ¨μ΄μ§κ³ κ·Έ κ²°κ³Ό DBμ μ±λ₯λ λλ €μ§κ² λ©λλ€. λ°λΌμ max_connectionsκ°μ μ μ νκ² μ‘°μ ν νμκ° μμ΅λλ€.