2011-12-09 2 views
1

많은 PHP/MySQL 웹 사이트를 호스팅하는 서버 (VPS)가 있습니다. 대부분은 MySQL 데이터베이스에서 텍스트와 이미지를 제공하는 모든 손으로 코딩 된 웹 사이트라는 점에서 매우 유사합니다.PHP/MySQL 웹 사이트 프로파일 링 및 최적화

서버 트래픽이 최근에 상당히 증가했으며 서버 속도가 느려지고 있습니다. 따라서 나는 서버의 병목을 식별하여 서버의 속도를 향상시킬 수 있기를 원합니다.

아무에게도이 작업을 수행하는 방법에 대한 정보가 있습니까? 내 큰 사이트 중 일부에 시간 설정 스크립트를 설치하여 웹 페이지가 생성되는 데 걸리는 시간을 확인하지만 항상 낮은 수치를 보여줍니다. 서버 통계에 따르면 주요 문제는 CPU/MySQL 사용으로 보입니다. 오랜 시간이 걸리는 검색어를 식별 할 수 있습니까?

감사 크리스

+0

트래픽 증가로 인해 서버로드가 발생하므로 문제가 발생합니까? ** 공정한 금액 ** – ajreal

+0

Uhm은 1 개월에 1 백만 회 이상의 노출 수를 설명합니다. 그리고 문제는 없지만 좋은 점이 있지만 더 큰 서버를 사기보다는 사이트를 최적화하고 싶습니다. – Chris

답변

2

예, 방법이 있습니다! MySQL에는이 기능이 내장되어 있습니다. You can set up a log file to log slow queries.

다른 일반적인 조언은 공통 쿼리에 EXPLAIN을 사용하고 모든 것이 적절히 색인되어 있는지 확인하는 것입니다.

3

파이어 버그의 순 탭에서 시작과 느린 반응을 가지고있는 자원을 참조하십시오. 이유 중 적어도 하나 인 MySQL 데이터베이스

에서

하지만

봉사 심지어 어떤 프로파일없이 말할 수 있습니다 ... 이미지.

+0

안녕하세요, 감사합니다. 사이트의 실제 HTML 구성이 빠르며, 모든 것은 손으로 코드화되고 매우 가볍습니다. 내가 생각하기에 백엔드 스크립트에 내가 프로파일하는 방법을 모르는 문제가있다. – Chris

+0

"백엔드"스크립트는 무엇인가? 너는 그들을 언급하지 않았다. 또한 "모든 것은 손으로 코딩되었고 매우 희박합니다"는 프로파일 링의 결과로 들리지 않습니다. –

+0

백엔드 스크립트 란 PHP/MySQL을 의미합니다. HTML, CSS 및 자바 스크립트는 매우 가볍습니다. 문제는 웹 페이지 콘텐츠 자체가 아닌 서버 성능 때문입니다. – Chris

7

개봉, 당신은 다음과 같이 스크립트에서 mysql_query("set profiling=1");을 사용할 수 있습니다 MySQL의> = 5.1를 사용하는 경우 :

mysql_query("set profiling_history_size=100"); 
mysql_query("set profiling=1"); 

.... 
.... 
any mysql query 
.... 
.... 

$rs = mysql_query("show profiles"); 
while($rd = mysql_fetch_object($rs)) 
{ 
    echo $rd->Query_ID.' - '.round($rd->Duration,4) * 1000 .' ms - '.$rd->Query.'<br />'; 
} 

예 출력 :

enter image description here

+0

어떤 결과가 나옵니까? 여러 개의 쿼리 또는 한 번만 사용할 수 있습니까? – Chris

+0

다중 쿼리 : 스크립트 상단에 프로파일 링에 별표를 표시하고 스크립트의 맨 아래에 결과를 인쇄하십시오. –

+0

매우 흥미로운 !! 감사. – Chris