2014-05-25 2 views
4

Windows Server 2012 및 IIS8에서 4 코어 및 5GB RAM이있는 VPS가 있습니다. 나는 WordPress 사이트를 MySQL과 함께 InnoDB 데이터베이스로 실행하고 있으며, MySQL은 캐시/버퍼에 대략 70 %의 RAM을 제공하고있다. Wincache를 사용하도록 설정 했으므로 출력 캐싱은 기본적으로 모든 .php 파일에 사용 가능합니다. First Byte에 대한 나의 시간은 1400-1800 ms로 내 의견으로는 너무 느립니다.IIS8을 통한 출력 .PHP 파일 - 첫 번째 바이트까지의 시간

모든 PHP 파일에 대해 출력 캐싱을 활성화하여 8ms로 줄였습니다. 완전한! 또는 그렇게 생각했습니다 ... 물론 PHP 파일 전체를 캐싱하고 있기 때문에 후속 페이지를로드하지 않기 때문입니다. 이것은 WordPress가 새 파일이 아닌 쿼리로 후속 페이지를로드하기 때문입니다.

PHP 파일의 출력 캐싱을 완전히 해제해야했지만 첫 번째 바이트/응답 시간까지의 시간을 줄이는 데 다른 해결책을 찾지 못했습니다. 여기에 누구든지 Wincache 또는 Output Caching을 사용하여 ~ 8ms 결과를 얻으려는 좋은 제안이 있습니까?

모든 권장 사항도 매우 높이 평가됩니다.

답변

5

많은 두통 후 나는이 느린 TTFB의 큰 덩어리가 어디서 왔는지를 마침내 알게되었습니다. PHP/IIS8의 MySQL 드라이버 MySQLnd가 잘못되었습니다. AAAA (IPv6) 레코드가 A (IPv4) 레코드보다 우선하므로 'localhost'는 IPv6 주소를 반환합니다. 그리고 PHP의 MySQL 드라이버 (mysqlnd)가 IPv6 주소를 처리 할 수 ​​없기 때문에 IPv4를 통해 연결을 시도하기 전에 먼저 시간이 초과되었습니다.

TTFB를 1400-1800 ms에서 200-400 ms로 줄였습니다. 이미 더 나은 톤. 나머지는 아마도 .css/.js 호출과 다른 것들에 기인 할 수 있습니다.

위의 문제를 해결하려면 :이 함수는 항상 IPv4 주소를 반환하므로 'localhost'대신 127.0.0.1 또는 gethostbyname ('localhost')을 사용하십시오. 호스트 이름을 사용하여 외부 MySQL DB에 언젠가 연결할 수 있기 때문에 후자가 더 나은 솔루션입니다.

희망 사항은 TTFB 문제가있는 다른 사람들에게 도움이되기를 바랍니다.

+1

비록이 문제를 '해결'할 수 있었지만. 더 이상 TTFB를 줄이기 위해 더 이상 제안 사항을 추가하십시오! – njs