OS 메모리 관리 swapping : 메모리에 올라와 있지만 사용하지 않는 프로세스들을 하드 디스크 등 보조 기억 장치 으로 이동시킨 후 다른 사용할 프로세스를 메모리에 올리는 방법 메모리(RAM)으로 불러들이는 작업을 Swap-In, 보조 기억 장치로 이동시키는 작업을 Swap-out swap 에는 큰 디스크 전송 시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 swapping 이 시작됨. 단편화 메모리가 사용 가능한 메모리가 충분히 존재 하지만 잘게 작은 조각들로 나뉘어져 할당이 불가능한 상태 1. 내부 단편화 프로세스가 사용하는 메모리 공간에 포함된 남은 부분 메모리 분할 자유공간이 10000B 있고 process A가 9998B 사용하게 되면 2B라는 차이가 존재하고 , 이 현상을 내부 ..
리눅스 장치, 파일 디스크립터 표준 입출력 장치 정보를 받아들이는 장치 : 표준 입력 장치 정보를 출력하는 장치 : 표준 출력 장치 오류 메시지를 내보내는 장치 : 표준 오류 장치 파일 디스크립터 파일 디스크립터 이름 정의 0 stdin 표준 입력 1 stdout 표준 출력 2 stderr 표준 오류 리다이렉션 표준 입출력 장치를 파일로 바꾸는 것 출력 리다이렉션 명령어에 '>' 은 기존 파일의 내용을 삭제하고 새로 결과를 저장할 때 ex) cat > file2.txt 파일이름 명령 > 파일이름 명령 1에서 1은 파일 디스크립터 1 을 의미. 생략 가능 쉘은 '>'을 사용한 리다이렉션에서 지정한 파일의 이름이 없으면 파일을 생성하여 명령의 수행 결과를 저장. 지정한 이름의 파일이 있으면 이전의 내용은 없..
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP : 단일 책임 원칙(single responsibility principle) OCP : 개방-폐쇄 원칙(Open/Closed principle) LSP : 리스코프 치환 원칙(Liskov substitution priciple) ISP : 인터페이스 분리 원칙(Interface segregation principle) DIP : 의존관계 역전 원칙(Dependency inversion principle) SRP 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야한다. 하나의 책임이라는 것은 모호하다. 1. 클 수 있고, 작을 수 있다. 2. 문맥과 상황에 따라 다르다.중요한 기준은 변경이다. 변경이 있을 때 ..
CentOS 6.10 버전을 기준으로 작성했습니다. 서비스 배포시 logs_$date 로 나오는 로그 백업 폴더가 쌓이고 쌓여서 서버용량을 가득 채워서 스케줄러를 통해서 매일 오전 5시에 bzip 으로 압축하는 스케줄러를 작성했습니다. 1. 스케줄러 리스트 crontabl -l 45 19 * * * /home/user/test.sh 17 20 * * * /home/user/test2.sh현재 스케줄러가 어떤게 돌아가고 있는지 확인 가능 2. 스케줄러 등록할 스크립트 생성 및 작성 cd /home/user sudo vi logs_bzip.sh #실행 권한 sudo chmod +x logs_bzip.sh#!/bin/sh # crontab every thursday am 5:00 이런식으로 주석으로 스케줄러 ..
Fluentd 에서 http로 다른 서버로 로그 전송 후 로그를 받은 서버에서 log analytics로 전송하도록 만들었다. 로그 전송 서버 @type tail encoding utf-8 @type regexp expression /^\[(?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]\[(?.*?)\] \[(?.*?)\] (?.*?)$/ path /%Y-%m-%d.txt pos_file /tmp/fluent/log_file.pos tag test.t1 @type record_modifier char_encoding utf-8 host_ip "#{Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }.ip_addr..
Linux에는 signal 이 있다. kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMI..
elasticsearch apm 을 사용해서 어플리케이션의 상태를 알아보려고 한다. 이 글에서 사용하는 elasticsearch 의 버전은 7.11.1 이다. elasticsearch 7.11.1 과 호환 되는 elastic 소프트웨어는 여기 에 자세하게 나와 있다. 사용중인 OS의 버전에 맞게 호환되는 elasticsearch, kibana, apm 등이 있으니 다른 버전으로 할 때 위 페이지에서 확인 후 설치 ElasticDocs 자세한 내용은 여기 ElasticDocs 에서 확인하면 된다. elasticsearch 와 kibana , apm server 는 동일한 버전으로 맞춰준다. 환경 centos 8 jdk 1.7 버전 정보 elasticsearch 7.11.1 kibana 7.11.1 apm-..
Fluentd 를 실제 서버에 올려놓고 로그 수집을 기다리던 중에 중국어 와 json 로그를 전송하던 중에 \xE6 from ASCII-8BIT to UTF-8 에러가 나와서 로그가 정상적으로 발송되지 않는 현상이 일어났다. 이러한 에러는 서버에서 보내는 로그 형식이 UTF-8 인데 인코딩이 잘못되는 경우이다. 지금 회사의 경우에는 대만 회사여서 중국어가 로그에 포함되는 경우가 있는데 이 때 발생하는 에러 같다. 그래서 태그 안에서 tail 밑에 encoding UTF8을 적어서 하면 중국어는 깨져서 나와도 정상적으로 로그가 발송되는 것이 확인이 되었다. @type tail encoding utf8 ... 문제는 json 형식으로 보낼 때 \xE6 에러가 아닌 \xC 계열로 예외가 발생하는데 이 때는 f..
Comment