![MySQL/웹 서버 병목 현상](https://rvso.com/image/768936/MySQL%2F%EC%9B%B9%20%EC%84%9C%EB%B2%84%20%EB%B3%91%EB%AA%A9%20%ED%98%84%EC%83%81.png)
MySQL/웹 서버 병목 현상을 확인하려고 합니다.
서버가 3개 있습니다. Nginx를 실행하는 웹 서버, 내 Wordpress DB가 있는 원격 MySQL 서버, 그리고 데이터를 저장하는 또 다른 원격 MySQL 서버입니다.
제가 찾으려고 하는 병목 현상은 데이터를 저장하는 두 번째 MySQL 서버와 웹 서버 사이에서 발생합니다. 세 개의 DataTable(세 개의 별도 쿼리)이 있는 페이지가 있습니다. 모든 작업이 수행되면 매우 느리게 로드됩니다. 가끔 게이트웨이 시간 초과 오류가 발생합니다.
쿼리 자체가 문제라고는 생각하지 않습니다. DataGrip에서 세 가지 모두 평균 200~500ms 사이입니다. 플러그인이 색인을 활용할 수 없다는 말을 들었기 때문에 현재 쿼리는 색인화되지 않았지만 어쨌든 시도해 볼 수 있습니다.
하드웨어 및 설정:
내 MySQL 서버는 AWS R6G.Large, 2코어 및 16GB RAM, 150 IOPS의 SSD 및 128MB 처리량입니다. innodb_page_size는 32, buffer_pool_size는 11000M, innodb_buffer_pool_instances는 10, innodb_log_file_size는 1G입니다. 웹 서버는 AWS C6G.Xlarge, 4코어 및 8GB RAM, 150 IOPS의 SSD 및 128MB 처리량입니다. FPM과 Opcache를 사용합니다.
두 서버 모두 TOP를 사용하여 모니터링을 시도했지만, 솔직히 정보를 제대로 활용할 수 있는 지식이 있는지 잘 모르겠습니다.
하드웨어인지 소프트웨어인지 확인하고 싶은데, 하드웨어인지 구분할 수 있는 방법이 있나요? 그것이 실제로 문제라면 하드웨어를 늘리는 데 아무런 문제가 없습니다.
이것이 Stack/ServerFault에서 허용되는지는 잘 모르겠지만 두 서버에서 TOP를 실행하여 화면을 기록하면 무슨 일이 일어나고 있는지 더 쉽게 알 수 있을 것 같습니다. 내 공개 Google 드라이브에 동영상을 추가했습니다. 비디오에는 내 MySQL 서버(상단)와 웹 서버(하단의 Nginx)가 모두 있습니다. 내가 한 일은 페이지를 로드하고(영상에서는 3초 표시) 결과를 기록하는 것이었습니다. 영상은 1:05인데 마지막 테이블이 나올 때까지 걸린 시간입니다. 내 사이트가 유지 관리되는 동안 비디오가 녹화되었으므로 다른 IP/트래픽이 두 서버에 도달할 수 없습니다.
내 구글 드라이브 링크:
https://drive.google.com/drive/folders/1NtdE1Z4875i1Xx2Wy2EXGgknt9yuY1IN?usp=sharing
누군가가 도울 수 있기를 바랍니다.
에이미