37
용용용 PHPKorea PHP 성성 성성 성성

[PHPFest 2013] PHP 성능 향상 방법

Embed Size (px)

DESCRIPTION

PHPFest 2013

Citation preview

Page 1: [PHPFest 2013] PHP 성능 향상 방법

용영환 PHPKorea

PHP 성능 향상 방법

Page 2: [PHPFest 2013] PHP 성능 향상 방법

성능 = 속도 = 비용 = 이익 ?

Page 3: [PHPFest 2013] PHP 성능 향상 방법

속도의 중요성

Bing 1 초 늦어지면 2.8%

2 초 늦어지면 4.8% 수익 감소

Google 0.4 초 늦췄더니 0.76% 검색

감소

Yahoo! 0.4 초 늦어지면 5~9%

트래픽 감소

Page 4: [PHPFest 2013] PHP 성능 향상 방법

몇 초 안에 보여줘야 하는가

Page 5: [PHPFest 2013] PHP 성능 향상 방법

2 초의 의미

Load time 2 초

= 웹브라우저에 다 보여지는

시간

Page 6: [PHPFest 2013] PHP 성능 향상 방법

2 초의 의미

전체 = 2.67 초

onload = 2.13 초

Page 7: [PHPFest 2013] PHP 성능 향상 방법

2 초의 의미

전체 = 3.92 초

onload = 2.96 초

Page 8: [PHPFest 2013] PHP 성능 향상 방법

몇 초 안에 보여줘야 하는가

네이버

월간 마이크로소프트웨어

Page 9: [PHPFest 2013] PHP 성능 향상 방법

일반적인 웹사이트

3 초 이내에 onload 이벤트 발생

4 초 이내에 전체 요소 로딩 완료

이정도를 일반적인 웹사이트 속도라고

합시다 .

Page 10: [PHPFest 2013] PHP 성능 향상 방법

일반적인 웹사이트

대기시간 = 387ms전송시간 = 243ms

Page 11: [PHPFest 2013] PHP 성능 향상 방법

유명 포털사이트

대기시간 = 22ms전송시간 = 102ms

Page 12: [PHPFest 2013] PHP 성능 향상 방법

유명 포털사이트

대기시간 = 22ms전송시간 = 102ms

Page 13: [PHPFest 2013] PHP 성능 향상 방법

속도의 중요성 ( 재탕 )

Bing 1 초 늦어지면 2.8%

2 초 늦어지면 4.8% 수익 감소

Google 0.4 초 늦췄더니 0.76% 검색

감소

Yahoo! 0.4 초 늦어지면 5~9%

트래픽 감소

Page 14: [PHPFest 2013] PHP 성능 향상 방법

그래서…

우리는 대기시간을 줄여보자 .

Page 15: [PHPFest 2013] PHP 성능 향상 방법

대기시간

= 서버 내부 처리 시간

= PHP + DB 에서 소비하는 시간

DB 튜닝 방법은 “ Real MySQL” 에서

Page 16: [PHPFest 2013] PHP 성능 향상 방법

PHP 속도를 높이려면

1. 쪼금이라도 빠른 PHP 코드 사용하기

2. 캐시 사용하기

3. 느린 코드 리펙토링 하기

Page 17: [PHPFest 2013] PHP 성능 향상 방법

쪼금 더 빠른 PHP 코드

echo ‘Hello’ 196 microsec.

print ‘hello’ 218 microsec.

http://phpbench.-

com

Page 18: [PHPFest 2013] PHP 성능 향상 방법

쪼금 더 빠른 PHP 코드

echo ‘Hello’ 196 microsec.

print ‘hello’ 218 microsec.

1 microsec.= 1/1000 milisec.

1 ms 동안 echo 5 번 , print 4 번

Page 19: [PHPFest 2013] PHP 성능 향상 방법

쪼금 더 빠른 PHP 코드

foreach($aHash as $key => $val);

22 microsec.

while(list($key,$val) = each($aHash))

160 microsec.

게시판 글 50 개 = 160 * 50 = 8

milisec.

반면 , foreach 는 22 * 50 = 1

milisec.

Page 20: [PHPFest 2013] PHP 성능 향상 방법

쪼금 더 빠른 PHP 코드

Function vs. closure vs. lambda

Page 21: [PHPFest 2013] PHP 성능 향상 방법

그런데…

저런 것들 다 신경 쓰다간 “ Mental

crash”

Page 22: [PHPFest 2013] PHP 성능 향상 방법

그냥… 방을 치워

Page 23: [PHPFest 2013] PHP 성능 향상 방법

사회적 동물로서 살아남는 방법

뜬금 없지만… 진리이기도 한…

“ 티끌 모아 봤자 , 티끌이다 .” - 박명수

어록

Page 24: [PHPFest 2013] PHP 성능 향상 방법

그냥…

PHP 버전을 올리세요 .

5.3 은 5.2 보다 약 20% 빠르고

5.4 는 5.3 보다 30% 정도 빠릅니다 .

Page 25: [PHPFest 2013] PHP 성능 향상 방법

캐시 사용하기

Page 26: [PHPFest 2013] PHP 성능 향상 방법

기본적인 PHP 실행

PHP Script Parse

Compile

Excute Output

Page 27: [PHPFest 2013] PHP 성능 향상 방법

Opcache PHP 실행

PHP Script

OPCache

Excute Output

Page 28: [PHPFest 2013] PHP 성능 향상 방법

캐시 사용하기

PHP 5.5 부터 기본 탑재

Zend OPCache 만 적용해도 40% Up

http://www.php.net/manual/en/opcache.installa-tion.php

Page 29: [PHPFest 2013] PHP 성능 향상 방법

느린 코드 리펙토링 하기

Page 30: [PHPFest 2013] PHP 성능 향상 방법

느린 코드 리펙토링 하기

느린 코드 찾겠다고

산을 다 파헤치지는

말자 .

Page 31: [PHPFest 2013] PHP 성능 향상 방법

프로파일링

프로그램이 실행되는 과정을 기록하여

개발자가 인간으로 살 수 있게 돕는다 .

^__^

Page 32: [PHPFest 2013] PHP 성능 향상 방법

프로파일링

많이 쓰는 디버거

- Xdebug = 무료

- Zend debug = 사실상 유료

Page 33: [PHPFest 2013] PHP 성능 향상 방법

프로파일링

많이 쓰는 분석툴

- WinCacheGrind = 무료

- Kcachegrind = 무료

Page 34: [PHPFest 2013] PHP 성능 향상 방법

프로파일링

가장 많이 쓰는 (?) 조합

Xdebug + WinCacheGrind = 무료

Page 35: [PHPFest 2013] PHP 성능 향상 방법

프로파일링

DEMO

Page 36: [PHPFest 2013] PHP 성능 향상 방법

병목 ? 어떻게 테스트 하는가

DEMO

Page 37: [PHPFest 2013] PHP 성능 향상 방법

주의 ! 검거 될 수 있습니다 .