web-dev-qa-db-ja.com

特定のWebサイトを閲覧しているときにLinuxが数分間応答しなくなる原因は何ですか?

私はLinux 4.15を使用しています。これは、Google、Facebook、またはその他のリソースを大量に消費するWebサイトを閲覧するときに何度も起こります。OS全体が応答しなくなり、フリーズして役に立たなくなります。動作しているのは、ディスク(ext4としてフォーマットされたメインシステムパーティション)だけです。これは、大量に使用されています(I/Oスロットリング)。

私は膨満感を取り除くために1分以上待つことを余儀なくされ、時々それは12分間無反応のままなので、私は欲求不満になります。 OSがマルチタスクを適切に処理できないという事実は、まったく奇妙で許容できない動作を反映する傾向があります。

これは、Firefoxだけでなく、anyjavascript-interpreterアプリケーション( Microsoft VSCode または angular-cli (_ng serve_コマンド)およびその他のリソースを大量に消費する実行スレッド-非常に複雑なUML図から非常に大きなグラフを生成するときの plantuml の場合など。

今日、外付けHDD(ext4パーティション上)のデータ回復ソフトウェアを起動すると、OSは完全に管理できなくなります。

このようなバグのある行動の背後にある根本的な原因を特定することはできません

ブラウザで多くのタブを開いており、dfの出力に応じてOSパーティションの使用率は94%です。

_Filesystem     1K-blocks      Used Available Use% Mounted on
udev             3964160         0   3964160   0% /dev
tmpfs             798164      3192    794972   1% /run
/dev/sda5      173466400 153224316  11407424  94% /
tmpfs            3990820     62936   3927884   2% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            3990820         0   3990820   0% /sys/fs/cgroup
/dev/loop5           128       128         0 100% /snap/anbox-installer/24
/dev/loop2           128       128         0 100% /snap/anbox-installer/17
/dev/loop4        223616    223616         0 100% /snap/kde-frameworks-5/26
/dev/loop3         90624     90624         0 100% /snap/core/7169
/dev/loop7        223616    223616         0 100% /snap/kde-frameworks-5/25
/dev/loop8         90624     90624         0 100% /snap/core/7270
/dev/loop0         87552     87552         0 100% /snap/qownnotes/2160
/dev/loop1        241664    241664         0 100% /snap/kde-frameworks-5/27
tmpfs             798164         0    798164   0% /run/user/0
tmpfs             798164        32    798132   1% /run/user/1000
/dev/loop9         87552     87552         0 100% /snap/qownnotes/2176
/dev/sda3      188669948 187132488   1537460 100% /media/kais/DATA
/dev/sdb1       15142960   2091904  13051056  14% /media/kais/STORE N GO
_

ハードウェアとして、私は使用しています:

  1. lscpuによるIntel Core i3 v2348M:

    _Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    Address sizes:       36 bits physical, 48 bits virtual
    CPU(s):              4
    On-line CPU(s) list: 0-3
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    NUMA node(s):        1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               42
    Model name:          Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz
    Stepping:            7
    CPU MHz:             905.312
    CPU max MHz:         2300.0000
    CPU min MHz:         800.0000
    BogoMIPS:            4589.49
    Virtualization:      VT-x
    L1d cache:           32K
    L1i cache:           32K
    L2 cache:            256K
    L3 cache:            3072K
    NUMA node0 CPU(s):   0-3
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc Arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts
    _
  2. 8 GBのRAM。 (以下のhtop出力を参照してください)。

  3. メインボードバス速度99.83 MHz
  4. 500 GB内蔵HDD-これは、オペレーティングシステムからのS.M.A.R.T.レポートです。

    _smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.15.0-33-generic] (local build)
    Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Blue Mobile
    Device Model:     WDC WD5000LPVX-22V0TT0
    Serial Number:    WD-WXE1E13AAMR4
    LU WWN Device Id: 5 0014ee 25db04ba7
    Firmware Version: 01.01A01
    User Capacity:    500,107,862,016 bytes [500 GB]
    Sector Sizes:     512 bytes logical, 4096 bytes physical
    Rotation Rate:    5400 rpm
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ACS-2 (minor revision not indicated)
    SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Wed Aug  7 15:52:05 2019 CET
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    General SMART Values:
    Offline data collection status:  (0x00) Offline data collection activity
                        was never started.
                        Auto Offline Data Collection: Disabled.
    Self-test execution status:      (   0) The previous self-test routine completed
                        without error or no self-test has ever 
                        been run.
    Total time to complete Offline 
    data collection:        ( 8040) seconds.
    Offline data collection
    capabilities:            (0x7b) SMART execute Offline immediate.
                        Auto Offline data collection on/off support.
                        Suspend Offline collection upon new
                        command.
                        Offline surface scan supported.
                        Self-test supported.
                        Conveyance Self-test supported.
                        Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                        power-saving mode.
                        Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                        General Purpose Logging supported.
    Short self-test routine 
    recommended polling time:    (   2) minutes.
    Extended self-test routine
    recommended polling time:    (  93) minutes.
    Conveyance self-test routine
    recommended polling time:    (   5) minutes.
    SCT capabilities:          (0x7035) SCT Status supported.
                        SCT Feature Control supported.
                        SCT Data Table supported.
    
    SMART Attributes Data Structure revision number: 16
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1
      3 Spin_Up_Time            0x0027   149   143   021    Pre-fail  Always       -       1541
      4 Start_Stop_Count        0x0032   057   057   000    Old_age   Always       -       43173
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
      9 Power_On_Hours          0x0032   083   083   000    Old_age   Always       -       12797
     10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
     11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
     12 Power_Cycle_Count       0x0032   091   091   000    Old_age   Always       -       9496
    191 G-Sense_Error_Rate      0x0032   001   001   000    Old_age   Always       -       250
    192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       399
    193 Load_Cycle_Count        0x0032   147   147   000    Old_age   Always       -       160989
    194 Temperature_Celsius     0x0022   101   092   000    Old_age   Always       -       42
    196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
    197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
    200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    No self-tests have been logged.  [To run self-tests, use: smartctl -t]
    
    SMART Selective self-test log data structure revision number 1
     SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
        1        0        0  Not_testing
        2        0        0  Not_testing
        3        0        0  Not_testing
        4        0        0  Not_testing
        5        0        0  Not_testing
    Selective self-test flags (0x0):
      After scanning selected spans, do NOT read-scan remainder of disk.
    If Selective self-test is pending on power-up, resume after 0 minute delay.
    _

これらは、htopごとのリソース使用量の結果です。

_  1  [|||||                    14.1%]   Tasks: 286, 1497 thr; 2 running
  2  [|||||                    13.2%]   Load average: 3.00 4.97 6.09 
  3  [|||||                    12.5%]   Uptime: 3 days, 16:12:35
  4  [|||                       9.3%]
  Mem[|||||||||||||||||||5.09G/7.61G]
  Swp[|||||||||||||||||||3.68G/4.65G]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 7006 jvb        20   0 6640M  102M  6780 S  5.3  1.3 18:53.18 Java -Xmx3072m -X
 8224 kais     20   0 4537M  771M  200M S  6.6  9.9  2h31:23 /usr/lib/firefox/
 2299 kais     20   0 2958M  184M 42912 S  5.3  2.4 13:54.41 /usr/lib/firefox/
 1216 root       20   0  519M  120M 94640 S  5.3  1.5  1h52:50 /usr/lib/xorg/Xor
28401 kais     20   0 3354M  584M  107M S  7.9  7.5 34:44.51 /usr/lib/firefox/
 8439 kais     20   0 4537M  771M  200M S  4.6  9.9 37:06.21 /usr/lib/firefox/
 8831 kais     20   0 3222M  351M 64828 R  4.0  4.5 11:19.87 /usr/lib/firefox/
 7025 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.34 Java -Xmx3072m -X
 7027 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.05 Java -Xmx3072m -X
 5901 kais     20   0  7492  5612  2904 R  4.0  0.1  0:00.66 htop
 5329 kais     20   0  547M 47456 38388 S  1.3  0.6  0:01.29 /usr/lib/gnome-te
13540 kais     20   0 2958M  184M 42912 S  2.0  2.4  0:06.25 /usr/lib/firefox/
16897 kais     20   0  904M 28292 18076 S  2.0  0.4 50:08.37 pavucontrol
17999 kais     20   0 2424M 29460 25380 S  1.3  0.4 52:41.73 /usr/bin/pulseaud
F1 Help  F2 Setup  F3 Search  F4 Filter  F5 Tree  F6 SortBy F7 Nice  -  F8 Nice  +  F9 Kill  F10 Quit
_

Those コマンド= vmstat 5_によって生成されたVM統計の結果も同様です。

私の知る限り、ブロートウェアはOSを無応答にするべきではないので、OSジョブがプロセスを分離し、マルチタスクを保証しているため、ブロートウェアが問題の根本的な原因であるとは考えず、受け入れさえしません。

この問題がOS固有か、ハードウェア固有か、構成固有かはわかりません。

何か案は?

28
Kais

Linuxの応答性を低下させる原因は何ですか?

大量のスワッピングを引き起こす使用可能なRAMをオーバーコミットすると、確実にこれを実行できます。メカニカルHDDのランダムアクセスI/Oでは、読み取り/書き込みヘッドを移動する必要があります。これは、1秒あたり約100シークしか実行できません。

RAM "多すぎる"と、Linuxが完全に昼食に出かけるのはよくあることです。私は、回転ディスクと8GB RAMも持っています。いくつかのソフトウェアで問題が発生しましたつまり、メモリリークが発生します。つまり、メモリ使用量は時間とともに増加し続け、縮小することはないため、ソフトウェアを停止してから再起動するしか方法がありませんでした。この間の経験から、私はそれほど驚かなかった3GB以上のスワップを生成している場合は、10分以上の遅延が発生します。

スワップが3GBを超えるすべてのケースで、これが表示されるとは限りません。理論によると、重要な概念は スラッシング です。一方、2つの異なるワーキングセットを切り替えようとしていて、3 GBを入れ替える必要がある場合、100 MB /秒では、I/Oパターンを完全に最適化できたとしても、少なくとも60秒かかります。実際には、I/Oパターンは最適とはほど遠いものです。

この問題が発生した後、スワップスペースを2GB(以前の数倍)に再フォーマットしたため、システムはそれほど深くスワップできなくなりました。 mkswapはオプションのサイズパラメータを使用するため、パーティションのサイズ変更をいじることなくこれを行うことができます。

おおまかなバランスは、メモリ不足とプロセスの強制終了、およびシステムを長時間停止させてあきらめて再起動することです。 4GBのスワップパーティションが大きすぎるかどうかはわかりません。それはあなたがやっていることに依存するかもしれません。重要なことは、ディスクがいつ動き始めるかを監視し、メモリ使用量を確認して、それに応じて応答することです。

マルチプロセスアプリケーションのメモリ使用量を確認することは困難です。共有メモリを二重にカウントせずにプロセスごとのメモリ使用量を確認するには、Sudo atop -R、 押す M そして m、PSIZE列を確認します。 smemを使用することもできます。 smem -t -P firefoxは、すべてのfirefoxプロセスのPSSを表示し、その後に合計PSSの行が続きます。これは、FirefoxまたはChrome=ベースのブラウザの合計メモリ使用量を測定するための正しいアプローチです(ただし、個々のタブを表示するメモリ使用量を表示するためのブラウザ固有の機能もあります)。

28
sourcejedi

私の知る限り、ブロートウェアはOSを無反応にすべきではないので、ブロートウェアが問題の根本的な原因であるとは考えず、受け入れさえしません。

あなたはこれが好きではありませんが、私はブロートウェアisがあなたの問題だと思います(問題なのはメモリかディスクかはわかりません)。残念ながら、Linuxカーネルはメモリの負荷が高い状況での処理がひどく、メモリが使い果たされると基本的に再起動が必要になることが知られています。あなたの問題がリソースの枯渇であると私に思わせる3つの事柄があります:

  1. ルート(/)とDATAのディスク容量がほぼいっぱいです。 DATAの使用目的はわかりませんが、ルートパーティションのサイズ変更が小さすぎてシステムが動作しなくなるという問題が発生しました。
  2. メモリの負荷が高い、つまりRAMがほぼいっぱいです。RAMがいっぱいになり始めると、ページ違反が発生し始めます。ページ違反が発生しますカーネルがプロセスに十分なメモリを割り当てることができず、代わりに一部のシステムを使用する必要がある場合は、スワップスペースが非常に遅くなります。これにより、最後の観察結果が得られます。
  3. スワップ領域がほぼいっぱいです。 RAMとswapの両方がほぼいっぱいであるため、システムのメモリにかなりの負荷がかかっています。

基本的に、これら3つをまとめると、システムには、ほとんどのことを行うのに十分なリソースがありません。 Linuxが(たとえば、WindowsのNTカーネルと比較して)メモリ不足の状況をうまく処理できないのは残念ですが、そのように見えます。より多くの議論 このRedditスレッドで とそのリンクされたメーリングリストを見つけることができます。

状況を修正する方法については、スワップサイズを増やすことをお勧めしますが、ディスク領域が不足しているため問題になります。 Minecraftサーバーに大量の人がいなければ、メモリを1024m程度に減らしても安全だと思います(私は個人的に1024mを約10人で使用しており、正常に動作します)。 Minecraftサーバーの方がパフォーマンスが高い傾向があるため、スピゴットや紙も使用します。

幸運を!

5
Chase

タイトルを読んだとき、私はLinuxでこの問題を正確に経験したので、すぐに「RAMが足りない」と思いました。ブラウザのタブをたくさん開きすぎた後、10分以上の必死のディスクがクラッシュしました。私は同意します、それは陰惨であり、改善が必要です。 Windowsはこの状況をはるかにうまく処理します。

いくつかの提案:

  • メモリモニタアプレットをシステムトレイに追加して、監視できるようにします。
  • Firefoxの設定で、「コンテンツプロセス制限」を「1」に設定します。設定の下のテキストにあるように:「追加のコンテンツプロセスは、複数のタブを使用するときのパフォーマンスを向上させることができますが、より多くのメモリも使用します。」
  • メモリを大量に消費するブラウザのアドオンを削除または交換します。広告はどのブロッカーよりも多くのメモリを消費するため、広告ブロッカーを保持してください。
  • 他のメモリを大量に消費するプログラムを調査し、場合によっては削除します。

ただし、唯一の真の解決策は、RAMを追加購入することです。

豊富なRAMはこの大惨事の発生を防ぐだけでなく、システムがRAMに大きなファイルキャッシュを構築することを可能にします大容量のファイルキャッシュは、HDDから作業を取り除き、システム上のほとんどすべてのアクションを一般的に速く感じさせます。

4
Boann

free -mの出力は何ですか?使用しているRAMの量は、使用量がわからない場合は無意味です。それと、使用されているスワップ領域の量を知りたいです。

しかし、あなたはあなた自身の質問に答えたと思います。ブラウザで「多くのタブ」を開いていると、それらを閉じない限り、システムの速度が低下する可能性があります。タブは関係なくメモリを消費し続けるためです。システムがフリーズしたとき、一度に何個開いていますか?

また、「非常に複雑なUMLダイアグラムから非常に大きなグラフを生成する」など、メモリを集中的に使用する他のタスクからシステムがフリーズしている場合にも意味があります。グラフが生成されるため、システムの速度が完全に低下するため、驚くことではありません。

これは実際にシステムが動作するはずの方法であるように聞こえます。それか、ここで何か不足しています。

ちなみに、ほとんどの場合メモリ不足が原因であるため、システムが応答しなくなった場合、HDDの統計情報は問題になりません。

4
Zach Sanchez

Htop出力は、RAMの必要性がその容量(RAM + SWAPの合計)よりも高いことを示しています。したがって、最初に考慮すべきことは、RAM使用または増加RAM可用性。

最近のFirefoxのバージョンは極端にリソースを大量に消費していることに注意してください。これは、ウィンドウ/タブにプロセスとメモリ領域が与えられる方法によるものです。タブのクラッシュを回避して、ブラウザ全体が危険にさらされるのを防ぐことが目的でした。価格の価値はありますか?私のPentium 4メインボードは2GBのRAMしかサポートしていないので、とにかく、上記の理由で同様の問題が発生しました。メモリが使い果たされる可能性のあるクラッシュを回避するために、スペアのSSDに最大800Mのスワップスペースを追加しました。私はswappinessと呼ばれる設定を変更することでそれを実現しました。これは、カーネルがメモリページをスワップアウトする熱意を決定します。次のようないくつかの便利なコマンド。

現在のスワップをチェックします:cat /proc/sys/vm/swappiness

これにより、約60の結果が得られる場合があります。これは、負荷が低いシステムで最大のパフォーマンスを得るには非常に高い値です。あなたにとっては、これは明らかに非生産的な働きをするので、sysctl vm.swappiness=1などのコマンドを使用して設定を変更し、システムの実行中に設定を変更できます。

これらの変更を保存するには、ファイル/etc/sysctl.confを探す必要があります。そのファイルで、値を変更するか、行vm.swappiness=1を追加します。

心の中で、これはあなたの場合の解決策ではありませんが、使用可能な回避策を作る必要があります。

クレジット https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

上記の回答のソースには、詳細な説明が含まれています。私の場合、その投稿は非常に役に立ちました。

4
Mr. Donutz

問題がどのように引き起こされ、継続し、成長するかについてのいくつかの優れた議論。ハードウェアを最初のコンピューターの設計に投入したり、既存の実装をアップグレードしたりするなどの問題を先取りしたいと思います。あなたはできる、

  • 追加RAM(32GBは多くのセットアップでうまく動作します)

  • ハードディスクドライブをSSDに交換します

  • スワップドライブにSSD(ソリッドステートドライブ)を追加する

  • RAM(32 GB以上のRAMを使用)にスワップパーティションを作成します)

  • より高速なHDDを入手する

  • より高速な処理とより広い/より速いバスアーキテクチャを備えたシステムに移行します。

これらのハードウェアのアップグレード/交換の一部は、100USドルをはるかに下回ることがあります。これらはLinuxや特定のソフトウェア実装に固有のものではありませんが、使用しているハードウェアはタスクに適切ではないようです。

2
Old Uncle Ho

通常、使用できなくなるのは「単なる」X11だけです。キーボードからプログラムにキーストロークを取得し、画面に何かを表示させるには、いくつかの異なるプロセスのコードを実行する必要があります。 (カーネルからキーストロークを取得するXサーバー、イベントを取得するxtermまたは同等のものを取得して何かを描画することを決定し、メッセージをXサーバーに送信してフォントからグリフを描画します。)

一連のJavascriptクラップのあるページを表示するWebブラウザーのウィンドウ上でマウスを振るだけで、一連のプロセスに一連のメッセージが表示される可能性があります。これらすべてのプロセスが起動し、一連のデータに触れます。おそらく「キャッシュされた」非圧縮ビットマップの束を含みます。したがって、これは、すぐに必要になるより多くのものを追い出す可能性が非常に高いです。

ctrl + alt + F2を使用して別の仮想コンソールに切り替えると、通常、何かが原因でスワップスラッシングが発生している場合でも、わずか数秒のレイテンシでログインしてシェルコマンドを実行できます。bashです。 Linuxカーネルはスワップ可能ではなく、すべてのVTと
キーボード<-> TTYコード。


本当にスラッシングしていないときにスローダウンを回避するには、「スワップネス」を減らすことが役立ちます。例えば16GBのRAMおよびNVMe SSDに2GBのスワップパーティションを使用して、デスクトップで/proc/sys/vm/swappinessチューナブルを6に設定しました。インタラクティブなレイテンシーのチューニングについて詳しくは、 (サーバーのスループットとは対照的に)どのガイドでもその調整可能について言及しています。

しかし、スワップがある場合、LinuxはOOMキラーを呼び出す前にそれを使用します。 スワップパーティションを小さく維持します。これは、Linuxが実際には長期間使用されない、古くなったがらくたをページングするのに十分な大きさです。 (例えば、メモリリーク!)

スワップがいっぱいになっても問題はありませんでした。最新のLinuxは、限られたスワップスペースを問題なく扱います。 Chromium(firefoxの代わりに使用)は、何十ものスタックオーバーフロータブを開いたときに遅くなることがありますが、The Great Suspenderタブを使用しないときにタブをアンロードするための素晴らしいアドオンです。テキストボックスに何も入力していないタブのみがアンロードされますが、これは大幅にRAMを節約します。Firefoxでも利用できる可能性があります。


他の人が示唆しているように、16GBのRAMは、Linuxとのインタラクティブな使用に本当に適しています。DRAMの価格は現在比較的低いです ;約1.5年前に急上昇した後、彼らは再びほとんど減少しました。

2
Peter Cordes