Chromium 브라우저: 데이터 한도를 초과했습니다.

Chromium 브라우저: 데이터 한도를 초과했습니다.

에 ulimit를 설정했습니다 /etc/security/limits.conf. 일반적으로 사용자 testuser(슬림 login관리자 사용) 로 데스크탑 환경에 로그인하면 모든 것이 잘 작동합니다.

testuser(다른 세션에서 다른 사용자로)을 통해 사용자로 로그인하면 Xephyr브라우저를 제외한 모든 것이 잘 작동합니다 chromium. 내가 겪고있는 오류는 다음과 같습니다 dmesg.

Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.

크롬이 작동하지 않습니다(시작되지만 페이지가 로드될 때까지 무한정 기다립니다).

chromium올바른 한계를 제외한 다른 모든 프로그램은 설정됩니다. 나는 다음을 사용하여 이것을 확인했습니다.

find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits \; | grep 'Max data size'

모두 무제한으로 PIDs설정 :Max data size

Max data size             unlimited            unlimited            bytes

chromium프로세스 제외 :

Max data size             4294967296           4294967296           bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes     
Max data size             17179869184          17179869184          bytes  

나는 다음에 대해 알고 싶습니다:

1) 왜 chromium다른 모든 프로그램과 다른 제한이 있나요?

2) "기본" 제한은 어디에서 오는가?( 4294967296크롬은 어디에서 제한을 가져오나요?)

3) pam 사용 여부에 관계없이 모든 프로세스에 대해 이러한 기본 제한을 전역적으로 한 번에 어떻게 변경할 수 있습니까?

답변1

  1. Chromium에 다른 모든 프로그램과 다른 제한 사항이 있는 이유는 무엇입니까?

Chromium은 단순한 애플리케이션처럼 보일 수 있지만 그렇지 않습니다. 처음에는 멀티스레딩이 등장하여 Chromium이 다양한 작업(확장 프로그램, 탭, 핵심 웹 엔진 등)을 위해 여러 프로세스를 실행하게 한 다음 가상화가 이루어졌습니다. Chromium은 많은 샌드박스를 사용하여 격리합니다. 검색 활동으로 인해 다른 응용 프로그램보다 더 많은 리소스를 사용하게 되며 사용되는 네트워킹 엔진도 가볍지 않습니다. 실행하는 데 필요한 다양한 필수 라이브러리 및 기타 리소스가 많이 사용되는 기능을 추가하면 ..일부 관련 문서를 사용할 수 있습니다.여기, 여기그리고이 기사유용한 정보가 있습니다.

  1. "기본" 제한은 어디에서 왔습니까(Chromium의 제한 4294967296은 어디에서 왔습니까?)

4294967296바이트(4096MB 또는 4GB 제한) Chromium은 설계상 4GB로 제한됩니다. 이는 하드코딩되어 있으며 이에 대한 자세한 정보를 확인할 수 있습니다.여기그리고여기

  1. pam 사용 여부에 관계없이 모든 프로세스에 대해 이러한 기본 제한을 전체적으로 한 번에 변경하려면 어떻게 해야 합니까?

쉬운 작업은 아니지만 대부분의 일반적인 프로세스를 잘 수행할 수 있습니다. 이제 크롬과 같은 복잡한 프로세스의 경우 각 "특수" 애플리케이션에 대한 사용자 정의 구성이 필요합니다.

크롬의 경우 다음과 같은 것들이 있습니다.명령 매개변수기능을 사용자 정의/활성화/비활성화하는 데 사용할 수 있으며, 그 중 일부를 사용하여 필요에 맞게 크롬을 만들 수 있습니다. 다음은 몇 가지 흥미로운 스위치입니다.

이 스위치는 다음과 같은 명령줄과 함께 사용할 수 있습니다./usr/bin/chromium --single-process

--single-process
--aggressive-tab-discard
--aggressive-cache-discard
--ui-compositor-memory-limit-when-visible-mb
--disk-cache-dir  # Use a specific disk cache location, rather than one derived from the UserDatadir.
--disk-cache-size  # Forces the maximum disk space to be used by the disk cache, in bytes.
--force-gpu-mem-available-mb  # Sets the total amount of memory that may be allocated for GPU resources
--gpu-program-cache-size-kb  # Sets the maximum size of the in-memory gpu program cache, in kb
--mem-pressure-system-reserved-kb  # Some platforms typically have very little 'free' memory, but plenty is available in buffers+cached. For such platforms, configure this amount as the portion of buffers+cached memory that should be treated as unavailable. If this switch is not used, a simple pressure heuristic based purely on free memory will be used.
--renderer-process-limit  # Overrides the default/calculated limit to the number of renderer processes. Very high values for this setting can lead to high memory/resource usage or instability.

ulimit를 업데이트하는 스크립트로 chromium을 실행할 수도 있습니다(4GB 미만의 값은 브라우저와 충돌할 수 있습니다...).

ulimit -Sv 4352000000 #4.2GB
/usr/bin/chromium

# or 0.42GB, it works but the browser may crash
#ulimit -Sv 435200000 #0.42GB
#/usr/bin/chromium

답변2

최신 64비트 시스템에서는 VM 공간을 제한할 타당한 이유가 없습니다.

VM 공간은 물리적 메모리뿐만 아니라 모든 메모리를 매핑하는 데 사용됩니다. 현재 컴퓨팅에서 대량의 가상 머신 데이터를 가장 일반적으로 사용하는 것은 스파스 버퍼(sparse buffer)로, 파일이나 데이터베이스의 작은 부분만 물리적 메모리에 포함되고 전체 데이터는 가상 메모리에 포함되며 투명하게 로드되는 루틴이 있습니다. 필요에 따라.

물리적 데이터 메모리 사용을 제한하고 싶을 때에도 ulimit 대신 /sys 및/또는 /proc/sys의 설정을 사용하여 이 작업을 수행해야 합니다. 이렇게 하면 프로그램 신호에 대한 메모리 부족 오류가 올바르게 발생하기 때문입니다. 부조.

솔직히 말해서 ulimit는 다중 사용자 시스템에 대한 서비스 거부 공격을 방지하는 것 외에는 실제로 아무 쓸모가 없는 더러운 오래된 해킹입니다.

답변3

일반적으로 TV 채널을 스트리밍할 때 Chrome을 사용하여 동일한 문제가 발생했습니다. 오류 메시지에 대한 답변이 제공됩니다.

ignore_rlimit_data에 추가 하다GRUB_CMDLINE_LINUX_DEFAULT들어가서 /etc/default/grubgrub을 업데이트하고 재부팅하십시오.

관련 정보