고객 지원 문의

이메일로 답장드리며, 보통 이틀 안에 회신합니다.

Google reCAPTCHA가 이 제출을 악용 여부에 대해 확인하며, 이 과정에서 데이터가 Google로 전송됩니다. 스크립트는 이 양식을 열 때만 불러옵니다.

← 전체 글

tmpfs 안의 870MB 파일, 그리고 뒤이은 재시작

콘텐츠와 검토에 관하여

이 글의 내용

8월 28일 19시 35분에 접근 로그 하루치를 /tmp에 풀었습니다. 이틀치를 한 번에 읽으려고요. 19시 44분에 기계가 다시 시작했습니다.

기계가 가진 것, 그리고 파일 하나가 차지한 것 메모리 3,794MB, 그 가운데 /tmp가 담을 수 있는 것은 1,900MB 19시 35분에 870MB를 거기 씀 19:35 — 이틀치를 한 번에 읽으려고 로그 하루치를 /tmp에 풂 19:44 — SSH가 답하지 않고, 사이트가 0.1초 대신 11초 걸림 19:47 — 기계가 돌아옴, 가동 시간 0분 MariaDB가 충돌 복구와 함께 올라옴: 깨끗한 종료가 아니었음 저널은 재시작을 넘겨 살아남지 않으므로 이것은 증명할 수 없습니다 — 날짜만 매길 수 있습니다

확인하지 않은 성질

이 기계에서 /tmp는 tmpfs입니다. 메모리입니다. df는 1.9GB가 남았다고 보여 주고 그 자리가 어디서 오는지는 아무 말도 하지 않으며, 기계 전체는 3,794MB입니다.

그러니 870MB짜리 파일이, 동시에 사이트를 떠받치고 남의 시험 작업까지 돌리던 작은 서버의 메모리 4분의 1로 들어갔습니다. 9분 뒤 SSH가 연결을 받지 않았고, 사이트는 0.1초 대신 11초에 답했고, 얼마 뒤 가동 시간 0분으로 돌아왔습니다.

무엇을 말할 수 있고 무엇은 말할 수 없는가

MariaDB가 충돌 복구와 함께 올라왔고, 그것은 종료가 깨끗하지 않았다는 뜻입니다. 그 너머로는 정직한 답이 이것을 증명할 수 없다는 것입니다. 이 기계의 저널은 휘발성이라 재시작을 넘겨 살아남지 않고, out-of-memory 줄을 담은 kern.log도 없습니다. 증거는 사건 9분 전의 시각 표시와 엉뚱한 자리의 파일뿐입니다.

그것을 결론이 아니라 있는 그대로 적어 둘 값어치가 있습니다. «메모리를 채웠고 커널이 포기했다»는 그럴듯한 이야기입니다. 잰 이야기가 아니고, 여기서는 그 차이가 확신보다 더 중요합니다.

피해는 무엇이었는가

찾을 수 있는 것은 없었습니다. 가장 중요한 표 다섯에 대한 CHECK TABLE가 OK로 돌아왔고, 줄 수는 그대로였고, 계수는 그날에도 여전히 기록하고 있었고, 예약된 작업 열여섯 개가 온전했습니다. 사이트는 다시 0.14초에 답했습니다.

하나를 잃었습니다. 같은 기계의 다른 세션에 속한 오래 도는 작업입니다. 이 작업과는 아무 상관이 없었고 다른 모든 것과 함께 내려갔으며, 그것이 어떤 지역 확인도 보고하지 않는 장애의 한 부분입니다.

거기서 나온 규칙

여기 로그 파일은 하루 700에서 900MB입니다. 하나를 /tmp에 푸는 것은 기계 메모리의 4분의 1을 디스크처럼 보이고 RAM처럼 구는 자리에 두는 일입니다.

큰 중간 파일은 /var/tmp나 홈 디렉터리로 갑니다. 둘 다 디스크에 있습니다. 더 나은 것은 아예 풀지 않는 것입니다. zcat -f file.gz | awk ...는 흐름으로 읽고 목적지가 필요 없습니다. 그 뒤에 나온 글들의 모든 측정은 그렇게 했습니다.

무엇이 일반화되는가

파일 시스템은 자리가 얼마나 있는지 알려 줍니다. 그 자리가 무엇으로 되어 있는지는 알려 주지 않고, 두 물음은 하필 그것이 가장 중요한 시스템에서 서로 다른 답을 가집니다.

확인은 한 줄이고, 파일이 «임시»라서 건너뛰었습니다. 임시라는 것은 맞았습니다. 그것이 생각해야 할 성질이 아니었을 뿐입니다.

광고