전체 글 135

[SQL] HeidiSQL 윈도우 접속 불가 현상

서버에서 잘돌리고있는 mysql DB를 개발을 위해 서버가 아닌 내 윈도우 노트북으로 접근하고싶었다. 접속툴은 간단하게 사용할 수 있는 HeidiSQL을 사용해서 접속을 하려고 했지만, GCP에서 방화벽을 열거나(mysql db를 gcp에 구성) 접속정보를 정확하게 적어도 자꾸 연결시도시 멈추고 실패하였다. 구글링을 해본 결과 mysql은 보안때문에 root계정은 서버(localhost)에서만 사용가능하다고 한다. 해결방법은 윈도우에서 연결할 수 있는 권한을 가진 계정을 생성하는것. 네이버에 내 ip를 검색한 후 IP가 10.11.12.13 이면 mysql$ GRANT ALL PRIVILEGES ON *.* TO 아이디@'10.11.12.%' IDENTIFIED BY '비밀번호'; mysql 서버에서 위..

SQL 2022.08.27

[Springboot] Failed to configure a DataSource 에러 뜰때

Springboot 는 Start시 기본적으로 DB연결을 시도한다. 하지만 프로젝트를 처음 생성했을 경우 당연히 DB연결정보가 없어서 아래와 같은 에러가 발생한다. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource ..

Springboot 2022.08.03

[Springboot] 환경변수로 로그 레벨 관리하기

Spring boot 로그를 관리하다 보면, 로컬/개발/테스트/운영 마다 로그레벨을 다르게 해야할 필요가 있을것이다. 이때, 여러가지 방식이 있을 수 있지만 서버의 환경변수(또는 ConfigMap) 로 로그를 관리할 수 있는 방법을 소개한다. 1. Spring boot main class에 로그레벨이 명시되어있는 환경변수를 가져오고 Property에 set 한다. public class MainApplication { System.setProperty("loglevel" , System.getenv("LOG_LEVEL")); MainApplication.run(MainApplication.class , args); } 2. logback.xml 의 로그 레벨을 "${Property변수}" 로 동적 관리 ..

Springboot 2022.07.28

[성능테스트] 모니터링 시나리오

프로젝트 성능 테스트시 챙겨야할 Action Item 및 시나리오 정리 1. 테스트 모니터링 준비 2. 실시간 WAS 모니터링 2-1. 서버별 CPU 사용률 2-2. 힙 메모리 사용률 2-3. TPS(초당 처리량) : 일정 수준이 유지되는지 모니터링 2-4. 트랜잭션 모니터 : 수행시간이 높은 건 발생하는지 모니터링 2-5. 사용중인 DB커넥션 수 : 전체 DB 커넥션 수까지 오르는 경우가 있는지모니터링 3. 이슈대응 3-1 CPU/MEM/DB connection 부족 -> HeapDump , ThreadDump 분석 3-2. Full GC 발생 시 -> GC log분석 3-3. 응답시간 지연 -> 해당 트랜잭션 분석 3-4. 위 문제 없이 TPS 저하 -> 커널 파라미터 튜닝 ( 해당 서비스 Pod, ..

성능 테스트 2022.07.28

[Gradle] Gradle 캐시 -> maven repo 변경하기

Gradle은 Maven과 달리 캐시로 dependency를 관리한다. 이것이 장단점이 있지만, nexus에 통째로 올릴 때에는 Maven구조로 올려야 하기 때문에 Gradle 캐시를 Maven구조로 바꾸어주는 스크립트를 자바로 짜보았다. import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; public class mainapp{ public static void main(String[] args) throws ..

CI_CD/gradle 2022.05.28