트래픽이 보통 인 단일 Magento 전자 상거래 사이트를 호스팅하는 한 쌍의 서버가 있습니다 (Google 웹 로그 분석에서 하루 60 만 페이지 조회, 서버 자체에서 약 80k보고). 데이터베이스 서버는 드물게 간헐적으로 발생하지만, 아파치 서버는 종종 자주 쓰러지고 있습니다.
권장 PHP 캐싱 (APC)을 사용하고 1.5 기가 tmpfs에 자체 캐시 파일을 보유하도록 magento를 설정했습니다 (이 tmpfs는 정기적으로 가득 차 있습니다. tmpfs가 80 % 이상 가득 참). Amazon Cloudfront에서 대부분의 이미지를 제공합니다. 최근에 nginx를 아파치에 대한 리버스 프록시로 설정했습니다 (nginx도 정적 파일을 제공합니다). 나는 최선을 다해 아파치를 구성했다-keepalives와 hostnamelookups는 꺼져 있고 prefork는 다음과 같이 구성되어있다 :
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 512
MaxClients 256
MaxRequestsPerChild 400
</IfModule>
.htaccess 파일을 끄지 않았으며 액세스 로깅이 켜져 있습니다. 내가 끌 수있는 몇 가지 모듈이 있다는 것을 알고 있습니다. 이 세 가지 변경 중 어떤 영향이 있을지 확실하지 않습니다.
아파치 서버는 6 기가 RAM의 VPS입니다. 서버를 작성하는 시점에서보고 load average: 17.77, 18.27, 49.76
하고 있지만 약 2 기가의 RAM 여유 공간이 있습니다. 그것이 정말로 나빠지면,로드는 120+로 가고 거기에 머물러 있습니다-아파치를 다시 시작하면 사이트가 다시 시작되고로드가 다시 낮아집니다.
vmstat
서버가 위의로드를보고하는 동안 0에서 70 정도의 CPU 유휴 값을 보여줍니다. iostat
0에서 0.2 % 사이의 iowait 값을 보여줍니다.
나는 조금 붙어있다. 내가 아는 것은 문제는 코드 실행과 사용자 수의 조합으로 인해 CPU가 오버로드된다는 것입니다. 그러나 나는 그것이 문제라는 것을 확신 할만큼 경험이 충분하지 않습니다. 이것이 문제라면 해결책은 코드를 개선하거나로드 밸런서로 두 개의 VPS를 통해 사이트 호스팅을 분할하는 것입니다.
그래서 내 질문은 다음과 같습니다.
- 서버에서 문제 나 병목 현상을 찾으려면 어떻게해야합니까?
- 이를 개선하기 위해 서버 구성을 변경할 수있는 명백한 변경 사항이 있습니까?
- 로드가 특정 레벨을 초과 할 때 자동 시스템이 아파치를 다시 시작하도록 설정하는 것이 좋습니까?
- 위에서 사이트가 서버를 능가했을 가능성은 얼마나됩니까?
편집하다:
나는 이상한 것을 발견했다-/ var / spool / mail / root가 크다 ... 38 공연. 건강하지 않은 것 같습니다. 그게 문제가 될 수 있습니까?