[입 개발] memcached slabclass 에 대해서…
오래간 만에 memcached 소슬 보니, 너무 잘못 이해하고 있거나 한것들이 많아서 처음부터 새로 보면서 이번에는 기록을 좀 남겨둘려고 합니다. 흔히들 memcached가 내부적으로 메모리를 어떻게 관리하는지 잘 아시지만, 코드 레벨로는 잘 모르실 수도 있기 때문에 그냥 정리합니다. 먼저 간단히 용어를 정리하자면… chunk_size : key +...
View Article[입 개발] Redis 가 멀티스레드라구요?
제가 항상 강조하는 것중에 Redis는 멀티스레드가 아니고 싱글 스레드이기 때문에 항상 사용에 주의해야 한다고 말을 드렸는데… 뭔가 깽기는게 있어서 ps -eLf 를 해보겟습니다. charsyam@charsyam-vm-main:~/redis$ ps -eLf | grep "redis" charsyam 31860 2920 31860 10 3 22:58...
View Article서버를 만드실때는 포트를 32768 이전으로 설정하세요.
최근에 아주 재미난(?) 일을 격었습니다. 서버를 시작시키는데, 아무리해도 서버가 뜨지 않는 것이었죠. 코드를 봐서는 아무런 문제가 없는데… 에러 로그는 “binding error: port is already used” 비슷한 오류가 발생하는 것이었습니다. netstat 으로 LISTEN 포트만 찾아봐서는… 제가 사용하는 포트를 찾을 수도 없었죠. 그런데...
View Article[입 개발:Redis] 나의 잘못된 오해, AOF
오늘 제대로 알고 있지 못한 부분에 대해서 한 독자님의 지적을 받고… AOF 관련 코드를 유심히, 그리고 좀 자세히 보게 되었습니다. 그런데… 음… 제가 완전히 잘못 알고 있던 부분이 있었습니다. 일단, 저는 Redis 의 AOF 가 DB의 WAL(Write ahead Log) 의 변종이라고 생각하고 있습니다. 먼저 Write ahead Log 에 대해서...
View Article[책 리뷰] 글로벌 소프트웨어를 말하다.
김익환님의 새 책인 “글로벌 소프트웨어를 말하다.”가 나왔다. 이전 작품인 “글로벌 소프트웨어를 꿈꾸다.” 라는 책을 꽤나 재미있게 읽은 편이라, 이번 책도 나름 집중해서 읽어 보게 되었다. 먼저 제목부터 생각해보면, “글로벌 소프트웨어” 라 멋지지 않은가? 제목에서 부터, 두 가지를 의미한다고 본다. 정말 글로벌한 소프트웨어를 만드는 것과 아직...
View Article[입 개발] org.apache.commons.codec.binary.Base64 decoding 동작에 관해서…
원래 개인적으로 삽질을 잘 하긴 하지만, 다시 최근에 큰 삽을 한번 팠습니다. 일단, 제가 자바를 잘 모르고, 초보다 보니, 남들 다 아는 지식을 모르고 넘어가는 경우가 많은데, 웬지 딴분들은 다 아셔서 이런일이 안생길것 같지만, 그냥 정리 차원에서 적어둡니다. 먼저 발생한 사건은 다음과 같습니다. 제 아이디인 charsyam 을 base64로 인코딩하면...
View Article[입 개발] RabbitMQ 설치하기 for CentOS 6.5
1. OS: Centos 6.5 2. 설치 – erlang(EPEL) -> wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo -> yum install erlang – rabbitmq ->...
View Article[입 개발] mecab 설치 with 은전한닢 (mac)
1. Download Files – 은전한닢 mecab & dic * https://bitbucket.org/eunjeon/mecab-ko * https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-1.6.1-20140515.tar.gz – python binding *...
View Article[입 개발] hadoop fs -tail [-f] URI 의 구현에 대해서
가끔씩 보면 tail -f 는 어떻게 동작할지에 대해서 궁금할때가 생깁니다. 얘가 무슨 수로… 뒤에를 계속 읽어올까? OS에서 제공하는 notify 관련 함수를 이용할까? 등의 별별 생각을 해보지만… 사실 백가지 생각이 불여일견입니다. hadoop cmd 는 각각의 command 클래스를 이용하는 CommandPattern 형태로 되어있습니다. 그러나 여기서...
View Article[입 개발] Redis Montoring 바보 되기…
오늘은 레디스 모니터링 중에 바보된 사연을 소개합니다. resque 나 sidekiq 같은 Redis를 Queue 로 사용하면서 겪은 삽질입니다.(개인적으로 둘 중에 하나를 추천하라면, sidekiq을 강력하게 추천합니다. 일단 sentinel과 연동된 failover 기능도 있고, resque가 lpop을 쓰는데 비해 sidekiq은 blpop을 써서...
View Article[입 개발] Redis Replication 이 실패하는 경우에 살펴 보아야 할 것들…
Redis 에서 Replication은 매우 핫 한 기능입니다. 다만, 메모리를 많이 쓰고 있는 경우에, Replication을 새로 걸어서 새로운 슬레이브를 추가하고 싶다면, Replication이 실패하는 경우가 생길 수 있습니다. 이 때, 어떤 것들을 보아야 할지… 알아보도록 하겠습니다. 1. 디스크의 여유 공간을 확인한다. -> 의외로 쉽게...
View Article[입 개발] Memcached 의 delete 에 대한 변천사…
최근에 twemproxy 에서 delete 가 제대로 안된다는 제보를 듣고, 코드를 살펴보길 시작했었는데요. 여기서 재미난 것을 발견해서 포스팅을 할려고 합니다.(오래간만의 포스팅이네요.) 먼저 최근의 memcached 소스의 delete 를 보면 다음과 같습니다. 코드를 보면 ntokens 가 3보다 클 경우, 뒤에 0이 나오거나 noreply 가...
View Article[Python] Simple Fabric 코드…
간단하게 Fabric 을 좀 봤는데… 좋네요. 다음과 같은 형태로 사용할 수 있는데, 다음과 같이 사용할 수 있습니다. sudo pip install fabric from fabric import tasks from fabric.state import env from fabric.api import run def uptime(): res =...
View Article[입 개발] Java.net.InetAddress 의 getLocalHost() 버그…
모 오픈소스를 실행시키다가 이상한 일이 생겨서, 버그인가 하고 보다가… 재미난 현상을 발견했습니다. Java.net.InetAddress 가 뭔가 이상한 결과를 넘겨주는 것입니다. 먼저… 간단한 소스를 보시죠. 테스트 프로그램은 다음과 같습니다.(결론부터 말하자면… 자바의 버그라고 할 수는 없습니다. ㅋㅋㅋ, DNS 변경으로 일단 원하는 결과가 나오는...
View Article2014 year review…
2014년을 돌이켜보면… 역시 가장 먼저 생각나고… 가장 중요한 건… 저희집의 새로운 식구이자, 축복이된 2세의 탄생입니다. 작년에는 뱃속에 생긴것이 최고의 일이었는데… 올해는 태어나고, 내년에는 잘 키우는 가장 큰 숙제이지 않을까 싶네요. 일단 올해의 키워드를 뽑아보자면, 애기를 제외하고… “애아빠의 삶”, “어떻게 애를 쉽게 보나?” 이런것들이...
View Article[입 개발] Redis Scan은 어떻게 동작할까? PART #1
처음부터 꾸준히 입만 놀리는 입개발(or 혀로그래머) CharSyam입니다. Redis의 기능중에 사람들이 쓰면 안되지만, 그 단맛에 끌려 어쩔 수 없이 치게 되는 명령이 KEYS 입니다. KEYS를 쓰는 순간, Redis는 이 명령을 처리하기 위해서 멈춰버립니다. 특히 트래픽이 많은 서버는… 이 KEYS 명령 하나에 많은 장애를 내게 됩니다. 그런데…...
View Article[입개발] Redis Scan은 어떻게 동작할까? PART #2
지난 Part #1 에서는 기본적인 Redis 의 Scan 동작과 테이블에 대해서 알아보았습니다. 이번에는 Redis Scan의 동작을 더 분석하기 위해서 기본적으로 Redis Hash Table의 Rehash 과 그 상황에서 Scan이 어떻게 동작하는지 알아보도록 하겠습니다. 먼저, Redis Hash Table의 Rehashing에 대해서 알아보도록...
View Article[입개발] Redis Scan은 어떻게 동작할까? PART #3(결)
PART #1, PART #2를 보면 결국 Redis Scan에서의 Cursor는 bucket 을 검색해야할 다음 index 값이라고 볼 수 있습니다. 그런데 실제로 실행시켜보면, 0, 1, 2 이렇게 증가하지 않고… 그 이유중에 하나는… 실제 Cursor 값이 다음 index의 reverse 값을 취하고 있기 때문입니다. 이걸 보기 전에 먼저 다시 한번...
View Article[입 개발] mosquitto build
mosquitto를 빌드하려고 하면 다음과 같은 에러가 발생할 수 있다. In file included from /home/charsyam/mosquitto-1.3.5/lib/logging_mosq.c:34:0: /home/charsyam/mosquitto-1.3.5/lib/mosquitto_internal.h:51:20: fatal error:...
View Article[입 개발] Scala 의 App Trait는 어떻게 동작하는가?
요새 스칼라 스터디를 하고 있는데…(스칼라 어려워요 흑흑흑, 전 스맹 T.T) 아주 여러가지 기능들이 있습니다. 그런데 첫 부분에 나오는 예제부터 머리속을 땡땡 때리는 경우가 있습니다. 간단한 예를 들자면, tuple의 파라매터가 22개 밖에 안되는 것은 실제로 tuple1 ~ tuple22 까지의 클래스가 있어서 처리된다는 것(tuple 은 다시...
View Article