
CentOS 서버를 관리하는 새로운 시스템 관리자입니다. 지난 주는 내 경력에서 가장 흥미진진한 주 중 하나였으며 모든 종류의 새로운 것을 배우는 것으로 가득 차 있었습니다. 오늘은 또 다른 임무가 있는데, 그것은 우리 서버가 이전 공유 호스팅이 할 수 있었던 것보다 더 많은 것을 처리할 수 있는지 확인하는 것입니다.
원래 GoDaddy 공유 호스팅에서는 동시 연결이 200개로 제한되었습니다. 결국 우리는 (보통 캠페인/마케팅 이벤트 중에) 이를 초과하여 가상 전용 서버로 전환했습니다. Apache에서 연결 수를 처리한다고 가정합니다.
더 많은 트래픽을 허용하려면 어떤 구성에 유의해야 합니까?
답변1
정적 웹 페이지 제공에 대해 이야기하고 있습니까? 어떤 종류의 프로그래밍 방식 백엔드가 있는 경우 그에 대한 다양한 답변이 있지만 Apache의 경우 확실히 프로세스 모델과 허용되는 프로세스/스레드 수입니다. 또한 일반 UNIX Apache 튜닝 가이드를 읽고 사용자당 적절한 프로세스와 열린 파일이 있는지 확인하고 싶습니다(ulimit -n 및 -u가 이를 표시합니다. /etc/security/limits.conf에서 nproc 및 nofile을 사용하여 설정하고 다음을 통해 활성화합니다. /etc/pam.d/login에 "세션 필요 /lib/security/pam_limits.so" 추가)
이전 Apache에서는 항상 스레드별로 별도의 프로세스를 생성하는 "prefork" 모델을 사용합니다. 이것이 이전 MaxClients 설정입니다. 여러 개의 모듈 등을 사용하는 경우 200-250개의 Apache 프로세스는 적당한 양의 RAM만 있는 시스템을 쉽게 채울 수 있습니다. 최신 Apache를 사용하고 있고 다른 스레딩 모델을 사용하는 "작업자" MPM을 사용하고 있는지 확인하세요. 그러면 서버당 조금 더 많은 비용을 얻을 수 있습니다(조정하려면 추가 설정이 필요함).
극도의 확장성이 필요한 경우 Apache에서 nginx 등으로 전환하세요. 그러나 시나리오가 "약 200개 이상"이라면 Apache는 괜찮습니다.
30개 정도의 대용량 파일을 제공하지 않는 한 시간 초과를 합리적으로 낮은 값으로 설정하십시오.
압축 및 캐싱을 사용합니다.
답변2
또한 더 높은 로드에 도달하게 되므로 Linux 방화벽 설정, 특히 연결 모듈을 조정해야 할 수도 있습니다. 인터넷에 몇 가지 기사가 있습니다. 내 기사는 다음과 같습니다.http://timanovsky.wordpress.com/2009/04/10/tuning-linux-firewall-connection-tracker-ip_conntrack/