본문 바로가기

개발

(39)
그림으로 배우는 리눅스 구조 4주차 목차-  서론-  메모리 재활용 처리-  OOM(Out Of Memory)-  가상 주소(Virtual Address)    -  어셈블리로 알아보는 가상 주소-  페이지 테이블-  페이지 테이블 계층화-  결론-  Reference  서론  컴퓨터 시스템에서 메모리 관리의 효율성은 성능과 안정성에 중요한 영향을 미친다.특히, 메모리 재활용 기법은 시스템의 원활한 운영을 위해 필수적이다.이 글에서는 메모리 사용 현황을 확인하는 방법, OOM(Out Of Memory) 상황과 그 해결 방법, 가상 주소 체계, 페이지 테이블과 Huge Page의 개념을 정리하여 효과적인 메모리 관리 전략을 이해하고자 한다.  메모리 재활용 처리  free 명령어를 통해 메모리 사용 현황을 알 수 있다. $ free ..
그림으로 배우는 리눅스 구조 3주차 목차-  서론-  물리 cpu vs 논리 cpu-  사용 시간, 경과 시간-  컨텍스트 스위치-  스레드 vs 프로세스-  처리 성능-  결론-  Reference 서론이번 장에선 os 상에서 여러 개의 프로세스가 어떻게 실행되는지 설명한다.프로세스가 어떻게 자원을 점유하는 과정을 테스트 코드를 통해 확인하고이전 장에서 배운 프로세스 관련 명령어들을 이용해 상태를 확인할 수 있다.   물리 cpu vs 논리 cpu이 책을 보면 논리 cpu라는 용어가 많이 나오는데 둘의 차이가 궁금해 정리했다.    - 물리 cpu: 실제 프로세스 개수    - 논리 cpu: 물리 프로세스 하나가 동시에 처리할 수 있는 작업 수lscpu를 통해 물리, 논리 cpu를 확인할 수 있다.  $ lscpuArchitecture:..
그림으로 배우는 리눅스 구조 2주차 목차-  프로세스 확인하기-  프로세스 생성-  ELF-  랜덤 스택(ASLR)-  첫 프로세스-  프로세스의 상태-  좀비 프로세스, 고아 프로세스-  시그널-  세션-  프로세스 그룹-  데몬  -  service vs systemctl-  정리-  Rerference 프로세스 확인하기    VSZ: 가상 메모리RSS: 실제 메모리VSZ와 RSS의 관계를 어떻게 봐야 할지 모르겠지만, 어떤 뜻인지는 알아두면 좋을 것 같다.  내 기준 STAT에서 자주 참고할만한 요소이다.-  D: 디스크 I/O 대기중-  L: 메모리에서 페이지가 lock된 상태-  R: 실행중인 상태-  S: 인터럽트에 의한 대기-  Z: 좀비 프로세스-  : 높은 우선순위-  +: 포어 그라운드   프로세스 생성  fork   현..
그림으로 배우는 리눅스 구조 1주차 목차이 책을 읽은 이유들어가기 전에프로그램, 프로세스 차이커널커널의 부팅 과정시스템 콜시스템 콜의 매개변수는 레지스터다정적 링크 vs 동적 링크어떻게 공유 라이브러리를 찾아갈까?Reference  이 책을 읽은 이유예전에 보안을 공부하고, C로 네이티브 개발을 하다 보니 커널 코드를 분석해 보고 싶었다.하지만, 무작정 커널 분석을 시작하기엔 막연한 부분도 많고, 기억 안 나는 부분도 있어 개요를 잡을 필요가 있었다.스터디에서 선정된 책이지만, 개인적으로 괜찮다고 생각해 스터디를 신청하고 읽게 됐다.  들어가기 전에책을 읽기 전에 OS의 정의에 대해 정리할 필요가 있었다.OS ⇒ 유저와 하드웨어를 연결하는 인터페이스인터페이스의 의미가 “서로 이어 준다”는 뜻이 있어, 브리지(bridge)라고 표현한 글들도..
[JPA] FindAll이 같은 값만 나와요 문제 상황API에서 entity 리스트를 반환해야 하는데, 동일한 원소만 지속적으로 반환되는 문제가 발생했다.요청에는 문제가 없었고, 데이터가 매핑된 쿼리 결과 로그를 다른 SQL 툴에서 실행 결과는 정확했다. JPA가 생성한 쿼리 역시 문제가 없었다. 혹시나 해서 JPARepository에서 반환 타입을 List 대신 List>로 변경하니 올바른 결과가 나왔다.흥미로운 점은 두 경우 모두 반환되는 개수는 동일했지만, List는 쿼리 결과의 첫 번째 원소만 채워져서 반환됐다.배포 시간이 촉박해, 일단 Map을 DTO로 변환한 후 원인을 파악하고 해결하기로 결정했다.뭐가 문제였을까?복합키 문제였다.@IdClass나@EmbededId를 통해 복합키를 설정해야 했는데, 복합키 컬럼 하나에만 @Id 어노테이션을..
[PostgreSQL] FAQ를 번역해 보았다. (스압) 회사에서 주로 PostgreSQL을 쓰다 보니, 관련 Docs를 보는 일들이 많았다.링크들을 클릭하다 우연히 FAQ를 보게 됐는데 생각보다 유용해서 필요해 보이는 것만 추려서 번역했다. (고마워요 gpt, 구글!) 번역할 때 삼은 기준이다. 원문 그대로 쓰는 경우영어로 많이 부르는 경우 ex) prepared, query plan, lock한글로 번역할 때 생소한 부분 ex) localerow, columngaps ⇒ 간격이란 뜻이 있지만, 갭이라 하는 경우도 많아 원문 그대로 씀기타 예약어, 명령어 및 볼드 처리 된 부분한국어 해석의 경우statistics ⇒ 통계optimizer ⇒ 최적화기double quote ⇒ 쌍따옴표space ⇒ 공백punctutation ⇒ 구두점(.)numbering ⇒ ..
[PostgreSQL] FDW로 Cross Database 해결하기 문제 상황PostgreSQL 환경에서 다른 Database 내에 있는 DB Function을 호출해야 함JPA에서는 서로 다른 Database에 접근하려면 Cross Database 이슈 발생DBConfig를 통해 해결할 수 있지만, 코드 추가 없이 해결 하고 싶었음FDW를 통해 문제를 해결했다. 그러나 DB Function을 원격으로 호출하는 방법은 아니었다. 해당 DB Function이 접근하는 테이블에 대한 외래 테이블을 만들고, Function 소스 코드를 복사해와, 테이블명을 바꿨다.운영 환경하나의 PostgreSQL RDS에 여러 Database를 두고 있음서비스 특성B2B로, 제한된 사용자만 사용(입력이 정직함)두 DB 모두 동시성 이슈는 거의 발생하지 않음트래픽이 일정하고, 쓰는 시간대가 ..
파일 옮길 땐 tar를 쓰자 수정 내역24.11.20 rsync로 대규모 파일 이관 레퍼런스 추가24.11.22 심볼릭 링크 아카이빙 케이스 및 재발시, 사전에 수행할 명령어 추가문제 상황개발 서버에 디비 구조가 변경된 코드를 배포하다 스크립트 이슈로 다른 팀이 사용 중인 서버에도 배포됐다.실제 사용자들이 쓰는 서비스는 아니어서 문제가 발생한다는 걸 뒤늦게 알았지만, 어쨌든 수습은 해야 했다.잘못 배포된 서버에 운영 서버에 있는 jar와 다른 파일들을 옮기는 과정에서 새로 알게 된 내용을 정리했다.tar를 쓰는 이유파일의 inode를 유지하기 위해서다.단순히 파일을 복사하면 수정 시간이 현재 시간으로 변경되고, 권한도 초기화된다.실행 파일의 경우 접근 권한 x가 사라지고 다른 파일들의 경우 수정 날짜가 원본과 다르기 때문에 누가 수..