저는 회사에서 웹 애플리케이션(PHP + MariaDB)을 실행하고 노트북에서 개발하고 전용 서버에서 프로덕션 버전을 실행하고 있습니다.
최근에 성능을 측정하기 시작했는데 랩톱이 서버보다 성능이 더 좋다는 것을 알게 되었습니다. 예를 들어 페이지 중 하나가 내 노트북에서는 ~50ms 내에 생성되지만 서버에서는 ~130ms 내에 생성됩니다. 이 시간은 microtime()을 사용하여 PHP 코드에서 측정되므로 서버에 대한 네트워크 요청 지연은 무시됩니다.
문제는 서버가 모든 단일 지점에서 내 노트북보다 더 나은 성능을 발휘해야 한다는 것입니다. 이 애플리케이션에서는 130ms가 괜찮으므로 이 사실을 전혀 눈치 채지 못했습니다. 그러나 가능하다면 이것이 원인이 무엇인지 이해하고 싶습니다.
다음 단계는 코드의 여러 지점에서 시간을 측정하는 것 같지만 그 차이가 너무 중요해서(> x2.5) 뭔가 빠졌다고 생각하지 않을 수 없습니다.
다음은 몇 가지 세부정보입니다.
CPU
- 랩탑: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
- 섬기는 사람: Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz
램
- 랩탑: 16GB DDR3 @ 1600MHz
- 섬기는 사람: 32GB DDR4 @ 2400MHz
운영체제
둘 다 Debian 9를 실행하고 있으므로 동일한 버전의 Apache2, PHP, MariaDB를 실행하고 있으며 어느 정도 동일한 방식으로 구성해야 합니다.
마리아DB
서버에서는 12개 인스턴스로 분할된 InnoDB 풀 크기에 24GB RAM을 사용하도록 구성됩니다(모든 테이블은 InnoDB를 사용함). 현재는 4.5GB의 RAM만 사용하므로 디스크 액세스는 문제가 되지 않습니다.
또 뭐야?
- 스왑 사용량이 null입니다.
- CPU는 대부분의 시간 동안 유휴 상태입니다.
- 특히, 다른 사람이 애플리케이션을 사용하지 않는 순간에 측정이 이루어졌습니다.
- 서버는 특히 낮은 CPU 사용량을 고려할 때 성능에 영향을 주지 않아야 하는 다른 서비스(예: git, 기타 웹 애플리케이션)를 실행하고 있습니다.