2014년 02월 xe세미나 xe서버서능개선
DESCRIPTION
동영상 by 서명덕 - http://itviewpoint.com/ http://www.youtube.com/watch?v=Rdc3-uZhCT4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN http://www.youtube.com/watch?v=O2TAm6-0pNw&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN http://www.youtube.com/watch?v=XQ6zsB6tLgQ&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN http://www.youtube.com/watch?v=yA-zSPdVP6w&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyN http://www.youtube.com/watch?v=i2_z5HJIwL4&list=PLZ9uJh6mO6seUbnHC7MtVGctVHGalncyNTRANSCRIPT
XE 서버 성능 개선
목표
• 1개의 응답에 필요한 리소스 절약
• 사용자 요청에 대한 응답이 조금이라도 빠르게
측정은 어떻게 할 것 인가?
http://www.bubblews.com/news/1170033-f5-for-life
Requests Per Second
RPS 테스트• apache ab
• http://httpd.apache.org/docs/2.4/programs/ab.html
• jmeter
• http://jmeter.apache.org/
• nGrinder
• http://www.nhnopensource.org/ngrinder/
$ ab -c 100 -n 1000 http://yourdomain
결정 요소• 서버 사양
• OS 종류
• 웹 서버 종류
• DB 서버 종류
• PHP 버전 & extensions
• CDN
• 등등등
BUT! 정답은 없음.
XE가 원래 느리잖아요…
XE문제..가 아니라 구동방식의 차이 !
XE vs 제로보드
• 예) 게시물 목록 페이지
• 제로보드
• DB에서 1 row씩 받으면서 출력
• XE
• DB에서 모든 rows를 받아놓고 출력
먼저,무엇이 문제인지 확인
모니터링• 서버 리소스 사용 상태
• CPU, Memory, Disk IO, Network…
• WebServer / Database 처리량
• 웹사이트
• YSlow
• 등등
웹서버 by goaccess
http://goaccess.prosoftcorp.com/
MySQL
• $ mysqladmin -u root -p status
• $ mysqladmin -u root -p processlist
• phpMyAdmin 이용
Cloud Service
http://newrelic.com
Graphite
http://graphite.wikidot.com/
모르겠어요.
그냥,
• 허용하는 범위 내에서 버전들을 올려보자!
• 이것만 해도 효과는 있다.
PHP 5.4 이상 !
https://blog.asmallorange.com/2013/08/php-roadmap-performance/
그리고 설정
• CPU 수, Memory 크기, Network 등에 따라
• Nginx, Apache, PHP, Database 등 설정 변경
• memcached, apc 등 cache layer 추가
PHP Session Storage
• PHP Session Storage를 Memcached로 교체
• Memcached 설치 > 구동
• CPU 사용량이 낮음
• php.ini 에서 설정
WebServer• Nginx vs Apache
• Keepalive on/off
• access logging off
• Rewrite Rule 고려(Apache)
• Kernel 튜닝
• ulimit, sysctl 등
PHP Opcode Cache
• Apc
• Xcache
• ZendOptimizer
• OPcache
http://phpjobinterview.blogspot.kr/2012/09/php-opcode-caches.html
mysqlnd
http://blog.felho.hu/what-is-new-in-php-53-part-3-mysqlnd.html
• PHP 전용으로 제작한 mysql driver.
Database
• MySQL vs MariaDB
• MyISAM vs innoDB
• table locking vs row level locking
MySQL
https://github.com/major/MySQLTuner-perl
XE Setting
• XE 1.7.4 !
• mysqli_innodb type
• object cache 활용
• 불필요한 XE extensions 검토
• page module인 경우 cache 사용
그래도 안되면,• Scale Up
• 메모리 추가
• CPU 업그레이드
• SSD
• Scale Out
• 웹서버와 DB서버 등으로 분리
고려사항• 웹서버 부하 분산 방법 ?
• DNS RR, L4, HAProxy
• 첨부파일은… 어디에???
• rsync, lrsync 등으로 웹서버간 파일 동기화
• 별도 파일 서버
• 로그인 세션 공유 방법 ?
• DB, memcached
XE 공식사이트 서버
2008
• Web Server : apache 1대
• DB Server : MySQL 1대
2010
• Web Server(vm) : apache 4대
• DB Server : CUBRID 1대
• File Server : storage cloud
2012
• Web Server(vm) : apache 4대
• DB Server : CUBRID 2대
• master / slave
• File Server : storage cloud
2014, 현재
• Web Server(vm) : Nginx 1~5대, PHP 5.5
• DB Server : MariaDB 2대
• File Server(vm) : NFS 2대