메모리

· Redis
Redis는 싱글 스레드 Redis를 사용하다 보면 장애가 발생하거나 성능이 예측한대로 나오지 않는 경우가 종종 발생합니다. 이들은 모두 Redis가 싱글 스레드라는 것을 잊어버리거나 모르고 있기 때문에 발생하는 현상입니다. 싱글 스레드인 Redis는 시간이 오래 걸리는 명령어를 호출하면 그 명령어를 처리하는 동안 다른 클라이언트의 요청을 처리할 수가 없습니다. 이로인한 실무에서 흔히 하는 실수의 사례를 살펴보겠습니다. 1. 서버에서는 Keys 명령어를 사용하지 말자. Redis 명령어 중에, 현재 서버에 저장된 Key 목록을 볼 수 있는 keys 명령어가 있습니다. 모든 Key를 가져올 때는 "*"를 사용하고 특정한 문자가 들어가 있는 Key를 가져올때는 "*문자*"를 사용합니다. 127.0.0.1:6..
컨테이너 자원 할당 제한 컨테이너를 생성하는 run, create 명령어에서 컨테이너의 자원 할당량을 조정하도록 옵션을 입력할 수 있다. 옵션을 설정하지 않으면 자원을 무제한으로 사용하기 때문에 호스트에 무리가 가게 되면 다른 컨테이너까지 영향이 미칠 수 있기 때문에 설정하는 것이 좋다. docker inspect 명령어를 사용해 현재 컨테이너의 설정된 자원 제한을 확인할 수 있다. $ docker inspect mysql ... "HostConfig": { ... "KernelMemory": 0, "KernelMemoryTCP": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": null, "Pi..
환경 변수 API 구현 예시 이번에는 d5라고 하는 디렉터리를 만들고 Dockerfile과 my_daemon이라고 하는 2개 파일을 바탕으로 컨테이너를 개발할 것이다. FROM을 사용해 베이스 이미지로 apline을 지정했다. RUN에서는 apk add bash로 bash 셸을 추가했다. ADD로는 셸 스크립트 my_daemon을 루트 경로에 배치하고 CMD로 컨테이너가 기동할 떄 실행하게 했다. my_daemon은 컨테이너가 기동되면 실행되는 셸 스크립트다. 보통 자바나 파이썬으로 작성한 코드를 컨테이너로 만드는 경우가 많은데 이번에는 간단한 예를 위해 셸 스크립트를 사용했다. 환경 변수 INTERVAL이 없는 경우에는 3초 단위로 현재 시간과 카운트를 표준 출력(STDOUT)에 출력한다. 환경 변수 ..
· Java
JVM(Java Virtual Machine)이란? 자바를 실행하기 위한 가상 기계(컴퓨터) 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다. 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java 애플리케이션은 JVM을 한 번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다. 하지만 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차가 많이 감소한다. JVM의 메모리 구조 응용 프로그램이 실행되면 JVM은 시스템으로부터 프로그램을 수행하..
beekei
'메모리' 태그의 글 목록