2013-04-24 8 views
0

이 질문이 너무 광범위하지는 않지만 잘 모호하지 않습니다.로컬 호스트에서의 속도가 느리며 서버 속도가 느림

상당한 양의 사용자 정의 Ajax를 사용하여 검색 결과를로드하는 WordPress 사이트를 개발했습니다. 이것은 WordPress 나 Ajax에만 국한된 질문은 아닙니다. (그리고 심지어 PHP, idk도 아닙니다!).

사이트는 WAMP를 실행하는 기본 HP (8GB RAM, i7 프로세서)로 개발할 때 매우 뛰어납니다. 하나의 Ajax 호출이 2 ~ 3 초 이상 걸리는 것을 보지 못했습니다.
그러나 사이트가 VPS (Hostgator 레벨 9)에서 실행되는 경우 속도가 느려집니다. 평균 6 초가 걸리고 보통 10-12 초를 정점으로합니다.

내 질문은 : 은 내 PHP 기능 (일부는 비교적 작은 규모의 큰 MySQL 쿼리 포함)의 오류 요소 또는 서버의 오류입니까? 내가 묻는 유일한 이유는 로컬 사이트와 서버 사이의로드 시간의 엄청나게 큰 차이 때문입니다.

나는 이것이 모호 할 수 있음을 알고 있습니다. 더 많은 정보가 필요하면 기꺼이 내가 할 수있는 모든 것을 제공 할 것입니다 (불행히도 사이트 ATM을 공유하는 것을 금지하는 NDA가 있음).

상세 정보 :

특정 아약스 호출 (전용 DB에서 정보의 적당한 양을 끌어 것과 같은) 순간적 순간이다.

몇 초 걸리는 호출은 여러 테이블에서 많은 양의 정보를 가져 오는 호출입니다 (기억해 보면, WordPress에서 작업 중이며 WP_Query 클래스를 사용하므로 SQL 쿼리와 db 구조는 내 자신이 아닙니다 - posts/post 메타 테이블 사용), 결과에서 HTML을 생성하고 추가 할 JavaScript로 리턴합니다. 이 사이트의 기본 검색 결과는 위치를 기반으로 결과를 가져 오지만 다른 여러 비트의 데이터 (이미지, 결과 메타 데이터 등)를 가져옵니다. 나는 보통 이런 종류의 과정이 순간적으로 일어나는 것을 볼 수는 없지만 보통 미시시피 주 1 곳에서 일어난다. 서버의 문제는 로컬에서 즉각적으로 발생하는 동일한 호출이 서버에서 중지되기까지 6-10 초가 걸리는 것입니다.

지금까지 읽은 코멘트와 대답은 SQL 쿼리가 인덱싱 된 db에서 수행되는 sin 쿼리라는 가정/시나리오를 처리하는 것으로 보입니다. 수행 된 u 리는 WP_Query 클래스에 의해 수행되며 단순한 u 리가 아 U니다 (IMHO).

내가 "아약스 호출"이라고 말하면 프로세스의 한 부분을 의미하지는 않습니다. HTML이 추가 될 때까지 버튼을 클릭했을 때부터 말입니다.

사이트에 사용자가 있지만 서버에 있습니다. 아직 공개 사이트가 아닙니다.

+1

팁 : 요즘 대부분의 브라우저에는 자산로드 시간의 시각적 표현을 볼 수있는 "넷"창 또는 이와 유사한 개발자 도구가 있습니다. (로컬에서 2 ~ 3 초 * 매우 * 느립니다.) –

답변

4

단일 Ajax 호출에 2-3 초 이상 걸리지 않았습니다.

단일 사용자와 함께 dev 컴퓨터에서 이러한 것들은 즉각적이어야합니다. 범위의 쿼리 응답은 디자인 결함 (인덱싱되지 않은 데이터베이스?)의 가장 흔한 현상입니다.

편집 :

그것은 DB로 시작하는 의미가 있습니다.

runQuery ("SET profiling=1"); 
// do your WordPress stuff here 
runQuery ("SHOW PROFILES"); 
runQuery ("SHOW PROFILE FOR QUERY n"); // where n loops on the results of SHOW PROFILES 

을 그리고 라이브 dev에 서버의 결과를 비교 : 당신은 profiling처럼 사용할 수 있습니다. (runQuery은 허수 함수 임).

Edit2가이 :

또한 대신 WP_Query의 DB에 직접 자신의 쿼리를 실행 해보십시오. 네가 뭔가 더 잘할 수있을거야. 자세한 내용은 wpdb object을 확인하십시오. 여기

2

이있을 수있는 여러 가능성 'vbence'에서 언급 한 바와 같이

  1. , 당신은 쉽게 파악 아웃 Google 웹 로그 분석에서 웹 사이트 & 검사에 사용할 수 있습니다 경우에 귀하의 웹 사이트를 (액세스하는 동시 사용자 " 실시간 "또는 단순히 원시 아파치 로그의 도움으로).

  2. 리소스 제한 (구체적으로 메모리) : 응용 프로그램이 거의 모든 사용 가능한 메모리를 사용하고있는 경우가있을 수 있습니다. top command &을 사용하여 거기에서 사용 가능한 메모리 인 &을 확인하십시오. 스왑 공간을 사용하기 시작하면 일이 느려지 기 시작합니다. enter image description here

  3. MySQL의 튜닝은 (이것은 당신의 경우 수 있습니다) : 단순히 코드의 일부는이 때문에 MySQL을인지 확인하기 위해 시간을내어하는 서버 & 검사에서 PHP 스크립트를 프로파일. 그렇다면 mysql 설정을 최적화해야한다. 생산에 MySQL의 속도 저하 관련된 게시물을 확인 : MySQL 10x slower on one server compared to another

1

실행 물건 로컬 의미 단지

  • 을.
  • '다운 와이어'
  • 전용 서버 - 귀하의 PC. 호스팅 서버에 물건을 실행

은 종종 의미

  • 많은 사용자 (실제 응용 프로그램에 대한, 심지어 단지의 경우 1)
  • 많은 여행을하고에서 페이지와 자산을 얻을 수있는 선 아래로 귀하와 귀하의 요청에 대한 서버
  • 다른 사용자와 공유 된 서버.

비교 대상으로 현지 시간을 사용하지 마십시오. 오히려 VPS 시간을 표준으로 사용하고 이에 집중하십시오. 다른 사람들은 현지 시간이 1 초라도 의심되는 경우가있을 수 있음을 지적합니다.