일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- laravel
- MySQL
- Git
- JVM
- Web Server
- jsp
- IntelliJ
- elasticsearch
- Spring Batch
- ReactJS
- javascript
- Spring
- 요리
- linux
- 맛집
- ubuntu
- Gradle
- it
- tool
- php
- jenkins
- springboot
- devops
- db
- Oracle
- redis
- Spring Boot
- Design Patterns
- java
- AWS
- Today
- Total
목록Infra (195)
아무거나
평소 대략적으로만 이해하고있던 배포전략 개념에 관하여 좀 더 자세하게 정리하고자 포스팅을 작성하게 되었다. 배포전략(Rolling, Blue/Green, Canary) Rolling Rolling 배포는 서버를 한 대씩 구 버전에서 새 버전으로 교체해가는 전략이다. 서비스 중인 서버 한 대를 제외시키고 그 자리에 새 버전의 서버를 추가한다. 이렇게 구 버전에서 새 버전으로 트래픽을 점진적으로 전환한다. 이와 같은 방식은 서버 수의 제약이 있을 경우 유용하나 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다. Blue/Green Blue/Green 배포는 신 버전을 배포하고 일제히 전환하여 모든 연결을 신 버전을 바라보게 하는 전략이다. 구 버전, 신 버전 서버를 동시에 나란히 ..
homebrew 업데이트 및 java 설치 $ brew update $ brew tap adoptopenjdk/openjdk $ brew install adoptopenjdk11 --cask // 설치된 자바 버전과 경로를 확인 $ /usr/libexec/java_home -V // 환경변수 등록 (~/.bash_profile파일에 다음을 추가한다.) export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home" export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home" alias java8='export JAVA..
java-example-code/sample-multi-module at master · bkjeon1614/java-example-code (github.com) Project 최상위 경로에 Codedeploy로 배포에 사용할 appspec_api.yml 추가 (appspec_{원하는명칭}.yaml) 및 scripts/base-api 폴더 생성 후 deploy-before.sh 파일 생성 [appspec_api.yml] version: 0.0 os: linux files: - source: / destination: /home/ec2-user/build/ permissions: - object: / pattern: "**" owner: ec2-user group: ec2-user hooks: Befor..
AWS RDS MySQL VS Aurora Aurora란 AWS가 MySQL과 Postgresql을 호환해서 만든 RDBMS이다. 둘의 가장 큰 차이점은 Storage이며 Aurora는 Shared Storage를 사용하며 MySQL은 Binary Log 기반의 Replication 기반이 아닌 Storage와 Page 기반의 Replication을 사용 Aurora 장점 기본적으로 MySQL 및 PostresSQL 호환 가능하다. 스토리지 용량이 64TB까지 자동 증가된다. (RDS MySQL은 EBS 볼륨 할당을 직접 해야함) 3개의 AZ (가용 영역)에 대해서 6방향 복제를 지원한다 (6개의 스토리지 지원) Read Replica (읽기 전용 복제본)을 15개까지 지원한다 Read Replica에 ..
워드프레스 도커 이미지 생성 도커에서 제공하는 워드프레스와 MySQL은 따로 분리된 형태로 동작하게 하므로 이 부분을 하나의 컨테이너에서 워드프레스와 MySQL을 동작시킬 수 있도록 바꿔보자. PHP와 DB가 공존하는 환경을 찾는다. XAMPP를 사용 (https://hub.docker.com/r/tomsik68/xampp) XAMPP 기반 워드프레스 컨테이너 생성 // XAMPP 환경 구성 $ sudo docker run --name WP -p 80:80 -d tomsik68/xampp // 워드프레스 설치 (워드 프레스 사이트에서 링크주소복사하여 wget으로 받자) $ wget https://ko.wordpress.org/latest-ko_KR.tar.gz // 갑자기 속도가 느려지는 경우 계속해서 ..
tcp_max_tw_buckets 값 설정 tcp_max_tw_buckets 는 시스템이 동시에 가질 수 있는 timewait 소켓의 최대 갯수 해당 값을 초과하면 time-wait 소켓을 즉시 파괴하고 경고 출력 기본값 보다 낮추면 안됨 현재 수치 확인 명령 $ cat /proc/sys/net/ipv4/tcp_max_tw_buckets 적용 // 적용 $ echo "net.ipv4.tcp_max_tw_buckets=2000000" >> /etc/sysctl.conf // 영구적용시 하기 명령 실행 $ sysctl -p Soft Limit, Hard Limit 영구 설정 일반적으론 soft limit과 hard limit을 동일하게 적용한다 [/etc/security/limits.conf] ... # "..
Nginx Keepalive TIME_WAIT 소켓이 쌓이는 근본적인 문제 해결 방법 Ngnix와 웹 애플리케이션 서버(Tomcat + Spring Boot) 간의 요청이므로 TCP Handshake를 한다. 하지만 빈번하게 통신이 발생하면 응답시간에 대한 레이턴시가 발생할 수 있다. 즉, 모든 요청에 TCP Handshake가 발생하므로 불필요한 리소스 낭비가 생기므로 keepalive가 필요함 keepalive란 한번 맺은 세션을 요청이 끝나더라도 유지해주는 기능 -> 매 요청마다 새로운 세션을 만들지 않고, 지정된 숫자만큼의 세션을 연결한 뒤 그 연결을 통해 요청을 처리 설정적용 [/etc/ngnix/nginx.conf] ... map $http_upgrade $connection_upgrade {..
커널 파라미터 튜닝 예시: Nginx가 9091 포트로 연결하는 과정에서 문제가 발생(하나의 서버에 Nginx + app 이 있을 때 Nginx가 Client 기준으로 되므로 포트 고갈 이슈 발생) 소켓 상태 확인 (만약 timewait가 20xxx개면 timewait 소켓이 2만개나 되는것이다) // 소켓 상태 확인 $ ss -s // 소켓 상태 확인(자세히) $ netstat -napo | grep -i time_wait // 9091 포트가 목적지인 timeout 소켓 개수 확인 $ netstat -napo | grep -ic 9091 해결방법 Local Port 범위 증가 (일시적으론 대체가 가능하나 결국 지속적인 요청으로 인하여 포트의 고갈이 다시 발생) $ echo "10240 65535" >..
Pinpoint Document 설명 Pinpoint란? 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 java 플랫폼 github: https://github.com/pinpoint-apm/pinpoint quick start: https://pinpoint-apm.github.io/pinpoint/quickstart.html#get-started 기능 서버 맵 - 대상 서버와 연결된 다른 서버와의 관계 다이어그램 스캐터 - 요청별 응답시간에 따른 그래프 request detail - 스캐터에서 선택된 요청의 스택트레이스 뷰 에러 발생 요청 표시 - 에러가 발생한 요청 빨간색으로 표시 서버의 jar목록 표시 - 서버에 접속하지 않아도 관련된 jar 목록 확인 가능 구성 DB - HBase..
Ngrinder Document 설명 Load Test 부하 테스트 혹은 스트레스 테스트라고 한다 일부러 시스템에 부하를 발생시킴 얼마만큼의 부하를 버틸 수 있는지 평가한다 Ngrinder란? Load Test를 하기위한 소프트웨어이다 NHN에서 개발 오픈소스 부하 테스트 도구인 grinder를 기반으로 작성 웹 기반으로 테스트를 진행할 수 있다 복수의 장비를 이용해서 대상 시스템에 큰 부하를 발생시킬 수 있다 스크립트를 작성하여 테스트 시나리오를 만들 수 있다 Ngrinder 구성요소 Controller 웹 기반 GUI 시스템 유저 관리(멀티 유저 기반) 에이전트 관리 부하 테스트 실시 & 모니터링 부하 시나리오를 작성하고 테스트한 내역을 저장하고 재활용 할 수 있다 Agent 부하를 발생시키는 대상 ..