- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[DOCKER] Docker restart 옵션
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다. 이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다. restart option docker run -d --restart {option} redis no Don't automatically restart the container (default) on-failure[:max-retries] container가 정상적으로 종료되지 않은 경우(exit code가 0이..
-
[Nginx] nginx keepalive 설정(client-nginx-tomcat)
keepalive란서버와 클라이언트가 맺은 연결을 유지하는 방식을 의미HTTP 트랜잭션이 완료된 후에도 클라이언트와 서버 간의 TCP 연결을 열어둔다.클라이언트가 다른 HTTP 트랜잭션을 수행해야 하는 경우 새 TCP 연결을 만드는 대신 유휴 Keepalive 연결을 사용한다. 장점3-way handshacking overhead 줄임 단점메모리 사용 증가 - connection을 열고 대기 server - keepalive 설정https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeoutclient -nginx 사이에 keepalive 설정 기본값 75s해당 값에 0을 설정하면 keepalive 기능을 사용하지 않는다keepali..
-
[Nginx] Linux logrotate 설정 및 실행 확인
logrotate로그 파일을 주기적으로 압축/보관/삭제하는 유틸리티/etc/logrotate.conf에서 기본 설정을 관리하지만, 개별 서비스(Nginx 등)의 설정은 /etc/logrotate.d/ 디렉터리에 저장-> 로그 파일이 일정 크기를 넘거나 일정 기간이 지나면 새로운 파일로 교체하면서 기존 로그를 보관하는 방식 설정 존재 유무 체크cat /etc/logrotate.confcat /etc/logrotate.d/nginx logrotate 설정 /etc/logrotate.d/nginx 파일 /home/test/abc/logs/nginx/*.log # log 파일 위치 지정 /home/test/abc/logs/nginx/*/*.log { create 660 adm adm # 새 로그 ..
-
[Server] CURL - 사용법 & 옵션
로컬에서 API를 간단하게 테스트하는 경우에 Postman, curl을 자주 사용하는데 curl에 다양한 옵션들을 한 번씩 사용해 보고 정리해 두자.curl(Client URL)터미널에서 URL을 통해 데이터를 전송하거나 받아올 수 있는 커맨드라인 도구-> SHELL(커맨드라인 환경)에서 REST API(http) 테스트를 위해서 curl 명령어를 이용 기본 호출 curl localhost:8080/actuator/health아무런 옵션 없이 타겟 url만 넣어서 호출하는 경우 적용되는 기본 옵션 정보 HTTP 메서드 -> GETHTTP 버전 -> HTTP/1.1 Content-Type 헤더 -> 없음 주요 옵션 주로 사용하는 옵션들을 정리해 보았다.필자 기준 많이 사용하는 옵션들이 상단에 존재한다. ..
-
[Nginx] Linux 서비스 등록(systemd)
서버이전을 진행하면 nginx나 java application은 linux의 서비스로 등록하는 작업을 반복적으로 하게 된다.그럴 때마다 찾아서 볼 수 있도록 정리해 보자. linux 서비스 등록 or 관리 systemd라는 프로세스가 서비스를 감시, 시작, 중지를 담당보통 systemctl 명령어로 관리용어의미systemdLinux의 기본 서비스 관리자 (init 시스템).시스템 부팅 시 자동으로 시작되고, 서비스(데몬)를 관리해 줌.systemctlsystemd를 조작하는 명령어 (예: systemctl start nginx)서비스 등록systemd에 프로그램을 등록해서 자동으로 실행되게 하는 것(/etc/systemd/system/*.service 파일 만들기)서비스 등록의 장점서버 부팅 시 자동으로..
최신 글
-
[네티인액션] 3장 네티 컴포넌트와 설계
1장에서는 자바 고성능 네트워크 프로그래밍의 역사와 기술적 사항2장에서는 논의의 폭을 애플리케이션 개발로 넓혔다. 간단한 클라이언트와 서버를 만드는 과정에서 부트스트랩, ChannelHandler를 직접 체험 이 내용을 바탕으로 클래스 라이브러리와 프레임워크라는 두 가지 다른 관점으로 네티를 살펴보자.넓게 보면, 네티는 기술과 아키텍처라고 광범위하게 이야기하는 두 관심 영역의 문제를 모두 해결한다.1. 자바 NIO 기반의 비동기식 이벤트 기반 구현을 이용해 고부하 조건에서도 애플리케이션 성능과 확장성을 최대한 보장2. 네티는 애플리케이션 논리를 네트워크 레이어로부터 분리하는 다양한 설계 패턴을 활용해 코드의 테스트 용이성, 모듈성, 재사용성을 극대화해 개발을 간소화 Channel, EventLoop,..
-
[네티인액션] 2장 첫 번째 네티 애플리케이션(1):클라이언트
클라이언트를 작성하려면 앞서 버서에서 작성한 두 주요 코드(비즈니스 논리와 부트스트랩)를 다시 작성해야 한다. ChannelHandler를 이용한 클라이언트 논리 구현 서버와 비슷하게 클라이언트에도 데이터를 처리할 ChannelInboundHandler가 있다. 이번 예제에서는 SimpleChannelInboundHandler클래스를 확장해 보자.channelActive() : 서버에 대한 연결이 만들어지면 호출channelRead0() : 서버로부터 메시지를 수신하면 호출exceptionCaught() : 처리 중에 예외가 발생하면 호출 @Sharablepublic class EchoClientHandler extends SimpleChannelInboundHandler { @Override ..
-
[네티인액션] 2장 첫 번째 네티 애플리케이션(1):서버
네티 클라이언트/서버 개요Echo 클라이언트와 서버 간의 상호작용을 간단하게 구현하여 기본적인 구조를 학습해 보자. Echo 서버모든 네티 서버의 필요 항목하나 이상의 ChannelHandler : 클라이언트로부터 받은 데이터를 서버 측에서 처리하는 비즈니스 논리를 구현부트스트랩 : 서버를 구성하는 시동 코드. 최소한 서버가 연결 요청을 수신하는 포트를 서버와 바인딩하는 코드 ChannelHandler와 비즈니스 논리 Echo 서버는 들어오는 메시지에 반응해야 하므로 인바운드 이벤트에 반응하는 메서드가 정의된 ChannelInboundHandler 인터페이스를 구현해야 한다. 이 애플리케이션은 소수의 메서드를 이용하는 간단한 애플리케이션이므로 ChannelInboundHandler의 기본 구현을 제공..
-
[Linux] 대규모 트래픽 대비 - 서버 설정
서버 이전 작업을 진행하는 경우 신규로 발급받은 서버에 linux 관련 설정을 새로 세팅해야 한다.이때 놓치지 않고 설정해야 하는 서버 설정들을 정리해 보자. 커널 설정net.ipv4.ip_forward = 1의미 / 동작: 서버가 들어온 패킷을 다른 네트워크로 전달하도록 허용. 커널이 라우터처럼 동작.왜 필요한가: Docker, Kubernetes, NAT, VPN 등에서 패킷 포워딩 필수. 컨테이너 간 통신, 포트포워딩 등이 정상 동작하려면 필요.net.ipv4.ip_local_port_range = 1024 65535의미 / 동작: outbound 연결 시 사용할 수 있는 임시 포트(ephemeral port) 범위를 지정.왜 필요한가: reverse proxy, API 서버, 대량 outbou..
-
[Redis] 선착순 이벤트 시스템 활용
제한된 쿠폰수를 선착순으로 제공하는 시스템이 필요할 때 어떻게 문제없이 이벤트를 진행해야 하는지에 대한 고민은 기존에 많이 이루어졌을 것이다.그중에 잘 정리된 자료가 있는 것으로 보여 해당 내용을 정리해 보자. https://youtu.be/MTSn93rNPPE?si=9prxYvuWHdU3pey9https://velog.io/@hgs-study/redis-sorted-set redis sorted set우선 부하가 몰리는 부분을 해결해야 한다.이를 위해 모든 부하를 한 번에 서비스에서 받지 않고 앞단에 버퍼 역할을 하는 redis를 둔다. 레디스의 자료구조 중에 sorted set을 사용하면 버퍼 역할을 하면서도 선착순으로 들어온 순서대로 정렬을 해주는 역할을 한다. (https://kkang-joo.t..