# 웹사이트가 CPU와 배터리를 낭비하는 방법

> Clean Markdown view of GeekNews topic #19267. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19267](https://news.hada.io/topic?id=19267)
- GeekNews Markdown: [https://news.hada.io/topic/19267.md](https://news.hada.io/topic/19267.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-02-17T10:01:51+09:00
- Updated: 2025-02-17T10:01:51+09:00
- Original source: [h.43z.one](https://h.43z.one/blog/2025-02-12/)
- Points: 6
- Comments: 1

## Summary

새 노트북에서 화이트 노이즈가 발생하는 문제는 Firefox에서 outlook.office.com의 알림 소리로 인해 발생하며, 이는 CPU와 배터리 소모를 증가시킵니다. 문제의 원인은 AudioContext 생성 시 발생하며, Chrome은 자동으로 이를 중지하지만 Firefox는 그렇지 않습니다. 이를 해결하기 위해 AudioContext를 자동으로 중지하고 필요 시 다시 시작하는 확장 프로그램을 개발하여 문제를 완화했습니다.

## Topic Body

- **문제 발견**: 새 노트북에서 스피커에서 간헐적으로 화이트 노이즈가 발생하는 문제를 발견함. 조용한 방에서만 들을 수 있었음.  
  
- **원인 분석**: PulseAudio의 오디오 싱크 상태를 확인한 결과, SUSPENDED 상태에서는 소리가 나지 않지만, IDLE 또는 RUNNING 상태에서는 화이트 노이즈가 발생함을 발견함.  
  
- **Firefox의 문제**: Firefox가 오디오 싱크를 사용하는 프로그램으로 나타났으며, 열려 있는 탭 중 소리를 재생하는 탭이 없었음에도 불구하고 화이트 노이즈가 발생함.  
  
- **원인**: outlook.office.com의 알림 소리가 문제의 원인으로 밝혀짐. 이메일을 받을 때마다 화이트 노이즈가 시작되고, 탭을 새로 고치거나 Firefox를 재시작해야만 멈췄음.  
  
- **배터리 소모**: 화이트 노이즈가 발생할 때 CPU와 배터리 소모가 증가함.  
  
- **해결책 시도**: 이메일 알림을 비활성화하여 문제를 해결하려 했으나, 다른 웹사이트에서도 유사한 문제가 발생함.  
  
- **HTML/JavaScript 오디오 처리**: 오디오를 재생하는 방법으로 `` 태그와 WebAudio API가 있음. 문제의 원인은 AudioContext를 생성할 때 발생하는 것으로 확인됨.  
  
- **Firefox와 Chrome의 차이**: Chrome은 일정 시간이 지나면 배터리/CPU 낭비를 자동으로 중지하지만, Firefox는 그렇지 않음.  
  
- **해결책**: AudioContext를 자동으로 중지하고 필요할 때 다시 시작하는 확장 프로그램을 개발함. 완벽하지는 않지만 충분히 효과적임.

## Comments



### Comment 34673

- Author: neo
- Created: 2025-02-17T10:01:51+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43062546) 
- 이 문제는 계획되어 있으며 중요함. 곧 해결할 예정임. 우선순위 문제로 아직 해결되지 않았음에 대해 사과함. 개인적으로 높은 우선순위를 가짐
  - 오디오 컨텍스트를 일정 시간 후에 멈추는 것보다 복잡하지만 해결할 수 있음. 다른 사람들이 했기 때문에 가능함. 타협할 준비가 되어 있음
  - 출처: Firefox 구현자 및 Web Audio API 표준 편집자

- 오디오 컨텍스트를 열고 아무것도 재생하지 않는 웹사이트는 아마도 봇 탐지를 하고 있을 가능성이 있음
  - 다른 브라우저 엔진과 운영 체제는 오디오 처리를 다르게 구현함. 완전히 들리지 않는 소리를 재생하고 다시 녹음하면 서명이 생김
  - 이 서명을 사용하여 브라우저가 사용자 에이전트에 대해 거짓말을 하고 있는지, 헤드리스 모드에서 실행 중인지, 실제 사용자가 아닌지 확인할 수 있음

- 같은 문제가 Android 기기에서도 발생하는지 궁금함

- 이 백색 소음이 오랫동안 나를 미치게 했지만 추적할 수 없었음
  - 탭에 "재생 중" 아이콘이 표시되지 않으며, 탭을 음소거해도 소음이 멈추지 않음
  - Windows 볼륨 믹서를 사용하여 Firefox를 음소거해도 소음이 멈추지 않음
  - 편집: 데스크톱 사용자에게는 백색 소음이 계속 시작/중지되어 매우 성가심

- 출력이 유휴 상태가 되면 디지털 SPDIF 신호가 동기화를 잃음. 재생이 시작되면 다시 동기화되는데 시간이 걸리며, 처음 몇 초의 오디오를 잃게 됨. 출력을 유휴 상태로 두지 않기 위해 데이터를 라인에 덤프하지 않고 출력을 열어두는 프로그램을 작성했음
  - 노트북에서는 에너지 절약이 더 중요함

- Android Firefox에서 가끔씩 휴대폰이 하루에 10GB의 데이터를 소비하는 문제를 설명할 수 있을 것 같음. 뉴스 사이트가 오디오를 재생하고 광고를 반복적으로 로드하며 탭이 오디오 때문에 절전 모드로 전환되지 않았음. 반복적인 데이터 요금 때문에 Chrome으로 전환해야 했음

- Chromium에서 이 중단을 처리하는 코드는 여기에 있음
  - 기본적으로 30초 정도의 침묵을 감지한 후 OS 오디오 장치에 의해 지원되는 싱크에서 null 싱크로 전환함
  - 참고: 오디오 장치와 다른 시계를 사용하기 때문에 컨텍스트가 최종적으로 사용될 때 특정 톤에서 왜곡이 발생할 수 있음. 해결 방법은 사이트가 기사에서 언급된 suspend resume API를 사용하는 것임

- macOS에서도 비슷한 문제를 발견했음 (오디오 유도 전력 소모, 백색 소음 없음)
  - 현재 Mac의 coreaudiod가 아무것도 재생하지 않는데도 CPU의 20%를 사용 중임. 이 문제 해결 전까지 다른 브라우저로 전환할 생각이지만, Firefox를 포기하고 싶지 않음
  - 업데이트: 관련 있지만 다른 버그로 보임

- 이 문제는 &lt;a href="https://www.dr.dk/"&gt;https://www.dr.dk/&lt;/a&gt;의 첫 페이지를 수정함

- audioContext의 구현 방법을 잘 모르지만 매우 똑똑하고 동적임. 알림 소리를 재생하는 것은 D3로 SVG를 그리는 것과 같음. 더 효율적인 API에서 알림 핸들러와 같은 간단한 반복 작업을 등록할 수 있는 serviceWorker 훅이 있는지 궁금함
