저는 node.js 애플리케이션을 개발 중입니다. --- Debian Linux 커널이 계속 충돌합니다. 컴퓨터가 응답하지 않고 "핑"에도 응답하지 않습니다.
현 단계에서는 충돌 원인을 분석하거나 해결하라고 요구하는 것도 아닙니다. 구체적으로 언급할 만한 정보가 없습니다. 컴퓨터가 응답을 멈추고 메시지 /var/log/messages
도 표시하지 않습니다.dmesg
그래서 내 질문은 다음과 같습니다충돌에 대한 정보를 수집하려면 어떤 도구를 사용할 수 있나요?
다음은 몇 가지 배경 세부정보입니다.
내 node.js 애플리케이션은 네트워크 스택을 사용하지 않습니다. 두 개의 하위 프로세스를 생성하고 child_process.spawn
파일 쓰기, 파일 변경 사항 감시 fs.watch
및 변경된 파일 읽기를 통해 이들 프로세스와 통신합니다. 나머지는 단지 데이터 처리일 뿐입니다.
나는 이 문제를 세 대의 컴퓨터에서 테스트했습니다.
- 첫 번째(내 주요 개발 컴퓨터)에서는 응용 프로그램을 몇 번 시작한 후 시스템이 안정적으로 정지됩니다.
- 다른 컴퓨터(주 개발 컴퓨터의 PC 및 digitalocean VPS와 유사)에서는 앱이 일반적으로 잘 실행되었지만 수백 번 실행한 후 다른 컴퓨터가 정지되었습니다.
내 주요 개발 컴퓨터가 이 문제에 더 취약한 것 같습니다. 하지만 관련 없는 두 컴퓨터에서도 작동 중지가 발생하기 때문에 이것이 한 대의 PC에만 국한된 순전히 하드웨어 문제라고는 생각하지 않습니다.
응용 프로그램을 실행한 직후 컴퓨터가 멈추므로 응용 프로그램이 문제의 원인이라고 확신합니다. 모든 것이 멈췄기 때문에(ping에 대한 응답 포함) Linux 커널이 충돌한 줄 알았습니다.
답변1
일반적으로 Linux 커널 패닉은 시스템 콘솔에 표시됩니다. 그러나 이것이 실제로 커널 패닉인 경우를 대비해, 귀하의 경우에는 어떤 이유로든 실제로 커널 패닉인지 확인하고 싶어도 표시되지 않습니다. 이렇게 하려면 다음과 같이 커널 패닉 후 자동으로 재부팅되도록 시스템을 구성할 수 있습니다.패닉 시 재부팅되도록 Linux 커널 구성. 시스템이 결국 재부팅되면 이는 실제로 커널 패닉이므로 해당 조사 경로에 집중할 수 있습니다(Stack Exchange 사이트에 수많은 관련 답변이 있습니다).
하지만 귀하의 설명에 따르면 이는 커널 중단 또는 "너무 바쁜" 상황일 가능성이 더 높다고 생각됩니다. 여기서 시작할 수 있습니다.전체 정지 원인을 어떻게 조사합니까?.
마지막으로, 근본 원인은 응용 프로그램일 가능성이 더 높다는 것을 확인하셨으므로 이것이 시스템에 너무 많은 로드를 발생시켜 시스템이 응답하지 않게 만드는 원인이라고 가정합니다. 코드에 길이/무한 루프가 있는지 확인하고 그 영향을 제한하려고 시도할 수 있습니다. 특정 실행 시간(일부 시간 초과 예외 사용) 이후 또는 특정 횟수의 반복 이후 중단 등이 가능합니다. 잠시 후 시스템이 다시 응답하면 코드의 어느 영역에 문제가 있는지, 시스템에 어떤 영향을 미치는지 더 잘 알 수 있습니다.