SELinux Enforcing 모드로 인한systemd 서비스 등록 Permission denied
·
Linux
systemd 서비스를 등록하는 도중, 서비스가 계속해서 실패하는 문제가 발생하였다. journalctl 명령어를 통해 로그를 확인한 결과, ExecStart 경로에 등록된 실행 파일에 대해 "Permission denied" 오류가 발생하는 것을 확인할 수 있었다. journalctl -xeu ***.service4월 22 11:17:39 localhost.localdomain systemd[9513]: ***.service: Failed at step EXEC spawning /home/****/****/bin/****: Permission deniedSubject: Process /home/****/****/bin/**** could not be executedDefined-By: systemdSu..
코어 덤프 파일 분석
·
Linux
Core Dump 파일컴퓨터 프로그램이 특정 시점에 작업 중이던 메모리 상태를 기록한 것으로, 보통 프로그램이 비정상적으로 종료했을 때 만들어진다. 즉, 비정상적인 종료가 발생하는 경우 커널에서 해당 프로세스와 관련된 메모리 상태를 기록한 파일이다. Core Dump 파일을 생성하려면 사용자의 리소스 제한을 설정해주어야 한다.# core dump 크기 제한 확인ulimit -c# 0이면 core dump가 생성되지 않음# core dump 제한 해제ulimit -c unlimited 하지만 실제 운영 환경에서는 프로세스가 비정상 종료되기를 기다리는 것이 현실적이지 않거나, 시스템 설정 등의 이유로 core 파일이 생성되지 않을 수 있다. 이런 경우 gcore 명령어를 사용하면 실행 중인 프로세스의 메모..
pstack
·
Linux
pstackLinux/Unix 환경에서 실행 중인 프로세스의 스택 트레이스를 확인할 수 있는 디버깅 도구이다. 프로세스가 현재 어떤 함수를 실행 중이며, 어떤 경로로 해당 함수가 호출되었는지 추적할 수 있다. 설치yum install gdb 기본 사용법# 기본 문법pstack [프로세스ID]# 예시pstack 1234 사용 사례 프로세스 행(Hang) 분석$ pstack 1523Thread 1 (Thread 0x7f123456789):#0 0x00007f1234567890 in calculate_hash () at hash.cpp:123#1 0x00007f1234567891 in process_data () at process.cpp:456#2 0x00007f1234567892 in infinite_lo..
pstack
·
카테고리 없음
pstackLinux/Unix 환경에서 실행 중인 프로세스의 스택 트레이스를 확인할 수 있는 디버깅 도구이다. 프로세스가 현재 어떤 함수를 실행 중이며, 어떤 경로로 해당 함수가 호출되었는지 추적할 수 있다. 설치yum install gdb 기본 사용법# 기본 문법pstack [프로세스ID]# 예시pstack 1234 사용 사례 프로세스 행(Hang) 분석$ pstack 1523Thread 1 (Thread 0x7f123456789):#0 0x00007f1234567890 in calculate_hash () at hash.cpp:123#1 0x00007f1234567891 in process_data () at process.cpp:456#2 0x00007f1234567892 in infinite_lo..
lsof
·
Linux
lsof는 "List Open Files"의 약자로, 리눅스 및 유닉스 계열 운영 체제에서 현재 시스템에서 열려 있는 파일과 그 파일을 사용하는 프로세스에 대한 정보를 보여주는 유틸리티이다. lsof는 시스템에서 열려 있는 모든 파일의 목록(일반 파일, 디렉토리, 소켓, 장치 파일 등)을 제공하며, 각 파일을 열고 있는 프로세스의 PID(프로세스 ID), 사용자, 파일의 접근 모드(읽기, 쓰기 등) 등의 정보를 포함한다. 각 헤더의 의미COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME COMAND : 프로세스/명령어의 이름 PID : 프로세스의 고유 식별 번호 USER : 프로세스를 실행한 사용자의 이름 (..
org.springframework.beans.factory.BeanCreationException:에러와 @PostConstruct
·
Spring
@Value로 프로퍼티의 값들을 주입받는 도중 초기화 작업이 필요할 , 생성자에서 이를 수행하면 org.springframework.beans.factory.BeanCreationException 에러가 발생할 수 있다. 이는 @Value 값이 Spring의 Bean 생성 과정에서 생성자 실행 이후에 주입되기 때문이다.  따라서 의존성 주입이 완료된 후 실행되어야 하는 메서드에 @PostConstruct를 사용하면 문제를 해결할 수 있다. 잘못된 예제 (BeanCreationException 발생)@RestControllerpublic class MessageController { @Value("${spring.sms.api-key}") private String apiKey; @Valu..
SGA PGA
·
카테고리 없음
PGA SGA란 System Global Area의 약자로, DB 내 하나만 존재하면서 모든 세션이 공유하는 메모리 공간이다. SGA란 오라클에서 이를 지칭하는 방식이고 Mysql은 Global Memory, PG에서는 Shared Memory라고 지칭한다. Shared Pool : 데이터베이스의 성능 최적화를 위한 핵심 컴포넌트Library Cache: SQL문과 PL/SQL 프로그램의 실행 계획 저장Data Dictionary Cache: 테이블, 인덱스 등의 메타데이터 저장Result Cache: 자주 사용되는 쿼리 결과 캐싱Buffer Cache : 데이터 블록을 캐시하는 영역데이터 파일에서 읽어온 데이터 블록 저장DEFAULT, KEEP, RECYCLE 등 여러 풀로 구성LRU 알고리즘으로 관리..
UsernamePasswordAuthenticationFilter를 이용한 JWT구현(2)
·
Spring
앞서 구현한 코드에서 사용자가 로그인 요청을 보내면, 서버는 사용자에 대해서 인증 단계를 거치게 되고, 인증에 성공한다면 JWT 토큰을 반환해준다.   이후 모든 API 요청에서 클라이언트는 발급받은 토큰을 Authorization 헤더에 담아 서버에 전송하게 된다. 때문에 서버는 이러한 요청을 받을 때마다 토큰의 유효성을 검증해야 하는데, 이를 위해 JWT 검증 필터를 구현해야 한다.  이 필터는 Spring Security의 필터 체인에 포함되어 요청이 컨트롤러에 도달하기 전에 토큰을 검증하는 역할을 한다.  JWT 검증 필터 구현JWT 검증 필터는 OncePerRequestFilter를 상속받아 구현할 수 있는데, 이는 하나의 요청에 대해 필터가 한 번만 실행되는 것을 보장한다. OncePerReq..