2009-09-30 7 views
3

Facebook 용 PHP 응용 프로그램을 만들었습니다. MySQL, Memcached를 사용하며 Lighttpd에서 Centos 2,6 Ghz 및 2 GB RAM에서 작동합니다.PHP 성능을 향상시키는 방법?

기본적으로 첫 번째 실행 후 캐싱되며 다음 번에 Memcached에서 0,8ms에 제공 될 때마다 하나의 PHP 파일입니다.

이 시간을 단축하기 위해 더 많은 조치를 취할 수 있습니까?

+0

당신이 "이 시간 덜 수 있도록"하고 싶어 왜 질문이 구글을 할 수있어? – Ree

+0

0,8 ms는 꽤 빠릅니다. –

+0

지난 번이 앱을 게시했을 때 동시 요청 수가 10k였습니다. 따라서 10k * 0.8 ms = 8 초입니다. 너무 깁니다. –

답변

11

일단 0.8 밀리 초가되면 더 낮은 값으로 설정할 수 있을지 확신 할 수 없습니다.

그러나 여러 개의 동시 요청을 처리하기 위해 여러 개의 서버를 설정할 수 있습니다 (일반적인 memcached 사용). 그러면 한계에 도달했을 때 새로운 서버를 추가하기 만하면 매우 높은 확장 성을 가질 수 있습니다.

+0

동의. 하드웨어를보기 시작하기 전에 소프트웨어 측면에서만 많은 것을 할 수 있습니다. – ryeguy

3

XDebug를 실행하고 profiler을 실행하십시오. 거기에 비정상적인 시간이 걸리는 기능이 있는지 확인할 수 있습니다.

해당 로그를 읽는 프로그램을 사용하는 것이 좋습니다. kcachegrind와 같이.

사실, 프로파일 러를 입력 할 때 되돌릴 필요가 없습니다.

+0

안녕하세요, 내 코드는 기본적으로 Memcached에서 HTML 만 가져 와서 사용자에게 표시합니다. –

+0

그러면 PHP로 태그를 지정하고 PHP 응용 프로그램에 대해 이야기 할 것이므로 –

+0

@Olafur 내 질문에 정확하지 않은 경우 미안합니다. 그러나 당신이 쓰는 동안 나는 확실히 나의 코드를 다시 물었다. 고마워요. 해결책 일 수 있습니다. –

2

HTTP 프록시와로드 밸런스를 여러 서버에 적용 할 수 있습니다. 대부분의 HTTP 프록시는 응용 프로그램에서 부하를 제거 할 수있는 캐시로 두 번 사용할 수 있습니다.

페이지가 클라이언트 측 캐시 가능하도록 올바른 http 헤더를 보내야합니다. 클라이언트가 캐시 된 버전을 다시 사용하므로 요청 수가 줄어들 수 있습니다.

+0

HTTP 헤더! 그것을 확인하십시오! –

1

memcached에서 데이터를 가져 와서 표시하거나 웹 서버 자체가 memcached에서 직접 데이터를 가져 오는 PHP 스크립트가 있습니까?

lighthttpd이 memcached를 직접 페이지를 표시 할 수 있을지 모르겠어요,하지만 난의 nginx가 ngx_http_memcached_module

관련 문제