Chromium 瀏覽器:超出數據限制
我已經在
/etc/security/limits.conf
. 當我以使用者身份正常登錄我的桌面環境時testuser
(使用 slimlogin
管理器),一切正常。當我
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 ?
- 為什麼 Chromium 的限制與所有其他程序不同?
Chromium 可能看起來像一個簡單的應用程序,但事實並非如此,首先是多執行緒,它使 Chromium 為不同的任務(擴展、選項卡、核心 Web 引擎等)執行多個程序,然後是虛擬化,Chromium 使用許多沙箱來隔離使其比其他應用程序使用更多資源的瀏覽活動,而且使用的 Web 引擎也不是一個輕量級的…添加執行所需的不同庫和其他繁重的資源功能…一些相關文件可以在這裡, 這里和這篇文章有一些有用的資訊。
- “預設”限制來自哪裡(鉻從哪裡獲得限制 4294967296?
4294967296 字節(4096 MB 或 4GB 限制)鉻的設計限制為 4GB,這是硬編碼的,有關此的更多資訊可在此處和此處獲得
- 如何在全域範圍內為所有程序更改這些預設限制,無論它們是否使用 pam?
這不是一件容易的事,但你在最常用的過程中做得很好,現在對於像鉻這樣的複雜過程,你需要為每個“特殊”應用程序自定義配置。
對於 chromium,有一些命令參數可用於自定義/啟用/禁用功能,您可以嘗試使用其中一些來使 chromium 適合您的需求,這裡有一些有趣的開關:
這些開關可以與這樣的命令行一起使用
/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