HowTo, Linux

리눅스 공유 메모리

리눅스 공유 메모리는 아주 특별하고 중요합니다. 튜닝하는데 있어서 매우 중요한 요소이기 때문입니다. PostgreSQL 를 세팅할때에도 반드시 해줘야 하는 것이기에 정확하게 무엇인지 짚고 넘어가고자 아는 선에 적습니다. 페이지(Page) 가장 먼저 이야기할 것이 바로 페이지(Page) 입니다. 리눅스 시스템은 메모리를 가상으로 만들어 관리합니다. 웃기게도 리눅스 시스템에서 동작하는 프로그램들은 자신들이 시스템의 모든 메모리를 사용할 수 있다, 아니 그보다 더 많은 메모리를 사용할 수 있다라고 착각을 합니다. 이는 리눅스 시스템이 메모리를 가상화해서 프로그램들에게 보여주기 때문입니다. 문제는 리눅스 시스템은 가상화된 메모리들을 페이지(Page)라는 단위로 쪼개서 관리합니다. 특정 […]

HowTo, Linux

Phoronix 벤치마크 하기

이 글은 Phoronix 벤치마크 하기 에 대한 글  입니다. Phoronix 는 리눅스  벤치마크 테스트 툴 입니다. 이툴은 하드웨어 벤치마크와 소프트웨어 벤치마크를 모두 지원 합니다. 하드웨어 벤치마크는 새로운 사양의 서버가 들어왔을때에 CPU, RAM 대역폭, DISK I/O 성능들을 측정을 말하며 소프트웨어 벤치마크는 GCC 컴파일러, Kernel 성능들을 측정하는 것일 말합니다. Phoronix 의 성능측정 결과는 HTML 파일로 저장이 되며 https://openbenchmarking.org 자동으로 포스팅하는 기능이 있어 여러사람과 결과를 공유할 수 있습니다. Installation 설치환경은 CentOS 6 입니다. CentOS 의 경우에 Epel Yum 저장소를 추가하면 다음과 같이 Phoronix […]

HowTo, Linux

powerline vim 플러그인 설치

vim 를 사용하다보면 상태바에 많은 정보를 표시해주면 좋습니다. 이를 위해서 .vimrc 에다가 많은 설정을 사용해서 사용하지만 이것을 아예 Plugin으로 할 수 있도록 제공해주고 있습니다. Vundle 설치 vim 플로그인을 쉽게 설치하고 제거하기를 도와주는 플로그인 매니저중에 Vundle 를 사용하겠습니다. 설치는 다음과 같이 해줍니다.

설치는 이와같이 Vundle.vim 파일을 넣어주면 끝납니다. .vimrc 파일 수정 인터넷을 보면 다양하게 .vimrc 파일이 있습니다. 이 파일에는 어떤 플러그인을 할지도 정의되어 있습니다.

위의 내용에 필요한 것들을 하나씩 설치해야 합니다. vim Plugin 설치하기 이제 필요한 것들은 모두 되었습니다. […]

HowTo, Linux

Ubuntu 에 zsh 설정하기

zsh 을 이용하면 다양한 테마를 사용할 수 있고 이 테마들은 각 작업때마다 터미널에 관련 작업 상태들을 표시해주어 편리합니다. 예를들어 git 를 사용하시는 분들은 zsh 를 설치하고 테마를 설정해주면 터미널에 git 관련 상태들이 프롬프트에 표시되어 편리합니다. 이 문서는 Ubuntu 에 zsh 설정하기 에 관한 글 입니다. zsh 설치 Ubuntu 의 경우 zsh 설치는 아주 쉽습니다. apt-get 을 이용해서 설치합니다.

테마 설치 및 설정 테마는 각 계정당 해줍니다. 사용할 계정에 설정을 해주시면 됩니다.

마지막에 기본쉘을 바꾸기위해서 사용자 계정의 패스워드를 물어보고 […]

HowTo, Linux

AWS Kinesis

이 글은 AWS Kinesis 이 무엇인지에 대한 개념적인 글입니다. 다음의 자료를 기반으로 작성되었습니다. Introducing Amazon Kinesis (SlideShare) Introduction to Amazon Kinesis (Youtude) Big Data 인터넷의 발전으로 인해서 하루에도 계산하기 힘든 데이터가 쏟아집니다. 과거와는 달라진 이러한 환경을 우리는 간단히 Big Data 시대라고 하지요. 어찌보면 과거에도 Big Data 는 있었지만 요즘과 구별되는 것은 누구든지 Data 를 생산할 수 있다는데에 있습니다. 그러다보니  과거와는 다르게 쏟아지는 데이터를 분석해서 유의미한 데이터를 뽑아내는 기술이 필요하게 되었는데 이게 바로 Big Data 의 진정한 의미 중에 하나 입니다. 누구나 생산해내는 […]

DevOps, Linux

SaltStack 시작하기.

이 글은 SaltStack 시작하기 에 관한 글입니다. SaltStack 은 자동화 시스템 관리 프로그램입니다. 서버의 설정파일, 패키지 관리, 시스템 명령어등을 한번에 많은 서버에 할 수 있습니다. Chef, Puppet 등과 동일합니다. 단지 이 녀석은 Python 으로 개발이 되었고 역활을 지시하는 sls 파일 문법이 YAML 이며 Jina Template 을 이용해서 sls 에 프로그래밍을 할 수 있습니다. SaltStack 은 서버와 클라이언트로 모델입니다. 서버역활을 담당하는 SaltStack 을 마스터(Master)라고 하고 클라이언트 역활을 담당하는 SaltStack 을 하녀(Minion)이라고 부릅니다. 마스터의 경우 파일 전송을 할 수 있게 파일서버역활도 같이 […]

HowTo, Linux

서로 다른 RabbitMQ 버전으로 Cluster 구성 테스트.

RabbitMQ 는 인기있는 메시지 브로커 입니다. 비동기 메시지를 다루는데 있어서 RabbitMQ 는 많이 사용되어 집니다. 거기다 RabbitMQ 는 여러 RabbitMQ 를 하나로 묶는 Cluster 기능을 제공합니다. 그런데, 언제나 그렇지만, 서로다른 RabbitMQ 버전끼리 하나로 묶을 수 있을까하는 의문이 들었습니다. 테스트를 해보았습니다. 환경 세팅 master, slave 라 불리는 2개의 서버를 준비했고 각각 3.5.4 버전과 3.1.5 버전을 설치했습니다. 모든 버전은 Epel 저장소에서 RPM으로 설치를 했습니다. 그리고 다음과 같이 RabbitMQ 를 설정했습니다. master 의 쿠키 파일를(/var/lib/rabbitmq/.erlang.cookie) slave에 복사했습니다. 양쪽모두 호스트네임을 /etc/rabbitmq/rabbitmq-env.conf 에 지정해줬습니다.

[…]

HowTo, Linux

RabbitMQ 통계 보기.

RabbitMQ 는 AMQP 를 지원하는 Message Queue 프로그램 입니다. 여러 솔루션에서 함께 쓰이고 있는 매우 인기있는 프로그램입니다. 언제나 그렇지만 RabbitMQ 또한 각종 통계자료를 제공 합니다. 이를 통해서 RabbitMQ 건강상태를 체크할 수 있습니다. 이 문서는 이에 대해 간략히 다룹니다. 통계정보를 보는 방법으로는 CLI 를 통해서 볼 수도 있지만, 웹을 통해서 GUI 환경에서 쉽게 볼수 있습니다. 이를 위해서는 GUI Management Plugin 을 활성화해줘야 합니다.

이렇게 하면 웹브라우저를 통해서 RabbitMQ 를 관리할 수 있으며, 간략한 통계정보를 볼 수 있습니다. 이 통계정보를 이해하기 […]

HowTo, Linux

git 파일 삭제후 복구.

git 를 사용하다 보면 local 저장소에서 실수로 파일을 삭제하는 실수를 저지를 수 있다. 이때 파일을 되살린다고 ‘git pull’ 이나 ‘git fetch’를 해봐도 나오는 메시지는 최신판(Already up-to-date)라는 것이다. 이를 이용하는 경우에 어떻게 해야하나? 먼저 삭제한 디렉토리로 이동한다. 그리고 다음과 같이 입력을하면 삭제한 파일 목록을 얻을 수 있다.

사실 삭제된 파일은 다시 checkout 받으면 된다. 다음과 같이 말이다.

리눅스를 잘 다루는 사람이라면 이것을 한번에 할수 있다.

     

Database, PostgreSQL

Better VACCUM FULL For PostgreSQL 9.0

원문:https://wiki.postgresql.org/wiki/What’s_new_in_PostgreSQL_9.0#Better_VACUUM_FULL 지금까지 VACUUM FULL 은 매우 느렸다. 이 구문(Statement)는 테이블로부터 빈공간을 확보하고 그것의 크기(Size)를 줄였지만 VACUUM 은 만족할만큼 빠르게 동작하지 않았다. 이것이 느린 이유는 동작 방법에 문제가 있었기 때문이다. 레코드를 그들의 소스블럭으로부터 테이블에 시작점에 가까운 블럭으로 하나하나씩 읽어서 옮겼었다. 그리고 테이블에 끝이 빈공간이면 그 부분을 지웠다. 전략적으로 이러한 방법은 매우 비효율적(Inefficient) 이다. 레코드를 하나하나씩 옮기는 것은 랜덤 I/O를 발생시킨다. 게다가, 인덱스(Index)를 재구성하는 동안에 그것을 유지하고, 더 많은 비용이 들어가는, 인덱스는 파편화된다. 이럴바에는 VACUUM FULL이 다 끝나고 나서 재인덱스(reindex)를 하는 것이 […]