2012-01-10 4 views
5

나는 (는) PHP 프로그래머입니다. 나는 항상 페이스 북 페이지가 너무 많은 사용자가 어떤 순간 에나 그들과 연결하여 너무 빨리 로딩하는지 궁금해했다. 트래픽이 적을 때에도 내 사이트는 그러한 속도에 도달하지 못했습니다. 그들은 그들의 사이트에서 무엇을 그렇게 잘합니까?페이 스북 페이지가 너무 빨리로드되는 이유

나는 페이스 북의 절반 속도까지도 웹 사이트를 만들고 싶습니다. 나는 php와 mysql, jquery 웹 사이트를 언급하고있다.

+0

어떤 종류의 기계가 귀하의 페이지를 호스팅하고 있습니까? 그 컴퓨터에는 어떤 종류의 인터넷 연결이 있습니까?내 추측으로는 페이스 북의 장비가 그런면에서 최고 수준이라는 것이다. 또한 그들은 PHP를 C++로 변형시키는 hiphop을 사용합니다 ... – codeling

답변

7

페이스 북에 억류 된 사람에 의해이 레딧 포스트에서 살펴 보자 : 게시물의

http://www.reddit.com/r/programming/comments/nav19/facebook_releases_hhvm_60_percent_faster_than_its/c37pitt

대부분의 관련 부분 :

  • 데이터베이스 호출 캐시 키가 있습니다. Memcached는 데이터베이스 히트를 단락시킵니다. 페이스 북의 히트 율은 99.9 % 이상이다. 때로는 적중률을 95 %로 낮추는 문제가있을 수 있습니다. 이것은 아마도 많이 발생하지 않지만, 그렇게했을 때, 전체 사이트를 사용할 수 없게 느리게 만들었습니다.

  • 일반적으로 많이 가져 오는 stupid 데이터베이스 호출은 최소 가져 오는 스마트 데이터베이스 호출보다 좋습니다. 왜? 대부분의 어리석은 데이터베이스 호출은 동일하므로 캐시가 가능하기 때문에 서버 리소스를 사용하여 데이터를 필터링하는 것은 데이터베이스 리소스를 사용하는 것보다 훨씬 경제적입니다. 즉, 데이터베이스 호출의 복잡성을 줄이고 데이터베이스 호출 당 더 많은 데이터를 희생 시키며 memcached로 더 많은로드가 이동합니다.

2

은 기본적으로 그들은 :

  • 규모가 수평이되는 NoSQL 데이터베이스 인 것처럼
  • 는 고도로 분산 된 방식으로 자신의 PHP 코드를
  • 를 사용하여 MySQL의 컴파일 (이것은 '그들이 돈을 의미합니다 쿼리 할 때 많이 참여하십시오)
  • 많이 캐시하십시오.
+0

"do not join"이라는 개념을 얻지 못했습니다. 데이터가 단일 테이블에 저장된다고 말하는 것입니까? – Hacker

+0

일종. 이것이 NO_SQL이 기본적으로하는 일입니다. 거대한 해시로 데이터를 저장합니다. 또한 관계를 결합하여 쿼리 성능을 향상시키지 않습니다. –

3

페이스 북에는 매우 고도로 조정 된 캐싱과 고도로 조정 된 MySQL 클러스터 설정이 있습니다. 페이스 북에서 '페이스 북에서의 MySQL'을 검색해보십시오. 힌트와 팁 중 일부는 전설입니다!

귀하의 사이트가 무엇인지, 코딩 된 방법, 데이터베이스 구조 등을 알지 못하면 사이트를 최적화하는 방법을 말할 수 없습니다.

하루에도 큰 데이터베이스 작업을 수행하면 쿼리에 대한 가장 중요한 변경 사항조차도 성능에 엄청난 영향을 줄 수 있습니다. 전체 테이블에 인덱스를 두는 것만으로 내부 MySQL 인덱스가 아닌 Sphinx와 같은 적절한 인덱스 엔진을 사용하십시오. 모든 데이터베이스 호출을 일상 생활의 머리카락 안에 최적화하십시오.

또한 성능 MySQL을 좋은 전자 책의 몇을 등 slow_queries

라일리에 대한 MySQL의 로깅을 구성합니다.

데이브