원본 : http://mcpicdtl.blogspot.com/2010/04/memcached.html
Memcached 는 데이터를 메모리에 저장하며 분산처리가 가능하고 매우 빠른 성능을 지닌 캐시 입니다.
- libevent 설치
Memcached 는 libevent 를 필요로 하므로 먼저 설치를 진행하겠습니다.
http://monkey.org/~provos/libevent/
[root@yongobk ~]# cd /usr/local/src
[root@yongobk ~]# wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# tar xzvf libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# cd libevent-1.4.13-stable
[root@yongobk ~]# ./configure
[root@yongobk ~]# make ; make install
- Memcached 설치
아래 주소에서 최신버전을 다운로드 하고 설치를 진행합니다.
http://code.google.com/p/memcached/downloads/list
[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
[root@yongbok ~]# tar xzvf memcached-1.4.4.tar.gz
[root@yongbok ~]# cd memcached-1.4.4
[root@yongbok ~]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
[root@yongbok ~]# make ; make install
-> 추가
libevent 라이브러리를 memcached에 인식 시키기
[]# whereis libevent를 실행해서 라이브러리 위치 확인
[]# ldd /usr/local/memcached/bin/memcached
linux-gate.so.1 => (0x001b0000)
libevent-1.4.so.2 => /usr/local/lib/libevent-1.4.so.2 (0x007a3000) --이렇게 출력되어야 함. 만약 not found가 나오는 경우 아래 명령을 실행
libpthread.so.0 => /lib/libpthread.so.0 (0x00aa1000)
libc.so.6 => /lib/libc.so.6 (0x0092c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00c10000)
librt.so.1 => /lib/librt.so.1 (0x00b31000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00c37000)
/lib/ld-linux.so.2 (0x0090e000)
[]# echo "/usr/local/lib" >> /etc/ld.so.conf
[]# ldconfig /etc/ld.so.con
[]# ldd /usr/local/memcached/bin/memcached를 실행해서 라이브러리 로드를 확인한다.
- Memcached 실행 [출처] Memcached 설치 및 설정하기 그리고 주의 사항 |작성자 webman21
[root@yongbok ~]# /usr/local/memcached/bin/memcached -u nobody &
- Memcached PHP Extension 설치
http://pecl.php.net/package/memcache
[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@yongbok ~]# tar xzvf memcache-2.2.5.tgz
[root@yongbok ~]# cd memcache-2.2.5
[root@yongbok ~]# /usr/local/php5/bin/phpize
[root@yongbok ~]# ./configure --with-php-config=/usr/local/php5/bin/php-config
[root@yongbok ~]# make ; make install
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
php.ini 파일에 아래 내용 추가 합니다.
[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[memcache]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension=memcache.so
memcache.allow_failover=1
memcache.max_failover_attempts=100
memcache.chunk_size=32768
memcache.default_port=11211
- Apache 재시작
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart
- PHP 에 Memcached 가 적용 되어 있는지 확인
[root@yongbok ~]# echo '<?php phpinfo(); ?>' > /var/www/phpinfo.php
참고
http://www.ibm.com/developerworks/kr/library/os-php-fastapps3/
[세션을 메모리캐싱을 사용할 경우 주의 사항 ]
memcache를 사용하는 중 세션 정보가 유지되지 않아 그것을 해결하는데
많은 시간을 소비하였습니다. 저의 경우 모델자체를 세션에 저장하였었는데 그것의 데이터가 많아지면 저절로 기존 데이터가 사라지는 것이었습니다. 그래서 필요한 데이터만 저장하니까 그러한 문제는 발생되지 않았습니다
memcached + Session Database
- memcached의 원래 목적이 데이터베이스나 파일 데이터를 캐시하는 것임
- 세션 데이터를 데이터베이스로 만들어 넣고, session handler 부분에서 memcached를 호출하게 만들면 될 듯.
- 데이터베이스를 사용하는 안정성 + 세션 공유 문제 해결 + memcached에 의한 성능 향상까지 기대할 수 있지 않을까?
- 이 부분은, 좀더 생각해보면서, 방법을 찾아봐야 할 듯...
<- 곰곰히 생각해보니, 약간 부정적. 세션 데이터는 read보다는 update가 압도적으로 많음. 따라서, 캐시 효과는 작음.
Memcache & MySQL PHP Session Handler PHP code for session db + memcached
http://www.softwareprojects.com/resources/programming/t-php-sessionsave_handler-and-database-sessions-debu-1797.html
http://www.softwareprojects.com/resources/programming/t-memcached-for-php-sessions-1654.html
'OS > LINUX' 카테고리의 다른 글
원격 시스템 사용자 계정 정보 확인 - finger (0) | 2011.06.14 |
---|---|
php memcached 설치 & 연동 (0) | 2011.06.09 |
Linux서버에 Memcached 설치/실행 하기 (0) | 2011.06.09 |
리눅스의 런레벨(Run level) (0) | 2011.06.09 |
데몬의 종류, /etc/rc.d/init.d/ (0) | 2011.06.09 |