반응형

Apache Bench(아파치 벤치마크) SSL 가능하게 컴파일 하기

ab로 HTTPS를 테스트할 수 없을 때 — "SSL not compiled in; no https support"

핵심 요약

  • 증상ab https://주소 를 치면 SSL not compiled in; no https support 메시지
  • 원인 — 기본으로 컴파일된 ab는 SSL을 지원하지 않음
  • 함정--with-ssl아파치가 SSL 서비스를 하기 위한 옵션이지, ab가 SSL을 테스트하기 위한 옵션이 아님
  • 조치 — configure 옵션에 --enable-ssl을 추가해서 다시 컴파일

일반적으로 이렇게 하면

ab https://yourdomain.com

이런 메시지를 만나게 됩니다.

SSL not compiled in; no https support

그래서 열심히 뒤졌습니다 ^^;;

기본적으로 컴파일된 ab는 SSL을 지원하지 못한다고 되어있더라구용.

그럼 어떻게 컴파일해야 되는지를 조사하게 되었습니다.

보통은 이렇게 컴파일합니다

SSL을 컴파일할 때 기본적으로 아래와 비슷한 컴파일 옵션을 줄 겁니다.

./configure --with-ssl --with-mpm=prefork \
            --prefix=/home/ase/non/install --with-mods-shared=most

이렇게 하면 아파치로 SSL 서비스를 할 수 있지만, ab로 SSL 테스트는 진행할 수 없습니다.

--enable-ssl 을 추가해야 합니다

./configure --with-ssl --enable-ssl --with-mpm=prefork \
            --prefix=/home/ase/non/install --with-mods-shared=most

컴파일하실 때 옵션을 위와 같이 주시면 SSL 테스트가 가능한 ab가 컴파일됩니다.

여기서 중요한 것은 --enable-ssl 을 추가해 주는 것입니다.

아파치 configure의 도움말을 보면 요렇게 되어 있답니다.

--enable-ssl            SSL/TLS support (mod_ssl)

이제 다시 해보니깐

./ab https://yourdomain.com

일반적으로 http에서 내보내는 메시지와 동일한 값을 보여 주네용 ^^;;

모두들 좋은 하루 되십시오.


참고로 제가 테스트해 본 아파치 소스는 apache 2.2.13 입니다.

그리고 잘 아시겠지만 혹시나 해서용, yourdomain.com 은 그냥 제가 문서 적을 때 적는 겁니다. 자기 자신의 도메인이나 테스트하려고 하는 적당한 도메인으로 변경하십시오 ^^;;

앗 출처... 제가 참조한 곳은 아래 주소입니다.

이 글은 스프링노트에서 작성되었습니다.


추기 — 이 ab로 5일 뒤에 진짜 문제를 잡았습니다 (2026년)

이 글은 2009년 9월에 쓴 글입니다.

이때 ab를 SSL 되게 만들어 놓은 덕분에, 5일 뒤에 SSL 이미지 서버가 5분마다 느려지던 문제를 잡을 수 있었습니다.

👉 Apache SSL에서 주기적으로 속도가 느리다면

돌아보면 순서가 이랬네요 ^^

측정 도구가 안 됨 → 도구를 되게 만듦 → 측정 → 진단 → 해결 → 재검증

성능 테스트에서는 이 첫 단계에서 막히는 경우가 생각보다 많습니다. 부하를 걸기도 전에, 부하를 걸 도구부터 손봐야 하는 상황이요.

그런데 이건 그냥 귀찮은 잡일이 아닙니다. 측정 도구가 대상과 같은 조건(여기서는 HTTPS)을 못 만들면, 측정 자체가 성립하지 않습니다.

http로 재고 https 서비스를 판단할 수는 없으니까요. 핸드셰이크 비용도, 암호화 비용도 다 빠진 숫자가 나옵니다.

지금 기준으로 두 가지

요즘은 배포판 패키지의 ab에 SSL이 이미 들어 있는 경우가 많습니다. 소스를 직접 컴파일할 일이 그때보다 훨씬 줄었죠. 빠른 확인 정도라면 wrkk6 같은 도구가 더 편하기도 하구요.

다만 --with-ssl(서비스용)과 --enable-ssl(도구용)을 구분해야 한다는 감각은 지금도 그대로 유효합니다. 서버에 SSL을 붙이는 것과 테스트 도구에 SSL을 붙이는 것은 다른 일입니다. 이름이 비슷해서 같은 걸로 착각하기 쉬운데, 실제로는 각각 따로 챙겨야 합니다.

이 구분을 놓쳐서 하루를 날린 게 2009년의 저였고 ^^;; 지금도 비슷한 함정은 도구를 바꿔 가며 계속 나옵니다.

정정

본문에 테스트 환경을 apache 2.1.13이라고 적었는데, 2.2.13의 오기로 보입니다. 2.1.x는 2.2로 가는 개발 브랜치라 그 번호의 정식 릴리스가 없고, 2.2.13이 2009년 8월 6일에 나왔으니 시점도 맞습니다. 본문은 2.2.13으로 고쳐 두었습니다.

반응형

+ Recent posts