메스 위드 DNS에서 IP 주소를 찾을 때 사용하는 메... 노트

메스 위드 DNS에서 IP 주소를 찾을 때 사용하는 메모리를 줄이는 것

'Mess With DNS'의 저자는 프로그램이 메모리가 부족해 OOM(Out-Of-Memory)으로 인해 종료되는 문제를 겪었고, 이로 인해 백업 스크립트에 문제가 발생했습니다. 이를 해결하기 위해 저자는 'Mess With DNS'가 메모리를 덜 사용하도록 하기 위해 시도했습니다. 프로그램은 메모리에 IP 주소 데이터베이스를 로드했는데, 이는 약 117MB의 메모리를 사용하고 있었습니다. 저자는 메모리 사용량을 줄이기 위해 세 가지 다른 접근 방식을 시도했습니다.첫 번째 접근 방식은 데이터를 디스크에 저장하기 위해 SQLite를 사용하는 것이었습니다. 이는 초기 메모리 목표를 달성했지만 IPv6 주소를 저장하는 문제가 있었고 원래의 이진 검색보다 500배 느렸습니다. 두 번째 접근 방식은 트라이(trie)를 사용하는 것이었습니다. 그러나 이는 더 많은 메모리를 사용했고 원래의 이진 검색보다 느렸습니다.세 번째 접근 방식은 이름과 국가 필드를 중복 제거하여 배열이 메모리를 덜 사용하도록 하는 것이었습니다. 이는 메모리 사용량을 117MB에서 65MB로 줄였고, netip.Addr 대신 net.IP를 사용하여 추가로 20MB의 메모리를 절약하여 총 46MB로 줄였습니다. 저자는 총 70MB의 메모리를 절약할 수 있었습니다.