728x90
반응형
728x90
반응형
서버 프로세스를 관리하는 올바른 방법 웹 사이트 개발을 완료하고 서비스할 프로덕션을 서버에 배치할 때 고민하게 되는 문제 중 하나가 서버에서 띄워야 하는 여러 가지 프로세스들을 어떻게 띄울 것인가 하는 문제다. 프로세스라 죽으면 다시 띄우는 것도 물론 필요하다. init 올바른 방법은 OS의 init 시스템, 혹은 그와 유사한 대안 시스템을 사용하는 것이다. init은 유닉스에서 부팅될 때 첫번째로 만들어지는 프로세스다. 그래서 프로세스 번호가 1이고, 이후 모든 프로세스는 init 프로세스의 자손이고, 시스템이 부팅될 때 뜨는 모든 프로세스는 init 프로세스가 띄우게 된다. 그렇기에 서버에 프로레스를 띄워야 한다면 init에 맡기는 것이 자연스럽다. 하지만 init 시스템은 낡고 문제점이 있어 사라져..
Explain MySQL 서버가 어떠한 쿼리를 실행할 것인가, 즉 실행 계획이 무엇인지 알고 싶을 때 사용하는 기본적인 명령어 단순한 SELECT 구문, 옵티마이저는 INDEX 중 KEY 인덱스를 사용하여 데이터에 접근했다. 총 3946건의 행을 가져왔고 INDEX와 WHERE 조건을 사용했다. ID 쿼리 처리 순서 SELECT_TYPE SIMPLE : UNION이나 SUB-QUERY가 없는 단순한 SELECT문 PRIMARY : SUB-QUERY를 사용할 경우 SUB-QUERY의 외부에 있는 첫 번째 QUERY / UNION을 사용할 경우 UNION의 첫 번째 SELECT QUERY UNION : UNION QUERY에서 PRIMARY를 제외한 나머지 SELECT문 DEPENDENT UNION : UN..
Garbage Collector 정리되지 않은 메모리, 유효하지 않은 메모리 주소, 주소를 잃어버려 사용할 수 없는 메모리 등의 가비지를 메모리에서 해제시켜 다른 용도로 사용할 수 있게 해주는 프로그램 Stop The World GC 실행을 위해 JVM이 애플리케이션 실행을 멈추는 것이다. 즉, GC를 실행하는 스레드를 제외한 모든 스레드들이 작업을 멈춘다. (GC 튜닝은 이 STW 시간을 줄이는 것) 과정 Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다. (명시적 해제를 위해 System.gc() 사용 금지) 즉, 개발자가 프로그램 코드로 메모리를 명시적으로 해제하지 않기 때문에 GC가 필요 없는 객체를 찾아 지우는 역할을 한다. Young Generation (Monir GC..
Jackson Library Spring 개발을 하다 보면, 컨트롤러 text/html 형식이 아닌 데이터 전달 목적으로 사용하고 싶을 때가 있다. 물론, plain/text 형식으로 보내도 상관은 없지만, 보통 데이터 구조를 표현하는 방식인 XML 또는 JSON 형태로 보낸다. 데이터의 구조를 표현하는 이유는 데이터 표현도 있지만, 사실상 데이터를 사용하는 대상이 편하게 사용하기 위해서다. Jackson은 JSON 데이터 구조를 처리해주는 라이브러리입니다. Gradle // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind compile group: 'com.fasterxml.jackson.core', name:..
RabbitMQ AMQP를 따르는 오픈소스 Message Broker 사용 Gradle implementation 'org.springframework.boot:spring-boot-starter-amqp' Consumer spring-boot-starter-amqp에서 기본적인 커넥션을 연동해주기 때문에 Properties 설정만 추가하면 된다. spring: rabbitmq: host: IP port: 5672 username: UserName password: UserPassword Configuration @Configuration public class RabbitConfig { private static final String EXCHANGE_NAME = "jeonghoonb.topic"; p..
Gradle implementation('org.springframework.boot:spring-boot-starter-data-redis') implementation('redis.clients:jedis:2.9.0') https://spring.io/projects/spring-data-redis Spring Data Redis Spring Data Redis, part of the larger Spring Data family, provides easy configuration and access to Redis from Spring applications. It offers both low-level and high-level abstractions for interacting with the ..