SlideShare uma empresa Scribd logo
1 de 37
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
주의! 검거 될 수 있습니다.

Mais conteúdo relacionado

Mais procurados

[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
Amy Kim
 

Mais procurados (20)

처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
Python server-101
Python server-101Python server-101
Python server-101
 
Vim 강의
Vim 강의Vim 강의
Vim 강의
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
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 설치와 사용법
 
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
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
 
Composer
ComposerComposer
Composer
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
파이어베이스 스터디
파이어베이스 스터디파이어베이스 스터디
파이어베이스 스터디
 

Semelhante a [PHPFest 2013] PHP 성능 향상 방법

H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
KTH
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
KTH, 케이티하이텔
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
devCAT Studio, NEXON
 

Semelhante a [PHPFest 2013] PHP 성능 향상 방법 (20)

PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806
 
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
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
 
화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
 
Introduce php7
Introduce php7Introduce php7
Introduce php7
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
Internship backend
Internship backendInternship backend
Internship backend
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
 
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기
 

[PHPFest 2013] PHP 성능 향상 방법