메모리 누구 탐지

Posted 2012. 12. 28. 12:25

#include <crtdbg.h>        // head 추가

 

void main()

{

char* p = new char[20];        // 메모리 할당

_CrtDumpMemoryLeaks();      // 메모리릭 탐지

}

 

브레이크 포인터를 _Crt에 걸고 보면 출력에

 

'MemLeakDebug.exe' : exe ' : Loaded 'C:\win................

'MemLeakDebug.exe' : exe ' : Loaded 'C:\win................

Detexted memory leaks!

Dumping objects ->

{50} normal block at 0x00392892, 20bytes long

.......

.............

어쩌고 뜬다.

 

요게 메모리 누수 발견이라고 알려주는 거다.

여기서 볼건 {50} 이다. {50}이라는 메모리 참조값을 가지는 지점이 해제되지 않았다는 것이다.

{50}을 찾으면 된다.

 

void main()

{

_CrtSetBreakAlloc(50);            // 메모리 할당받는 곳 윗줄에 추가 해주자.

char* p = new char[20];

_CrtDumpMemoryLeaks();

}

그러면 {50} 메모리 지점을 생성하려고 할 때 에러창이 뜨면서 빠염..

 

 

주의 할 점은

정상적으로 메모리해제를 하게 되더라도 위치가 _CrtDumpMemoryLeaks(); 밑에서 하게 되면

메모리 누수로 감지 하게 된다.

ex) char* p = new char[20];

_CrtDumpMemoryLeaks();

delete [] p;

일때 누수로 감지하게 됨.

 

_CrtDumpMemoryLeaks(); 위에서 하던지 아니면 함수 밖에서 따로 하던지 위치를 잘 봐야 한다.

저자 및 목차

Posted 2012. 12. 27. 16:26

eBook Only & DRM-free

대용량 서버 구축을 위한 분산 캐시의 이해!

이 책은 대용량 서비스의 성능을 쉽게 높여줄 수 있는 분산 캐시 기술인 Memcached와 Redis를 소개한다. Memcached와 Redis의 핵심내용을 담았으며, Short URL 실습을 통해서 관련 내용을 쉽게 이해할 수 있다.

대상 독자
  • 대용량 서비스를 설계하고 싶은 초보자
  • 분산 캐시를 대용량 서비스에 적용해 보고 싶은 실무자
도서 특징(출판사 리뷰)

간단한 Short URL 실습으로 이해하는 분산 캐시 기술
현재 웹 서비스를 비롯한 다양한 SNS 서비스로 대용량 서비스가 증가하고 있으며, 이로 인해 대용량 처리 기술에 대한 관심이 높아지고 있다. 이 책에서 소개하는 분산 캐시 기술인 Memcached와 Redis는 대용량 서비스의 성능을 쉽게 높여줄 수 있는 기술로써, 앞으로 관심이 집중될 기술 중 하나다. 이 책에서 소개하는 분산 캐시 기술들을 이해하면, 대용량 서버를 구축하는 데 많은 도움이 될 것이다.

맨위로

저자소개

[지은이] 강대명
빅데이터와 클라우드 등에 관심이 많은 개발자입니다. 파이널데이터에서 디지털 포렌식을, NHN에서 메일 서비스를 개발하였습니다. 현재는 모든 걸 정리하고 더 나은 미래를 만들기 위해서 필리핀에서 영어를 공부하고 있습니다.


맨위로

목차

1장. 분산 캐시가 왜 필요할까?
  01. 대규모 트래픽 처리의 성능 이슈
  02. 서비스의 시작, 하나의 DB에서 모두 처리하기
  03. Read가 많을 경우 Read와 Write를 분리하자
  04. Write 증가하면 파티셔닝하자

2장. 분산 캐시를 구현하는 핵심 기술: Consistent Hashing
  01. Consistent Hashing

3장. 분산 캐시의 활용
  01. Memcached
  02. Redis

4장. 분산 캐시 솔루션을 사용할 때 주의할 점
  01. 메모리 사용량에 주의하자
  02. 성능이 갑자기 떨어지면 메모리 스와핑을 의심하자
  03. Memcached와 Redis의 flush는 어떻게 다를까?

5장. Redis를 이용한 간단한 Short URL 서비스 구축하기
  01. Read를 Redis로 대체하자
  02. Short URL 생성 로직도 Redis로 대체하자
  03. Redis의 Sorted Set을 이용한 인기 URL 찾아보기

NoSQL 이란.. ?

Posted 2012. 12. 27. 16:14

NoSQL은 not only SQL 이라고도 한다.

(SQL이 아니다.. SQL 만은 아니다)

 

기본적으로 데이터베이스는 계층형->네트워크형->관계형으로 발전해 왔으며 최근 대용량 데이터

처리가 이슈되면서 관계형 데이터 베이스의 장단점의 보완 및 활용을 위해 no-sql에 대한 관심이 높아

지고 있다.

 

관계형 데이터 베이스의 장점

1. 데이터의 일관성을 보증 할 수 있다. ( 트랜잭션 )

2. 정규화를 전제로 하고 있기 때문에 갱신 시의 비용이 적제 든다.

3. 조인이나 복잡한 검색 조건으로 검색이 가능하다.

4. 참고 자료나 노하우가 많다.( 검증되고 성숙된 기술 )

 

관계령 데이터 베이스의 단점

1. 대량의 데이터 입력 처리 시 성능 이슈

2. 갱신이 발생한 테이블의 인덱스 생성이나 스키마 변경에 대한 처리 이슈

3. 컬럼을 확실히 정의하기 어려운 경우에 대한 처리 이슈

4. 단순히 빨리 결과를 조회하고자 할때의 성능 이슈

 

일반적으로 데이터 베이스 저장소의 처리 성능을 확장하기 위한 노력은 2가지로 분류 될 수 있다.

스케일업과 스케일 아웃이다.

 

스케일 업 방식

-> 사용중인 서버 자체를 고성능으로 바꿔서 처리능력을 향상시키는 방법

-> 말 그대로 장비 업그래이드 이기에 비용이 많이 들지만 소스에 대한 변경이 없다.

 

스케일 아웃 방식

-> 저가의 여러 장비를 사용하여 처리 능력을 향상 시킴

-> 저가의 비용으로도 원하는 성능을 확보 할 수 있지만 소스 수정이 필요하다

-> no-sql 에서 제공하는 방식

 

NO-SQL 데이터 베이스

조인 연산이 불가능 하며, 각 데이터가 독립적으로 설계 되어 있어 데이터를 여러 서버에 분산하여

작업하는 방식. 데이터를 여러 서버에 분산하는 것을 통하여 각 서버에서 처리하는 데이터의 양이 줄고

따라서 대량의 데이터의 입출력이 있어도 처리가 쉬워진다.

일반적으로 관계형 데이터 베이스의 경우에는 고가의 장비를 마스터-슬래이브 혹은 액티브-스탠바이

형태로 구성하여 서비스하고 있는 경우가 많으니 NO-SQL에서 이야기하는 구성은 이런 구성이 아닌

10대 혹은 100대 정도의 저가의 서버들을 클러스터링 혹은 샤팅 등의 방법으로 데이터를 쪼개서 나누어

처리하는 방식을 말한다.

 

*조인연산 이란?

하나 이상의 테이블에서 원하는 데이터를 뽑아내는것, 또는 두개의 데이터베이스 에서 동시에..

self -> 자신테이블 조인

inner -> join 할 테이블에 모두 데이터가 존재

outer -> join 할 어느한쪽에만 데이터가 존재해도 조회

cross join -> 양쪽 테이블 모두 참조해서 조회(속도낮음) 사용 안함

natural join -> 조인시에 사용 할 컬럼명이 하나로 유지되게 하는 조인

 

inner join

select 테이블명, 컬럼명..

from 테이블명 별칭

inner join 조인할 테이블명

on 조인조건 두개의 테이블을 연결하는 조건(관계)

 

NO-SQL 데이터 베이스 종류

NO-SQL 서버는 특징에 따라 3가지로 분류 될 수 있다.

1. 키-값 형 스토어

MEMCACHED

REDIS

2. 문서형 데이터 베이스

문서형이라 함은 여러가지 형태의 값들을 모아놓은 논리적 구조라고 표현 할 수 있다.

MONGODB

3. 컬럼형 데이터 베이스

관계형 데이터 베이스가 ROW단위로 데이터를 관리 하였다면, ROW가 아닌 컬럼 단위로 관리

하는 데이터 베이스를 말한다

HBASE

CASSANDRA

 

 

 

 

 

« PREV : 1 : ··· : 31 : 32 : 33 : 34 : 35 : 36 : 37 : ··· : 77 : NEXT »