테스트 환경:

  • AWS c6i.2xlarge (8코어 CPU, 16GB RAM)
  • Ubuntu 22.04 LTS
  • nginx 1.18.0
  • PHP 7.4.33 그리고 8.3.1
  • MariaDB 10.6.12

 

테스트 대상: 각 버전대의 최종 버전

  • XE 1.11.6
  • Rhymix 1.9.9.9
  • Rhymix 2.0.24
  • Rhymix 2.1.12

 

테스트 방법:

  • 각 CMS 순정 설치 및 서버 최적화 후, siege를 사용하여 메인 화면 16,000회 반복 요청
  • 각 5회 반복 후, 가장 높은 Transaction rate를 기록
  • 명령: siege -c 16 -r 1000 --no-parser http://127.0.0.1/경로/

 

테스트 환경의 일관성 유지를 위한 설정:

  • AWS의 열악한 디스크 성능에 영향을 받지 않도록, 세션 저장소는 램디스크(tmpfs) 사용
  • PHP opcache 및 apc (apcu / apcu-bc) 캐시 용량은 256M로 넉넉하게 설정
  • XE, 라이믹스 모두 apc 캐시 방식 적용 (XE는 이걸 쓰든 말든 성능 차이가 없긴 합니다;;;)
  • 라이믹스는 스크립트 압축 및 디버그 기능 해제 (XE에 없는 기능 중 그나마 끄기 쉬운 것이므로)
  • 모든 버전에서 짧은주소 OFF, 레이아웃은 XEDITION 사용

 

테스트 결과:

 

CMS PHP 점수
XE 1.11.6 7.4.33 1042.35
8.3.1 에러
Rhymix 1.9.9.9 7.4.33 1331.11
8.3.1 에러
Rhymix 2.0.24 7.4.33 1245.14
8.3.1 1353.64
Rhymix 2.1.12 7.4.33 1253.92
8.3.1 1380.50

 

benchmark-202401.png

 

해석:

  • 설치 직후 메인 화면에는 복잡한 DB 쿼리가 없으므로, 거의 순수하게 PHP의 속도와 CMS 코어의 속도를 측정하게 됩니다. 쿼리가 많은 게시판이나 관리자 화면 등을 벤치마킹한다면 결과가 달라질 수 있습니다.
  • 라이믹스 각 버전과 XE에서 기본 제공하는 XEDITION 레이아웃의 메인 화면 구성이 100% 똑같지는 않습니다.
  • 코어를 개조하거나 서드파티 모듈을 사용해서 성능을 비약적으로 개선하는 방법이 있을 수 있지만, 위에 언급한 최소한의 설정 외에는 모두 순정 상태로 비교했습니다.
  • 위의 내용을 감안하고 볼 때, 모든 버전의 라이믹스는 XE보다 눈에 띄게 빠릅니다.
  • 라이믹스 2.0에서 라우터, 새로운 DB 클래스 등 많은 기능이 추가되고, PHP 8.x 호환성 확보와 보완취약점 제거를 위해 코드 구조가 복잡해지면서 1.9보다 6~7% 무거워졌습니다. 꾸준한 최적화로 2.1에서는 다시 가벼워지고 있습니다.
  • PHP 8.3은 PHP 7.4보다 9~10% 더 빠릅니다. 라이믹스 버전별로 들쭉날쭉하는 성능보다 이 차이가 더 크기 때문에, 현재 가장 빠른 조합은 PHP 8.3 + 라이믹스 2.1입니다. 가장 느린 XE보다 32% 더 높은 성능을 보여 줍니다.
  • PHP 8.3의 성능 개선 효과는 라이믹스 2.0보다 2.1이 더 높습니다. 최신 PHP에 대응하는 패치가 더 많이 적용되었기 때문일 것입니다. (Warning이나 Notice가 발생하는 것만으로도 약간의 성능 저하가 일어나고, 변수 타입을 엄격하게 지킬수록 인터프리터가 더 효율적으로 돌아간다고 합니다.)

 

기진곰

profile
GitHub @kijin 사람을 위한 인터넷 생태계의 발전에 많은 관심을 갖고 있습니다.
우리가 만들어 가는 XE의 새 이름, 라이믹스(Rhymix) 프로젝트에 참여하고 있습니다.
오픈소스 도로명주소 검색서버 및 API Postcodify를 개발, 운영중입니다.
국내외 서버 및 클라우드서버 세팅, 이전, 튜닝해 드립니다.
  • Lv2

    7.4.33하고 8.3 비교하니 성능 개선이 엄청 나더라고요.
    그누보드나 다른걸 돌려봐도 클릭만으로도 체감이 될 정도로 차이가 나네요.

  • ? Lv8

    php8 로 넘어가기 위한 진입장벽이 높다는게 함정이지만 ^^;;;
    특히 예전 서드파티 자료를 많이 쓰는 경우는.. 전체적인 업데이트 작업 의뢰를 해야할 수도 있죠..

  • ? Lv8 Lv36

    향후 몇 년간 기존 자료 업데이트 의뢰 많이 받으셔야 할 것 같습니다. ㅎㅎ

     

    stdClass 선언, count 관련된 타입 에러 등 대부분은 뻔한 패턴이라,

    일단 익숙해지고 나면 그냥 뭐 튀어나올 때마다 때려 주는 두더지게임이 될 뿐이더군요.

  • ?
    빠르고 좋습니다. 8.3.1_Rhymix 2.1.12
  • Lv4
    오.. 정말 궁금한 테스트내용이였는데 기진곰님께서 직접해주시니 신뢰가 팍팍됩니다 ㅎㅎ
    라이믹스의경우 jit으로의 성능향상이 거의 없는걸까요?? php8에서 큰 변화가 jit이라고 들어서 궁금합니다!
  • Lv4 Lv36

    네, 거의 차이가 없더군요. JIT을 켜든 끄든 오차범위 내에서 엎치락뒤치락합니다.

    JIT은 짧게 반복되는 루프에서 이론적으로 큰 효과가 있는데, 라이믹스는 1+N 패턴을 무척 경계하는 코딩 스타일을 고집하므로 그런 코드가 많이 나오지 않습니다. 예를 들어 워드프레스 플러그인이 post 불러오는 곳에 hook를 걸어 놓으면 똑같은 함수가 수백~수천 번씩 호출되기도 하지만, 라이믹스에서 게시판 목록 불러오는 트리거는 목록 전체를 한 번에 넘깁니다. (아이템샵처럼 글 하나하나 다 뒤집어 보는 서드파티 자료가 있긴 합니다만...) 오히려 라이믹스는 실행 시간의 상당 부분을 정규식 처리에 할애하는데, 정규식(PCRE) 라이브러리는 이미 극단적으로 최적화되어 있기 때문에 버전에 따른 성능 개선의 폭이 크지 않은 것 같아요.

    참고로 JIT 덕을 많이 본다고 하는 워드프레스 6.4.2 메인화면 점수 147.47 나왔습니다. 네, 소수점 잘못 찍은 것 아닙니다. 동일한 서버 구성, PHP 8.3에서 추가 플러그인 없이 테스트한 결과입니다. ㅎㅎ

  • Lv36 Lv4
    오 그렇군요. 감사합니다 ㅎㅎ
    그래도 유의미한 차이가 나고 언제까지고 7버전을 사용할 수 없으니 업데이트를 준비해봐야겠습니다.
    항상 감사드립니다 :)
  • Lv12
    라이믹스가 참 좋은데.... 참 좋은데....
  • Lv5
    오래된 서드파티 자료때문에 엄두가 안나는 버전업이네요 ㅠ
  • Lv11

    8버전탐난다ㅜㅜ 에러다고치다가 자꾸나와서
    구입한 게시판 스킨에러는 도저히 안잡혀서 롤백해버렸네요

  • Lv11 Lv36

    자꾸 이렇게 하입을 띄워 줘야 사용자들 먼저 업그레이드 욕구가 생기고,
    판매자분들에게 패치하라고 압력(?)을 행사할 수 있겠지요. ㅎㅎ

  • Lv36 Lv11
    그때를 회상해보면 다른건 2 3일에 거쳐서 거의 다 고쳤는데
    구입한 게시판만 안고쳐져서 문의 했는데 지원 계획도 없다고 하시고
    한달 있다가는 해당 게시판이 단종되어버렸기도하고

    진짜 페이지 페이지마다 들어가면 자꾸 두더지 잡기마냥 나와서 고치고고치고 했던 기억이 있네요.
    서브 도메인 하나따서 새서버에서 한번 더 테스트 해봐야겠어요.

    급히 땡겨서 다시 도전해봅니다. ㅎㅎ
  • ? Lv8
    결국에 가야하겠지만 쉽지만은 않겠네요.ㅠ.ㅠ 일반사용자들은.
  • Lv11

    근데 짧은주소 OFF 와 ON 의 속도차이가 유의미 할까요?

    속도가 늦더라도 짧은주소 OFF는 못하겠네요 ㅎㅎ

  • Lv2
    궁금했던 부분인데, 좋은 벤치마크 자료 감사합니다.

    (쿨럭쿨럭) 시간 여유되면 라이믹스의 MariaDB versus MySQL 테스트 부탁드립니다.
  • Lv3

    x.jpg

    큭..제가 쓰는 호스팅은 8.3은 선택도 못하네요..