분류 전체보기
-
Linux TCP Keepalive 정리커널(Kernel) 2022. 12. 11. 22:33
환경 정보 OS: ubuntu18.04 TCP Keepalive 종단 간 커넥션을 만들기 위해서는 TCP 맺음/ 끊기가 필요하다. 하지만 통신할 때마다 TCP 연결을 맺고 끊는 방식은 비효율적이기 때문에, 만들어진 세션을 계속 사용함으로써 자원을 아끼고 애플리케이션 응답속도를 향상시킬 수 있다. 이렇게 세션을 유지하는 방법이 keepalive이다. keepalive는 클라이언트와 서버 둘 다 사용할 수 있으며, 둘 중 하나라도 있으면 세션은 유지된다. keepalive로 커넥션을 맺게 되면, 서로가 살아 있는지 확인하기 위해 아주 작은 패킷 하나를 보내는데, 둘 중 하나에서만 보내도 충분하기 때문에 keepalive를 사용하기 유리한 쪽에서 보내 세션을 유지한다. keeplialive를 사용 중인 소켓은..
-
Linux TIME_WAIT 소켓 정리커널(Kernel) 2022. 12. 11. 16:50
환경 정보 OS: ubuntu18.04 이번 포스팅은 4-way handshake에서 TIME_WAIT 소켓을 어떻게 관리하면 좋을지에 대한 내용들을 다룬다. TCP 통신 과정 tcpdump를 통해서 client(192.168.9.194) => nginx(192.168.9.75:80)로 가는 패킷을 dump한다. tcpdump -i any port 80 -A -nn -w nginx.pcap curl 192.168.9.75 Wireshark를 이용하면, 방금 nginx로 보낸 요청이 tcp 3-way handshake, http get 요청, 4-way handshake라는 단계로 이루어져 있음을 확인할 수 있다. 일단 대략적인 흐름은 다음과 같다. 3-way handshake 1. [클라이언트 => ng..
-
Linux NUMA 아키텍처 정리커널(Kernel) 2022. 12. 5. 19:22
환경 정보 OS: ubuntu18.04 NUMA 아키텍처 NUMA는 Non-Uniform Memory Access의 약자로 불균형 메모리 접근을 의미한다. 불균형 메모리 접근이란 멀티 프로세서 환경에서 동시에 메모리 접근이 가능한 것을 말한다. 예를 들어, 0번 소켓 CPU에서 로컬 메모리에 접근, 1번 소켓 CPU에서 로컬 메모리에 접근이 동시에 일어날 수 있다. NUMA가 있기 전의 UMA 아키텍처의 경우 버스를 공유해서 사용했기 때문에 메모리에 동시 접근이 불가능했다. 참고 1. 노드(Node) - CPU와 CPU에 연결된 메모리를 노드라 한다. 2. 로컬 액세스(Local access) - 자신의 노드 안에서 메모리 접근을 로컬 액세스라 한다. 3. 리모트 엑세스(Remote Access) - 다..
-
Operator-sdk 사용시 multiple controller 구조로 변경K8S 2022. 12. 5. 19:10
operator를 개발하다보면, 여러 개의 crd가 필요한 경우가 있다. 이 때는 워크로드에 따라 다르겠지만 가능하다면 하나의 operator안에 여러 개의 controller를 두어 crd를 관리하는 방법을 사용하는 것이 좋아보인다. 다음은 multi group과 관련된 참고용 URL이다. https://docs.okd.io/4.11/operators/operator_sdk/golang/osdk-golang-tutorial.html#osdk-golang-multi-group-apis_osdk-golang-tutorial Tutorial | Operators | OKD 4.11 Operator authors can develop Operators that support network proxies. Cl..
-
Linux Swap 영역 정리커널(Kernel) 2022. 12. 4. 20:50
환경 정보 OS: ubuntu18.04 K8S를 사용 중인 환경이지만 swapon 환경이다. Swap 영역 swap 영역은 물리 메모리가 부족할 경우를 대비해서 만들어놓은 비상용 공간이다. 디스크의 일부를 사용하기 때문에 물리 메모리에 비해 접근과 처리속도가 떨어지므로 시스템 성능 저하를 일으킨다. free 커맨드를 통해서 메모리 영역과 swap 영역을 함께 확인할 수 있다. 현재 2GB의 스왑 영역을 확보하고 있으며, 전혀 사용하고 있지 않다. 스왑 영역을 사용하고 있다면 메모리와 관련해서 시스템에 문제가 있을 수 있다는 의미이다. 따라서 스왑 영역을 사용하고 있는 프로세스를 확인해볼 필요가 있다. 서비스 용도가 아닌 관리 용도의 프로세스에서 메모리 누수가 있어, 스왑 영역을 사용하게 되었을 수도 있기..
-
K8S에서 NFS 서버 없이 동적 프로비저닝 사용하기K8S 2022. 12. 2. 13:35
이번 포스팅은 nfs 서버 추가 없이 nfs 동적 프로비저닝를 사용할 수 있는 방법에 대한 내용이다. 실제 물리적인 nfs 서버를 사용하지 않기 때문에 storage class를 사용이 필요한 테스트 환경에 적합한 방법일듯하다. 우선 nfs provisoner로는 두가지 정도가 있는데, https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner/tree/nfs-server-provisioner-1.4.0 GitHub - kubernetes-sigs/nfs-ganesha-server-and-external-provisioner: NFS Ganesha Server and Volume Provisioner. NFS Ganesha..
-
Linux 메모리 정리(buffer, cache, Active/Inactive, slab)커널(Kernel) 2022. 11. 28. 00:16
환경 정보 OS: ubuntu18.04 swap: off 메모리 사용량 확인하기 free -m 사용시 MB 단위로 메모리 사용량을 확인할 수 있다 . total : 시스템의 전체 메모리 양 used : 사용하고 있는 메모리 양 free : 아무도 사용하고 있지 않는 시스템 메모리 양 shared : 프로세스 사이에서 공유하고 있는 메모리 양. ex) glibc buff : 버퍼를 사용하고 있는 메모리양으로 프로세스가 사용하는 메모리 영역은 아니다. 시스템 성능 향상을 위해서 커널에서 사용하는 메모리 양 cache : 페이지 캐시. I/O 관련 작업을 빠르게 진행하기 위해서 커널에서 사용하는 메모리 양 swap : swap 영역에 대한 정보 buffer와 cache 디스크는 커널에 비해 매우 느리기 때문에..