아파치 서버 확장

아파치 서버 확장

제한된 시간 동안 약 500-1000명의 (동시) 사용자가 접속할 것으로 예상되는 apache2를 실행하는 Ubuntu 서버가 있습니다. 서버는 postgresql db(약 20Mb 크기)에 연결된 사용자 정의(다소 가벼운) PHP 페이지와 정적 콘텐츠를 혼합하여 제공합니다. 하드웨어는 안정적이고 매우 강력합니다.

  • 인텔 제온 E5420 @ 2.5GHz
  • 12GB RAM

이전에 이 서버를 급하게 사용하는 동안 MPM 모듈의 ServerLimit, MaxClients를 늘리고 Timeout 및 KeepAliveTimeout을 줄였습니다. 효과가 있었지만 부진했고 더 많은 일을 할 수 있다는 느낌이 들었습니다. 이러한 종류의 로드를 처리하도록 Apache 서버를 구성하는 방법을 제안하시겠습니까?

답변1

이 시나리오에서 병목 현상은 PHP와 PHP가 데이터베이스에서 수행하는 작업입니다. 호출할 때마다 새로운 연결을 여는 경우 무엇보다 디스크 액세스에 대한 I/O 벽에 부딪힐 가능성이 높습니다. 가장 좋은 방법은 데이터베이스와 정적 콘텐츠를 RAM 디스크에 두고 필요에 따라 디스크의 데이터베이스에 변경 사항을 커밋하는 것입니다. 또한 쿼리 캐시 조회와 관련된 불필요한 처리 주기로 postgresql에 부담을 주지 않도록 PHP에서 RAM 전용 빠른 해시 조회를 사용하여 효율적인 쿼리 캐싱 메커니즘을 유지합니다. postgresql은 쿼리 캐싱에 있어 자체 코드보다 더 효율적일 가능성이 높지만 처음부터 연결할 필요가 없는 것만큼 빠르지는 않습니다.

답변2

서버는 작업을 쉽게 처리할 수 있어야 합니다. 몇 가지 참고사항:

  1. SSL을 사용하면 계산 요구 사항이 늘어납니다. 따라서 일반 HTTP를 사용하십시오.
  2. prefork MPM을 사용하면 메모리 요구 사항이 늘어납니다. 따라서 작업자 MPM을 사용하십시오.
  3. 더 많은 코어와 더 많은 동시성을 사용하면 성능이 향상됩니다.
  4. PostgreSQL 데이터베이스에 더 많은 RAM을 할당하세요.

이는 단지 일반적인 지침일 뿐입니다.

관련 정보