Background Image
응용개발
2009.07.01 00:09

PHP 성능 최적화를 위한 고려 사항

조회 수 17416 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1 . strace를 통한 시스템콜 추적

테스트 방법

/usr/sbin/apache2 -X &
[1] 16367

% strace -p 16367 -o sys1.txt
Process 16367 attached - interrupt to quit

Process 16367 detached
% grep stat sys1.txt | grep -v fstat | wc -l 153

잘 고민 하지 않고 넘어 가는 부분이긴 하지만 다음의 실수는 strace를 통한 시스템콜에서 발견 할 수 있다.
여러 확장자를 디렉토리 인덱스에 적용하면 여러번의 시스템콜이 일어나며 성능에 악영향을 미친다.
stat64("/var/www/index.html", 0xbfd279ac) = -1 ENOENT (No such file or directory)
stat64("/var/www/index.cgi", 0xbfd27afc) = -1 ENOENT (No such file or directory)
stat64("/var/www/index.pl", 0xbfd27afc) = -1 ENOENT (No such file or directory)
stat64("/var/www/index.php", {st_mode=S_IFREG|0664, st_size=7198, ...}) = 0
TODO: DirectoryIndex 에 필요한 확장자만 등록 할것
<Directory /var/www>
    DirectoryIndex index.php
</Directory>

2. include 경로 설정 주의

다음의 두가지 경우를 테스트 해볼것
TODO:

;include_path = ".:/usr/local/lib/php" --worst
include_path = "/usr/local/lib/php:." -- best
 
% /usr/sbin/apache2 -X &
[1] 16381
% strace -p 16381 -o sys2.txt 
Process 16381 attached - interrupt to quit
Process 16381 detached
% grep stat sys2.txt | grep -v fstat | wc -l
36
All the syscalls
accept(3, {sa_family=AF_INET, sin_port=htons(52362), sin_addr=inet_addr("10.211.55.2")}, [16]) = 9
getsockname(9, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.211.55.3")}, [16]) = 0
fcntl64(9, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(9, "GET /index.php?action=public HTT"..., 8000) = 230
gettimeofday({1216450700, 390225}, NULL) = 0

3. Cache를 적용 할 것

APC Cache 인스톨
$pecl install apc
vi php.ini
extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=256
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.include_once_override=1

4. 다 해봤는데 어렵다면 프로파일링을 해볼것


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
139 CUBRID 매니저 UTF8 로 저장된 데이터를 매니저로 조회하는 방법 file Prototype 2009.03.21 25636
138 질의작성 UPDATE에서 조인을 통해, 결과값 수정하는 방법 박동윤 2016.12.27 7186
137 기타 Tomcat's JDBC Pool 사용 시 JNDI DataSource 설정 손승일 2016.12.16 6506
136 운영관리 TIME_TO_KILL과 SESSION_TIMEOUT에 대한 정리 cubebridge 2009.05.27 13191
135 질의작성 SQL튜닝 - 인덱스 활용 사례 권호일 2015.06.04 12015
134 운영관리 SElinux 환경에서 CUBRID 사용하기 2 admin 2008.11.21 25505
133 응용개발 PHP에서 prepared statement 사용하기 3 Prototype 2009.04.16 21455
132 응용개발 PHP에서 prepared statement 사용시 BIND 관련 팁 Prototype 2009.06.30 14844
131 응용개발 PHP에서 Prepared statement 사용시 NULL 값을 바인딩 하는 방법 1 Prototype 2009.11.27 19722
130 응용개발 PHP에 CUBRID 모듈 추가시 모듈이 로드되지 않는 문제에 대한 해결 방안 하나입니다 남재우 2010.07.01 16557
129 응용개발 PHP 프로그램을 작성할때 주의할 점 Prototype 2009.07.01 13728
» 응용개발 PHP 성능 최적화를 위한 고려 사항 웁쓰 2009.07.01 17416
127 응용개발 PHP PEAR extension 을 이용한 DB Time 추적 웁쓰 2009.07.01 19188
126 응용개발 PHP PEAR extension Cache-Lite 를 이용한 응용 프로그램 최적화 file 웁쓰 2009.07.01 17044
125 기타 Oracle import 시 character set 변경관련 김창휘 2016.12.26 8699
124 질의작성 Oracle UTL_ENCODE.TEXT_ENCODE를 CUBRID로 변환하기 김창휘 2016.03.21 4647
123 기타 OS별 CPU, memory, kernel bit 를 확인하는 방법입니다. 남재우 2009.06.30 26903
122 질의작성 ORACLE 테이블 및 컬럼 COMMENT 일광등록 스크립트 1 김창휘 2016.04.04 9337
121 질의작성 ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기 김창휘 2015.12.31 6461
120 기타 ODBC 드라이버만 따로 배포하는 방법 1 file 손승일 2009.06.26 18060
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales