"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL 튜닝이 Laravel 성능을 향상시키는 방법

MySQL 튜닝이 Laravel 성능을 향상시키는 방법

2024-07-30에 게시됨
검색:971

MySQL 구성 튜닝은 데이터베이스 전문가와 관리자가 구현하는 데이터베이스 관리의 중요한 구성 요소입니다. 하드웨어와 워크로드에 맞게 데이터베이스를 구성하는 것을 목표로 합니다. 그러나 데이터베이스 관리 영역을 넘어서는 MySQL 구성 튜닝의 유용성은 대부분 무시됩니다.

우리는 MySQL 튜닝이 웹 앱 성능에 큰 영향을 미칠 수 있다고 가정합니다. MySQL 튜닝의 가치를 보여줄 수 있다면 기업과 조직은 이 관행을 더 큰 규모로 통합하고 싶어할 것이라고 믿습니다.

Laravel 애플리케이션 성능을 향상시키는 방법

조정을 통한 애플리케이션 성능 향상은 다음 영역을 다루는 포괄적인 접근 방식을 통해 가장 잘 달성됩니다.

  • 서버 리소스 – CPU, 메모리, 스토리지
  • 소프트웨어 구성 – Linux, Nginx, Php...
  • 데이터베이스 관리 시스템(DBMS) 구성 – MySQL, PostgreSQL
  • 데이터베이스 구성 최적화 및 인덱스 변경
  • 애플리케이션 최적화 – 코드, 쿼리, 아키텍처...

경험이 풍부한 많은 개발자는 데이터베이스 성능 튜닝을 앱 성능을 향상할 수 있는 기회로 여기지 않습니다. 왜냐하면 이 영역에 대해 거의 알지 못하기 때문입니다. 그들은 코드베이스를 최적화하는 데 많은 시간을 소비하지만, 투자한 시간과 에너지에 비해 더 이상 가치 있는 결과를 가져오지 못하는 지점에 도달합니다. MySQL 튜닝이 인기 있는 오픈 소스 웹 애플리케이션의 성능에 어떻게 긍정적인 영향을 미치는지에 대한 우리의 연구는 이 사실을 개발자에게 보여주는 것을 목표로 합니다.

테스트 접근법

Laravel Aimeos에 대한 테스트 절차를 통해 시드된 데이터를 사용하여 구성 전과 후의 앱 성능을 비교할 수 있습니다. 먼저 기본 구성으로 테스트를 실행하면 조정된 구성과 비교할 수 있는 귀중한 제어 결과를 얻을 수 있습니다.

우리는 다음 프로세스를 사용하여 각 애플리케이션을 준비하고 테스트했습니다.

  1. Laravel Aimeos를 배포합니다.
  2. 데이터가 포함된 시드 데이터베이스.
  3. JMeter에 대한 테스트를 준비합니다.
  4. 10분 동안 테스트 실행 – Blazemeter 성능 테스트 플랫폼을 사용하여 JMeter 테스트를 실행했습니다.
  5. MariaDB 구성 조정 – 기본 구성 테스트 후 설정은 동일하게 유지되었지만 MariaDB는 작업 부하, 서버 리소스 및 데이터베이스 크기에 맞게 조정되었습니다.
  6. 재실행 테스트 – 조정된 구성을 위해 Blazemeter를 사용하여 JMeter 테스트를 반복했습니다.

Github에서 테스트하는 동안 JMeter 테스트, MySQL 상태 및 MySQL 변수를 게시했습니다.

우리가 살펴본 지표는 무엇입니까?

이 연구에서 살펴본 측정항목은 다음과 같습니다.

  1. 응답 시간(대기 시간)은 요청을 보내고 서버 측에서 처리하는 시간부터 클라이언트가 첫 번째 바이트를 받는 시간까지의 시간입니다. 서버 성능에 대한 통찰력을 제공하는 중요한 지표입니다.
  2. 초당 쿼리 수는 데이터베이스 서버가 초당 실행하는 쿼리 수를 측정하는 측정항목입니다.
  3. CPU 사용률.

CPU 사용률초당 쿼리 수 지표를 수집하여 작업 부하를 비교했습니다.

라라벨 아이메오스

Aimeos Laravel은 온라인 상점, 마켓플레이스 및 B2B 앱을 만들기 위한 인기 있는 전자 상거래 웹 앱 프레임워크입니다. Aimeos를 사용하면 사용자는 10억 개 이상의 항목을 지원하도록 확장할 수 있는 Laravel용 API 우선 전자상거래 상점을 만들 수 있습니다. 30개 이상의 언어로 제공되며 300,000회 이상 설치되었습니다.

테스트 설정

Aimeos를 테스트하기 위해 10명의 사용자로 테스트를 시작했는데 기본 구성으로는 테스트를 완료할 수 없어 사용자 수를 줄여야 했습니다.

우리는 500Mb 데이터로 데이터베이스를 시드했습니다.
테스트 시간은 10분이었습니다.

우리는 사용했었다:

  • 운영 체제로 Debian 11이 설치된 AWS EC2 인스턴스 c5.xlarge,
  • 웹 서버로서의 Apache,
  • MariaDB 10.5가 데이터베이스 크기가 500MB인 기본 구성으로 설정되었습니다.

MySQL 구성

Aimeos Laravel에 사용되는 구성은 다음과 같습니다.

Laravel Aimeos 500Mb에 대한 조정된 구성

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

테스트 결과

Aimeos Laravel 테스트 결과는 기본 구성과 조정된 구성 사이에서 극적인 성능 향상을 보여주었습니다.

MySQL 최적화로 인해 평균 서버 응답 시간이 크게 향상되어 1.4초에서 800밀리초 미만으로 감소되었습니다.

응답 시간(지연 시간)은 42% 감소했으며 평균 CPU 사용률은 86%, 초당 쿼리 수는 놀라운 291% 증가했습니다. 초당 쿼리 12~35개.

결과 그래프는 아래에서 확인할 수 있습니다.

How MySQL Tuning Improves the Laravel Performance응답 시간(ms), Aimeos Tuned MySQL 구성과 기본값 비교
How MySQL Tuning Improves the Laravel PerformanceCPU 사용률(%), Aimeos Tuned MySQL 구성과 기본값 비교
How MySQL Tuning Improves the Laravel Performance초당 쿼리 수, Aimeos Tuned MySQL 구성과 기본값 비교

커뮤니티 기여자

우리는 Initlab 회사의 Laravel 개발자 Gevorg Mkrtchyan 및 Sergey Sinitsa와 협력하여 이러한 질문을 조사했으며 그들의 전문 지식에 매우 감사드립니다.
Sergey는 Aimeos를 배포했고 Gevorg는 데이터베이스 시드용 코드를 준비했습니다.

결론

Aimeos Laravel을 사용한 테스트 절차에서는 데이터베이스 구성 후 응답 시간(대기 시간), CPU 사용률, 초당 쿼리 수가 크게 향상되었습니다. 서버 구성.

응답 시간(지연 시간)은 42% 사이로 감소했고, CPU 사용률은 86% 감소했습니다. 초당 쿼리 수 Aimeos Laravel 500MB에서 291% 증가했습니다.

결론적으로 MySQL 튜닝은 Laravel 애플리케이션의 성능에 상당한 영향을 미칠 수 있는 데이터베이스 관리의 필수적인 측면입니다. 성능이 좋지 않은 웹 애플리케이션은 페이지 로드 시간 증가, 요청 처리 속도 저하, 사용자 경험 저하로 이어질 수 있으며, 이는 SEO 및 판매에 부정적인 영향을 미칠 수 있습니다. MySQL 튜닝으로 웹 앱 성능을 최적화함으로써 기업과 조직은 매출, 페이지 조회수, 전환율 및 SEO 순위를 높일 수 있습니다.

이 연구를 통해 우리는 Laravel 애플리케이션의 성능을 향상시키는 수단으로 MySQL 튜닝의 가치를 보여주고 Laravel 개발자가 앱 성능을 최적화할 때 이러한 방식을 고려하도록 장려하기를 희망합니다.

Releem과 같은 도구를 사용하면 데이터베이스가 최적의 성능을 위해 자동으로 구성되어 소프트웨어 개발 팀의 부담을 줄일 수 있습니다.

릴리스 선언문 이 글은 https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3