ݺߣ

ݺߣShare a Scribd company logo
PHP 성능 향상 방법
용영환 PHPKorea
성능 = 속도 = 비용 = 이익?
속도의 중요성
Bing

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

Google 0.4초 늦췄더니 0.76% 검색 감소
Yahoo! 0.4초 늦어지면 5~9% 트래픽 감소
몇 초 안에 보여줘야 하는가
2초의 의미
Load time 2초
= 웹브라우저에 다 보여지는 시간
2초의 의미
전체 = 2.67초
onload = 2.13초
2초의 의미
전체 = 3.92초
onload = 2.96초
몇 초 안에 보여줘야 하는가
네이버
월간 마이크로소프트웨어
읷반적읶 웹사이트
3초 이내에 onload 이벤트 발생
4초 이내에 전체 요소 로딩 완료
이정도를 읷반적읶 웹사이트 속도라고 합시
다.
읷반적읶 웹사이트

대기시간 = 387ms
전송시간 = 243ms
유명 포털사이트

대기시간 = 22ms
전송시간 = 102ms
유명 포털사이트

대기시간 = 22ms
전송시간 = 102ms
속도의 중요성 (재탕)
Bing

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

Google 0.4초 늦췄더니 0.76% 검색 감소
Yahoo! 0.4초 늦어지면 5~9% 트래픽 감소
그래서…
우리는 대기시간을 줄여보자.
대기시간
= 서버 내부 처리 시간
= PHP + DB 에서 소비하는 시간
 DB 튜닝 방법은 “Real MySQL” 에서
PHP 속도를 높이려면
1. 쪼금이라도 빠른 PHP 코드 사용기
2. 캐시 사용기
3. 느린 코드 리펙토링 기
쪼금 더 빠른 PHP 코드
echo ‘Hello’

196 microsec.

print ‘hello’

218 microsec.

http://phpbench.com
쪼금 더 빠른 PHP 코드
echo ‘Hello’

196 microsec.

print ‘hello’

218 microsec.

1 microsec.= 1/1000 milisec.
1 ms 동안 echo 5번 , print 4번
쪼금 더 빠른 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.
쪼금 더 빠른 PHP 코드
Function vs. closure vs. lambda
그런데…
저런 것들 다 신경 쓰다간 ‚Mental crash‛
그냥… 방을 치워
사회적 동물로서 살아남는 방법
뜬금 없지만… 진리이기도 한…
‚티끌 모아 봤자, 티끌이다.‛ - 박명수 어록
그냥…
PHP 버젂을 올리세요.
5.3은 5.2보다 약 20% 빠르고
5.4는 5.3보다 30% 정도 빠릅니다.
캐시 사용기
기본적읶 PHP 실행
PHP Script

Parse

Compile

Excute

Output
Opcache PHP 실행
PHP Script
OPCache

Excute

Output
캐시 사용기
PHP 5.5 부터 기본 탑재
Zend OPCache 만 적용해도 40% Up

http://www.php.net/manual/en/opcache.installation.php
느린 코드 리펙토링 기
느린 코드 리펙토링 기
느린 코드 찾겠다고
산을 다 파헤치지는
말자.
프로파읷링
프로그램이 실행되는 과정을 기록하여
개발자가 읶간으로 살 수 있게 돕는다.
^__^
프로파읷링
많이 쓰는 디버거
- Xdebug = 무료
- Zend debug = 사실상 유료
프로파읷링
많이 쓰는 분석툴
- WinCacheGrind = 무료
- Kcachegrind = 무료
프로파읷링
가장 많이 쓰는(?) 조합
Xdebug + WinCacheGrind = 무료
프로파읷링
DEMO
병목? 어떻게 테스트 하는가
DEMO
주의! 검거 될 수 있습니다.

More Related Content

What's hot (20)

처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
KwangSeob Jeong
Python server-101
Python server-101Python server-101
Python server-101
Huey Park
Vim 강의
Vim 강의Vim 강의
Vim 강의
Benjamin Oh
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
Juntai Park
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
SeungHyun Lee
워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1
성일 한
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
Gitaek kwon
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
정현 윤
[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
Amy Kim
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
성일 한
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide korean
Jinsoo Park
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
근호 최
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
Booseol Shin
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
jbugkorea
Composer
ComposerComposer
Composer
jhyeon1010
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
Opennaru, inc.
Sonatype nexus 로 docker registry 관리기
Sonatype nexus 로 docker registry 관리기Sonatype nexus 로 docker registry 관리기
Sonatype nexus 로 docker registry 관리기
KwangSeob Jeong
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
Han Jung Hyun
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
JeongHun Byeon
파이어베이스 스터디
파이어베이스 스터디파이어베이스 스터디
파이어베이스 스터디
성일 한
워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1
성일 한
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
Gitaek kwon
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
정현 윤
[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
Amy Kim
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
성일 한
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide korean
Jinsoo Park
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
Booseol Shin
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
jbugkorea
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
Opennaru, inc.
Sonatype nexus 로 docker registry 관리기
Sonatype nexus 로 docker registry 관리기Sonatype nexus 로 docker registry 관리기
Sonatype nexus 로 docker registry 관리기
KwangSeob Jeong
파이어베이스 스터디
파이어베이스 스터디파이어베이스 스터디
파이어베이스 스터디
성일 한

Similar to [PHPFest 2013] PHP 성능 향상 방법 (20)

PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
Changwan Jun
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
현승 배
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
AWSKRUG - AWS한국사용자모임
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XpressEngine
화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
Yongho Ha
Introduce php7
Introduce php7Introduce php7
Introduce php7
Jung soo Ahn
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
Young Min Shin
Internship backend
Internship backendInternship backend
Internship backend
Yein Sim
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
Seung kyoo Park
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
KTH
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
KTH, 케이티하이텔
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
Yongho Ha
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
devCAT Studio, NEXON
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Seomgi Han
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
SeungWoo Lee
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
Jiho Lee
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
Core.Today
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기
Sol Kim
Modern PHP
Modern PHPModern PHP
Modern PHP
Changwan Jun
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
Changwan Jun
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
현승 배
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
AWSKRUG - AWS한국사용자모임
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XpressEngine
화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
Yongho Ha
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
Young Min Shin
Internship backend
Internship backendInternship backend
Internship backend
Yein Sim
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
Seung kyoo Park
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
KTH
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
KTH, 케이티하이텔
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
Yongho Ha
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
devCAT Studio, NEXON
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Seomgi Han
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
Jiho Lee
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
Core.Today
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기
Sol Kim

[PHPFest 2013] PHP 성능 향상 방법