Moby: 「unregister_netdeviceloが解攟されるのを埅っおいたす。䜿甚回数= 3」の埌にカヌネルがクラッシュしたす。

䜜成日 2014幎05月06日  Â·  518コメント  Â·  ゜ヌス: moby/moby

これは、コンテナにログむンしたずきに発生し、Ctrl-cで終了できたせん。

私のシステムはUbuntu 12.04 、カヌネルは3.8.0-25-genericです。

Dockerバヌゞョン

root@wutq-docker:~# docker version
Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f
Server version: 0.10.0
Server API version: 1.10
Git commit (server): dc9c28f
Go version (server): go1.2.1
Last stable version: 0.10.0

スクリプトhttps://raw.githubusercontent.com/dotcloud/docker/master/contrib/check-config.shを䜿甚しお確認したしたが、問題ありたせん。

私はsyslogを芋お、このメッセヌゞを芋぀けたした

May  6 11:30:33 wutq-docker kernel: [62365.889369] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:30:44 wutq-docker kernel: [62376.108277] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:30:54 wutq-docker kernel: [62386.327156] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:31:02 wutq-docker kernel: [62394.423920] INFO: task docker:1024 blocked for more than 120 seconds.
May  6 11:31:02 wutq-docker kernel: [62394.424175] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
May  6 11:31:02 wutq-docker kernel: [62394.424505] docker          D 0000000000000001     0  1024      1 0x00000004
May  6 11:31:02 wutq-docker kernel: [62394.424511]  ffff880077793cb0 0000000000000082 ffffffffffffff04 ffffffff816df509
May  6 11:31:02 wutq-docker kernel: [62394.424517]  ffff880077793fd8 ffff880077793fd8 ffff880077793fd8 0000000000013f40
May  6 11:31:02 wutq-docker kernel: [62394.424521]  ffff88007c461740 ffff880076b1dd00 000080d081f06880 ffffffff81cbbda0
May  6 11:31:02 wutq-docker kernel: [62394.424526] Call Trace:                                                         
May  6 11:31:02 wutq-docker kernel: [62394.424668]  [<ffffffff816df509>] ? __slab_alloc+0x28a/0x2b2
May  6 11:31:02 wutq-docker kernel: [62394.424700]  [<ffffffff816f1849>] schedule+0x29/0x70
May  6 11:31:02 wutq-docker kernel: [62394.424705]  [<ffffffff816f1afe>] schedule_preempt_disabled+0xe/0x10
May  6 11:31:02 wutq-docker kernel: [62394.424710]  [<ffffffff816f0777>] __mutex_lock_slowpath+0xd7/0x150
May  6 11:31:02 wutq-docker kernel: [62394.424715]  [<ffffffff815dc809>] ? copy_net_ns+0x69/0x130
May  6 11:31:02 wutq-docker kernel: [62394.424719]  [<ffffffff815dc0b1>] ? net_alloc_generic+0x21/0x30
May  6 11:31:02 wutq-docker kernel: [62394.424724]  [<ffffffff816f038a>] mutex_lock+0x2a/0x50
May  6 11:31:02 wutq-docker kernel: [62394.424727]  [<ffffffff815dc82c>] copy_net_ns+0x8c/0x130
May  6 11:31:02 wutq-docker kernel: [62394.424733]  [<ffffffff81084851>] create_new_namespaces+0x101/0x1b0
May  6 11:31:02 wutq-docker kernel: [62394.424737]  [<ffffffff81084a33>] copy_namespaces+0xa3/0xe0
May  6 11:31:02 wutq-docker kernel: [62394.424742]  [<ffffffff81057a60>] ? dup_mm+0x140/0x240
May  6 11:31:02 wutq-docker kernel: [62394.424746]  [<ffffffff81058294>] copy_process.part.22+0x6f4/0xe60
May  6 11:31:02 wutq-docker kernel: [62394.424752]  [<ffffffff812da406>] ? security_file_alloc+0x16/0x20
May  6 11:31:02 wutq-docker kernel: [62394.424758]  [<ffffffff8119d118>] ? get_empty_filp+0x88/0x180
May  6 11:31:02 wutq-docker kernel: [62394.424762]  [<ffffffff81058a80>] copy_process+0x80/0x90
May  6 11:31:02 wutq-docker kernel: [62394.424766]  [<ffffffff81058b7c>] do_fork+0x9c/0x230
May  6 11:31:02 wutq-docker kernel: [62394.424769]  [<ffffffff816f277e>] ? _raw_spin_lock+0xe/0x20
May  6 11:31:02 wutq-docker kernel: [62394.424774]  [<ffffffff811b9185>] ? __fd_install+0x55/0x70
May  6 11:31:02 wutq-docker kernel: [62394.424777]  [<ffffffff81058d96>] sys_clone+0x16/0x20
May  6 11:31:02 wutq-docker kernel: [62394.424782]  [<ffffffff816fb939>] stub_clone+0x69/0x90
May  6 11:31:02 wutq-docker kernel: [62394.424786]  [<ffffffff816fb5dd>] ? system_call_fastpath+0x1a/0x1f
May  6 11:31:04 wutq-docker kernel: [62396.466223] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:31:14 wutq-docker kernel: [62406.689132] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:31:25 wutq-docker kernel: [62416.908036] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:31:35 wutq-docker kernel: [62427.126927] unregister_netdevice: waiting for lo to become free. Usage count = 3
May  6 11:31:45 wutq-docker kernel: [62437.345860] unregister_netdevice: waiting for lo to become free. Usage count = 3

これが起こった埌、私は別のタヌミナルを開いおこのプロセスを匷制終了し、次にdockerを再起動したすが、これはハングしたす。

ホストを再起動しおも、シャットダりン時に数分間そのメッセヌゞが衚瀺されたす。
screen shot 2014-05-06 at 11 49 27

arekernel arenetworking

最も参考になるコメント

GitHubが叀いコメントを非衚瀺にしおいるため、このhttps://github.com/moby/moby/issues/5618#issuecomment-351942943をここで繰り返したす

ここに到着する堎合

ここで説明しおいる問題はカヌネルのバグであり、ただ完党には修正されおいたせん。 この問題の発生を修正するパッチがカヌネルに組み蟌たれたしたが、他のパッチはただ解決されおいたせん。

_いく぀かの_状況に圹立぀可胜性のあるオプションがいく぀かありたすが、すべおではありたせん繰り返したすが、同じ゚ラヌを匕き起こす問題の組み合わせである可胜性が高いです

「unregister_netdeviceloが解攟されるのを埅っおいたす」゚ラヌ自䜓はバグではありたせん

カヌネルクラッシュの堎合はバグです以䞋を参照

「私もこれもありたす」ずいうコメントを残さないでください

「私もこれを持っおいたす」はバグの解決に圹立ちたせん。 問題の解決に圹立぀可胜性のある情報がある堎合にのみコメントを残しおくださいその堎合、アップストリヌムのカヌネルにパッチを提䟛するこずが最善のステップである可胜性がありたす。

この問題があるこずを知らせたい堎合は、䞊郚の説明にある[
screen shot 2017-03-09 at 16 12 17

曎新に関する最新情報を入手したい堎合は、_サブスクラむブボタン_を䜿甚しおください。

screen shot 2017-03-09 at 16 11 03

ここにあるすべおのコメントは、3000人を電子メヌル/通知を送信したす。この問題に関する䌚話はただ解決されおいないため、ロックしたくありたせんが、これを無芖するず匷制される可胜性がありたす。

スレッドをわずかに短瞮するために、有甚な情報を远加しないコメントを削陀したす

この問題の解決を支揎したい堎合

  • 非衚瀺になっおいるコメントを含め、スレッド党䜓を読んでください。 それは長く、githubはコメントを非衚瀺にしたすしたがっお、コメントを再び衚瀺するにはクリックする必芁がありたす。 このスレッドにすでに存圚する情報があなたを助ける可胜性がある堎合はたくさんありたす

screen shot 2018-07-25 at 15 18 14

  • 圹立぀情報に぀いおは、このコメントhttps://github.com/moby/moby/issues/5618#issuecomment -316297818およびその前埌のコメントをお読み

明確にするために、メッセヌゞ自䜓は良性であり、OPによっお報告されたメッセヌゞの埌にカヌネルがクラッシュしたすが、そうではありたせん。

このメッセヌゞの送信元であるコヌド内のコメントは、䜕が起こっおいるかを説明しおいたす。 基本的に、ネットワヌクデバむスコンテナ内のvethペアの終わりなどのすべおのナヌザヌIPスタックなどは、ネットワヌクデバむスを䜿甚しおいるずきに、ネットワヌクデバむス構造の参照カりントをむンクリメントしたす。 デバむスが取り倖されるずたずえば、コンテナが取り倖されるず、各ナヌザヌに通知が届き、参照カりントを枛らす前に、クリヌンアップ開いおいる゜ケットを閉じるなどを実行できるようになりたす。 このクリヌンアップには時間がかかるこずがあるため、特に負荷が高い堎合むンタヌフェむスが倚い、接続が倚いなど、カヌネルがメッセヌゞをここに出力するこずがありたす。

ネットワヌクデバむスのナヌザヌが参照カりントをデクリメントしない堎合、カヌネルの他の郚分は、クリヌンアップを埅機しおいるタスクがスタックしおいるず刀断し、クラッシュしたす。 カヌネルのバグを瀺すのはこのクラッシュだけです䞀郚のナヌザヌは、コヌドパスを介しお、参照カりントをデクリメントしたせんでした。 そのようなバグがいく぀かあり、それらは最新のカヌネルで修正されおいたすそしおおそらく叀いものにバックポヌトされおいたす。 私はそのようなクラッシュをトリガヌするためにかなりの数のストレステストを曞きたしたそしおそれらを曞き続けたしたが、珟代のカヌネルでは再珟できたせんでしたしかし私は䞊蚘のメッセヌゞをしたす。

*カヌネルが実際にクラッシュした堎合にのみ、この問題に぀いお報告しおください*。そうすれば、次のこずに非垞に関心がありたす。

  • カヌネルバヌゞョン uname -r出力
  • Linuxディストリビュヌション/バヌゞョン
  • Linuxベンダヌの最新のカヌネルバヌゞョンを䜿甚しおいたすか
  • ネットワヌク蚭定ブリッゞ、オヌバヌレむ、IPv4、IPv6など
  • ワヌクロヌドの説明コンテナの皮類、ネットワヌク負荷の皮類など
  • そしお理想的には単玔再生産

ありがずう

党おのコメント518件

eth0に぀いおも非垞によく䌌た問題が発生しおいたす。 Ubuntu12.04も。

マシンの電源を入れ盎す必芁がありたす。 /var/log/kern.log 

May 22 19:26:08 box kernel: [596765.670275] device veth5070 entered promiscuous mode
May 22 19:26:08 box kernel: [596765.680630] IPv6: ADDRCONF(NETDEV_UP): veth5070: link is not ready
May 22 19:26:08 box kernel: [596765.700561] IPv6: ADDRCONF(NETDEV_CHANGE): veth5070: link becomes ready
May 22 19:26:08 box kernel: [596765.700628] docker0: port 7(veth5070) entered forwarding state
May 22 19:26:08 box kernel: [596765.700638] docker0: port 7(veth5070) entered forwarding state
May 22 19:26:19 box kernel: [596777.386084] [FW DBLOCK] IN=docker0 OUT= PHYSIN=veth5070 MAC=56:84:7a:fe:97:99:9e:df:a7:3f:23:42:08:00 SRC=172.17.0.8 DST=172.17.42.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=170 DF PROTO=TCP SPT=51615 DPT=13162 WINDOW=14600 RES=0x00 SYN URGP=0
May 22 19:26:21 box kernel: [596779.371993] [FW DBLOCK] IN=docker0 OUT= PHYSIN=veth5070 MAC=56:84:7a:fe:97:99:9e:df:a7:3f:23:42:08:00 SRC=172.17.0.8 DST=172.17.42.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=549 DF PROTO=TCP SPT=46878 DPT=12518 WINDOW=14600 RES=0x00 SYN URGP=0
May 22 19:26:23 box kernel: [596780.704031] docker0: port 7(veth5070) entered forwarding state
May 22 19:27:13 box kernel: [596831.359999] docker0: port 7(veth5070) entered disabled state
May 22 19:27:13 box kernel: [596831.361329] device veth5070 left promiscuous mode
May 22 19:27:13 box kernel: [596831.361333] docker0: port 7(veth5070) entered disabled state
May 22 19:27:24 box kernel: [596841.516039] unregister_netdevice: waiting for eth0 to become free. Usage count = 1
May 22 19:27:34 box kernel: [596851.756060] unregister_netdevice: waiting for eth0 to become free. Usage count = 1
May 22 19:27:44 box kernel: [596861.772101] unregister_netdevice: waiting for eth0 to become free. Usage count = 1

ねえ、これは私にも起こり始めたばかりです。

Dockerバヌゞョン

Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.1
Server API version: 1.11
Git commit (server): fb99f99
Go version (server): go1.2.1
Last stable version: 0.11.1

カヌネルログ http 

システムの詳现
パッチが適甚されたカヌネル3.14.3-rt4でUbuntu 14.04LTSを実行したす。 しかし、それがデフォルトのlinux-3.13.0-27-genericカヌネルで発生するこずを確認したす。 ただし、面癜いのは、これが発生するず、すべおのタヌミナルりィンドりがフリヌズし、その前にせいぜい数文字を入力できるようになるこずです。 同じ運呜は私が開いた新しいものにも圓おはたりたす-そしお私は䞊蚘の良い医者のように私の貧しいラップトップの電源を入れ盎す必芁がありたす。 蚘録のために、私はurxvtでfish shellを実行しおいるか、xmonadでxtermを実行しおいたす。 プレヌンバッシュに圱響するかどうかはチェックしおいたせん。

これは関連しおいる可胜性がありたす
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1065434#yui_3_10_3_1_1401948176063_2050

コンテナ内のネットワヌクを介しおかなり倧量のデヌタをコピヌする
その埌、コンテナを終了するず、あたりのデクリメントが倱われる可胜性がありたす
ネットワヌクデバむスのCPU参照カりント。

案の定、これが私に起こったのは、 apt-get倧量の䟝存関係を持぀パッケヌゞを䜜成した盎埌

Ubuntu 12.04.3から14.04にアップグレヌドするず、他の倉曎なしでこれが修正されたした。

私はこれをRHEL7、3.10.0-123.4.2.el7.x86_64で経隓したす

3.14-rt4を実行しおいるずきに、VirtualBox仮想ネットワヌクむンタヌフェむスで同じこずが起こっおいるこずに気づきたした。 バニラ3.13か䜕かで修正されるこずになっおいたす。

@egasimusここでも同じ-

Debianカヌネル3.14にアップグレヌドしたしたが、問題は解決したようです。 3.5未満の䞀郚のカヌネルに問題が存圚し、3.5で修正され、3.6でリグレッションが発生し、3.12〜3.14でパッチが適甚されたようです。 https://bugzilla.redhat.com/show_bug.cgi?id=880394

@spiffytechリアルタむムカヌネルフレヌバヌに関しおこれをどこで報告できるか考えおいたすか 私は圌らが他のすべおのバヌゞョンのRTパッチをリリヌスしおいるだけだず思いたす、そしおこれがただ壊れおいる状態で3.16-rtが出おくるのを芋るのは本圓に嫌です。 /

線集 kernel.orgに提出したした。

3.18.1を実行しおいるUbuntu14.10でこれを取埗しおいたす。 カヌネルログは

Dec 21 22:49:31 inotmac kernel: [15225.866600] unregister_netdevice: waiting for lo to become free. Usage count = 2
Dec 21 22:49:40 inotmac kernel: [15235.179263] INFO: task docker:19599 blocked for more than 120 seconds.
Dec 21 22:49:40 inotmac kernel: [15235.179268]       Tainted: G           OE  3.18.1-031801-generic #201412170637
Dec 21 22:49:40 inotmac kernel: [15235.179269] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Dec 21 22:49:40 inotmac kernel: [15235.179271] docker          D 0000000000000001     0 19599      1 0x00000000
Dec 21 22:49:40 inotmac kernel: [15235.179275]  ffff8802082abcc0 0000000000000086 ffff880235c3b700 00000000ffffffff
Dec 21 22:49:40 inotmac kernel: [15235.179277]  ffff8802082abfd8 0000000000013640 ffff8800288f2300 0000000000013640
Dec 21 22:49:40 inotmac kernel: [15235.179280]  ffff880232cf0000 ffff8801a467c600 ffffffff81f9d4b8 ffffffff81cd9c60
Dec 21 22:49:40 inotmac kernel: [15235.179282] Call Trace:
Dec 21 22:49:40 inotmac kernel: [15235.179289]  [<ffffffff817af549>] schedule+0x29/0x70
Dec 21 22:49:40 inotmac kernel: [15235.179292]  [<ffffffff817af88e>] schedule_preempt_disabled+0xe/0x10
Dec 21 22:49:40 inotmac kernel: [15235.179296]  [<ffffffff817b1545>] __mutex_lock_slowpath+0x95/0x100
Dec 21 22:49:40 inotmac kernel: [15235.179299]  [<ffffffff8168d5c9>] ? copy_net_ns+0x69/0x150
Dec 21 22:49:40 inotmac kernel: [15235.179302]  [<ffffffff817b15d3>] mutex_lock+0x23/0x37
Dec 21 22:49:40 inotmac kernel: [15235.179305]  [<ffffffff8168d5f8>] copy_net_ns+0x98/0x150
Dec 21 22:49:40 inotmac kernel: [15235.179308]  [<ffffffff810941f1>] create_new_namespaces+0x101/0x1b0
Dec 21 22:49:40 inotmac kernel: [15235.179311]  [<ffffffff8109432b>] copy_namespaces+0x8b/0xa0
Dec 21 22:49:40 inotmac kernel: [15235.179315]  [<ffffffff81073458>] copy_process.part.28+0x828/0xed0
Dec 21 22:49:40 inotmac kernel: [15235.179318]  [<ffffffff811f157f>] ? get_empty_filp+0xcf/0x1c0
Dec 21 22:49:40 inotmac kernel: [15235.179320]  [<ffffffff81073b80>] copy_process+0x80/0x90
Dec 21 22:49:40 inotmac kernel: [15235.179323]  [<ffffffff81073ca2>] do_fork+0x62/0x280
Dec 21 22:49:40 inotmac kernel: [15235.179326]  [<ffffffff8120cfc0>] ? get_unused_fd_flags+0x30/0x40
Dec 21 22:49:40 inotmac kernel: [15235.179329]  [<ffffffff8120d028>] ? __fd_install+0x58/0x70
Dec 21 22:49:40 inotmac kernel: [15235.179331]  [<ffffffff81073f46>] SyS_clone+0x16/0x20
Dec 21 22:49:40 inotmac kernel: [15235.179334]  [<ffffffff817b3ab9>] stub_clone+0x69/0x90
Dec 21 22:49:40 inotmac kernel: [15235.179336]  [<ffffffff817b376d>] ? system_call_fastpath+0x16/0x1b
Dec 21 22:49:41 inotmac kernel: [15235.950976] unregister_netdevice: waiting for lo to become free. Usage count = 2
Dec 21 22:49:51 inotmac kernel: [15246.059346] unregister_netdevice: waiting for lo to become free. Usage count = 2

システムがフリヌズしなくなったら、 docker version/info送信したす:)

この問題も発生しおいたす。 Ubuntu 14.04、3.13.0-37-generic

Ubuntu 14.04サヌバヌで、私のチヌムは3.13.0-40-genericから3.13.0-32-genericにダりングレヌドするず問題が「解決」するこずを発芋したした。 @sbwardの芳察を考えるず、回垰は3.13.0-32-genericの埌、3.13.0-37-genericの前たたはそれを含むになりたす。

私たちの堎合、時々_負の_䜿甚数が衚瀺されるこずを付け加えおおきたす。

FWIW信頌できるカヌネル3.13.0-40-generic69-Ubuntuでlxcを実行しおいるこのバグに遭遇するず、メッセヌゞがdmesgに衚瀺され、その埌に次のスタックトレヌスが衚瀺されたす。

[27211131.602869] INFO: task lxc-start:26342 blocked for more than 120 seconds.
[27211131.602874]       Not tainted 3.13.0-40-generic #69-Ubuntu
[27211131.602877] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[27211131.602881] lxc-start       D 0000000000000001     0 26342      1 0x00000080
[27211131.602883]  ffff88000d001d40 0000000000000282 ffff88001aa21800 ffff88000d001fd8
[27211131.602886]  0000000000014480 0000000000014480 ffff88001aa21800 ffffffff81cdb760
[27211131.602888]  ffffffff81cdb764 ffff88001aa21800 00000000ffffffff ffffffff81cdb768
[27211131.602891] Call Trace:
[27211131.602894]  [<ffffffff81723b69>] schedule_preempt_disabled+0x29/0x70
[27211131.602897]  [<ffffffff817259d5>] __mutex_lock_slowpath+0x135/0x1b0
[27211131.602900]  [<ffffffff811a2679>] ? __kmalloc+0x1e9/0x230
[27211131.602903]  [<ffffffff81725a6f>] mutex_lock+0x1f/0x2f
[27211131.602905]  [<ffffffff8161c2c1>] copy_net_ns+0x71/0x130
[27211131.602908]  [<ffffffff8108f889>] create_new_namespaces+0xf9/0x180
[27211131.602910]  [<ffffffff8108f983>] copy_namespaces+0x73/0xa0
[27211131.602912]  [<ffffffff81065b16>] copy_process.part.26+0x9a6/0x16b0
[27211131.602915]  [<ffffffff810669f5>] do_fork+0xd5/0x340
[27211131.602917]  [<ffffffff810c8e8d>] ? call_rcu_sched+0x1d/0x20
[27211131.602919]  [<ffffffff81066ce6>] SyS_clone+0x16/0x20
[27211131.602921]  [<ffffffff81730089>] stub_clone+0x69/0x90
[27211131.602923]  [<ffffffff8172fd2d>] ? system_call_fastpath+0x1a/0x1f

Ubuntu14.04ずDebianjessie w / kernel3.16.xでこれに遭遇したした。

Dockerコマンド

docker run -t -i -v /data/sitespeed.io:/sitespeed.io/results company/dockerfiles:sitespeed.io-latest --name "Superbrowse"

これはかなり悪い問題のようです...

@jbalonso 3.13.0-32-genericを

@MrMMorris公開されおいる画像を䜿甚しお、再生スクリプトを共有できたすか

システムでこの゚ラヌが発生しおいる人は誰でも、ディストリビュヌションでLinuxカヌネルのパッケヌゞを実行しおいたすが、これは叀すぎお、この特定の問題に察する修正が䞍足しおいたす。

この問題が発生した堎合は、必ずapt-get update && apt-get dist-upgrade -yを実行しお、システムを再起動しおください。 Digital Oceanを䜿甚しおいる堎合は、最新のカヌネルを自動的に䜿甚しないため、曎新䞭にむンストヌルされたばかりのカヌネルバヌゞョンも遞択する必芁がありたすhttps://digitalocean.uservoice.com/forums/136585-digitaloceanを参照。 / suggestions / 2814988-give-option-to-use-the-droplet-s-own-bootloader。

CentOS / RHEL / Fedora / Scientific Linuxナヌザヌは、 yum updateを䜿甚しおシステムを最新の状態に保ち、曎新をむンストヌルした埌に再起動する必芁がありたす。

この問題を報告するずきは、システムに完党にパッチが適甚され、ディストリビュヌションのベンダヌが提䟛する最新の安定したアップデヌト手動でむンストヌルされたexperimental / tests / alpha / beta / rcパッケヌゞがないで最新であるこずを確認しおください。

@unclejack

apt-get update && apt-get dist-upgrade -y

ubuntu 14.043.13.0-46-ゞェネリック

docker run぀だけ実行しおも、゚ラヌが発生したす

必芁に応じお耇補甚のAMIを䜜成できたす

@MrMMorris Ubuntu14.04の最新のカヌネルパッケヌゞでただ問題があるこずを確認しおいただきありがずうございたす。

私が助けるために他にできるこずは䜕でも、私に知らせおください 笑顔

@MrMMorris再珟機胜を提䟛できる堎合は、Ubuntuで開かれおいるバグがあり、非垞に高く評䟡されたす https 

@rsampaio今日時間があれば、間違いなくあなたのためにそれを手に入れたす

この問題は、Debian7ずDebian8の䞡方の3.16.7でも発生したす https //github.com/docker/docker/issues/9605#issuecomment-85025729。 今のずころ、サヌバヌを再起動するこずがこれを修正する唯䞀の方法です。

䞀郚のDockerコンテナヌすべおのコンテナヌではないを起動するず、カヌネル2.6.32-504.8.1.el6.x86_64を䜿甚するRHEL6.6でこの問題が発生したす。
_ kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= -1_

繰り返しになりたすが、珟時点ではサヌバヌの再起動が唯䞀の解決策のようです

カヌネル3.19.3を搭茉したCoreOS647.0.0でもこれが芋られたす。

再起動も私が芋぀けた唯䞀の解決策です。

sidのカヌネル4.0.2でDebianjessieをテストしたした-問題は残っおいたす。

Ubuntu以倖のコンテナを実行しおいるずきにこの問題が発生するのを芋た人はいたすか

はい。 Debianのもの。
2015幎6月19日 1901пПльзПватель "popsikle" [email protected]
МапОсал

Ubuntu以倖のコンテナを実行しおいるずきにこの問題が発生するのを芋た人はいたすか

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-113556862 。

これはカヌネルの問題であり、むメヌゞ関連の問題ではありたせん。 別の画像に切り替えおも、この問題は改善たたは悪化したせん。

4.1.2-bone12カヌネルを実行しおいるBeagleBoneBlackでDebianJessieの問題が発生しおいたす

4.1.2から4.2-rc2に切り替えた埌の経隓1.8.0のgitビルドを䜿甚。
/ var / lib / docker / *を削陀しおも、問題は解決したせん。
4.1.2に戻すず、問題は解決したす。

たた、VirtualBoxにも同じ問題があり、カヌネルドラむバヌの郚分で䜕かを行うず思われるv5.0.0v4にレトロポヌトのパッチがありたす。問題を理解するために調べる䟡倀がありたす。

これはVirtualBoxの修正です https 
実際にはカヌネルを倉曎するのではなく、カヌネルモゞュヌルだけを倉曎したす。

4.2-rc2でもこの問題が発生しおいたす

unregister_netdevicevethf1738d3が解攟されるのを埅っおいたす。 䜿甚回数= 1

4.2-RC3をコンパむルしたばかりで、再び機胜するようです

@ nazar-pc情報をありがずう。 4.1.3でヒットしただけで、かなり動揺したした
@techniqはここでも同じですが、カヌネルのバグはかなり悪いです。 4.1ツリヌにバックポヌトされるように報告する必芁があるのではないかず思いたす。

Linux docker13 3.19.0-22-generic22-Ubuntu SMP Tue Jun 16 17:15:15 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

Ubuntu 15.04のカヌネル、同じ問題

4.2-rc3でも芋たした。 デバむスのリヌクに関するバグは1぀ではありたせん:)高負荷で4.1以䞊のカヌネルで再珟できたす。

私もこの問題を抱えおいたした。 Ubuntu 3.13.0-57-汎甚、tutum経由でプロビゞョニング。 残念ながら、kern.logずsyslogがいっぱいになり、マシンがクラッシュしたす。 これはデヌタベヌスマシンdockerized postgresで発生するため、システム党䜓がダりンしたす...

「私も」の合唱に加わっお、ロヌカルのプラむベヌトDockerリポゞトリからDockerむメヌゞをプルしおいるずきに、RancherOS最小OS0.3.3を実行しおいるクラりドスタックVMでこの問題が発生しおいたす。 それは10秒ごずに起こっおいたすが、それが䜕かを意味するかどうかはわかりたせん。

4.2-rc7でもこの問題が発生しおいたす

これに関するニュヌスはありたすかどのカヌネルを䜿甚する必芁がありたすか 完党に最新のカヌネルUbuntu 14.04では3.19.0-26でも発生し続けたす

私たちもこの問題を抱えおいたす。 これは、userland-proxy = falseを構成した埌に発生したす。 1分ごずにnagiosプラグむンコマンドを実行するために新しいDockerコンテナを生成するいく぀かのモニタヌスクリプトを䜿甚しおいたす。 プロセスツリヌに衚瀺されおいるのは、docker rmコマンドでスタックし、kern.logファむルに倚くの゚ラヌが衚瀺されおいるこずです。

Sep 24 03:53:13 prod-service-05 kernel: [ 1920.544106] unregister_netdevice: waiting for lo to become free. Usage count = 2
Sep 24 03:53:13 prod-service-05 kernel: [ 1921.008076] unregister_netdevice: waiting for vethb6bf4db to become free. Usage count = 1
Sep 24 03:53:23 prod-service-05 kernel: [ 1930.676078] unregister_netdevice: waiting for lo to become free. Usage count = 2
Sep 24 03:53:23 prod-service-05 kernel: [ 1931.140074] unregister_netdevice: waiting for vethb6bf4db to become free. Usage count = 1
Sep 24 03:53:33 prod-service-05 kernel: [ 1940.820078] unregister_netdevice: waiting for lo to become free. Usage count = 2

これは私たちのシステム情報です

ubuntu@prod-service-02:~$ docker version
Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:19:00 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:19:00 UTC 2015
 OS/Arch:      linux/amd64
ubuntu@prod-service-02:~$ docker info
Containers: 2
Images: 52
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: gelf
Kernel Version: 4.0.9-040009-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 4
Total Memory: 7.304 GiB
Name: prod-service-02
ID: NOIK:LVBV:HFB4:GZ2Y:Q74F:Q4WW:ZE22:MDE7:7EBW:XS42:ZK4G:XNTB
WARNING: No swap limit support
Labels:
 provider=generic

曎新 https  たす。 そこで、2015幎9月2日にビルドされたカヌネルv3.19.8-ckt6-vivid、たたは2015幎9月21日にビルドされたv4.2.1-unstableを詊しおみたしたが、ただ問題がありたす。

3.19.0-28-genericを䜿甚しお再び問題が発生したため、最新のubuntuカヌネルは安党ではありたせん

うん、叀いカヌネルでは--userland-proxy=falseは今のずころ最良のオプションではないようです:(

いいえ。3.19、4.0、4.2のすべおのカヌネルバヌゞョンで--userland-proxy = falseを詊したしたが、それでも問題は発生したす。

私はiptablesなしでuserlandプロキシを䜿甚しおおり--iptables = false、これを最䜎でも1日1回芋おいたす。 残念ながら、唯䞀の回避策は、SysRq手法を䜿甚しおサヌバヌをハヌドリセットするりォッチドッグでした。

私のシステムは、重いstdout / errラむタヌであるいく぀かのコンテナヌを実行したす。他の人は、それがバグを匕き起こす可胜性があるず報告したした。

`` `` `` ``
$ docker情報
コンテナ15
画像148
ストレヌゞドラむバヌaufs
ルヌトディレクトリ/ var / lib / docker / aufs
バッキングファむルシステムextfs
Dirs178
サポヌトされおいるDirperm1true
実行ドラむバヌネむティブ-0.2
ロギングドラむバヌjson-file
カヌネルバヌゞョン3.19.0-26-generic
オペレヌティングシステムUbuntu 14.04.3 LTS
CPU12
総メモリ62.89 GiB
名前 * *
ID2 ALJYTUH  QCNXFPEO YBG4ZTL42 EYKAV7D FN7C IVNUUWBL YYZ5

$ dockerバヌゞョン
クラむアントバヌゞョン1.7.0
クラむアントAPIバヌゞョン1.19
Goバヌゞョンクラむアントgo1.4.2
Gitコミットクラむアント0baf609
OS / Archクラむアントlinux / amd64
サヌバヌバヌゞョン1.7.0
サヌバヌAPIバヌゞョン1.19
Goバヌゞョンサヌバヌgo1.4.2
Gitコミットサヌバヌ0baf609
OS / Archサヌバヌlinux / amd64```
`` `` `` ``

残念ながら、私も同じケヌスです。今日、本番サヌバヌはこの゚ラヌで3回倱敗したした。これを凊理する唯䞀の方法は、いく぀かのマゞックSysRqコマンドを䜿甚するこずです。

バンプ

私はただカヌネル4.2.0を䜿甚しおいる最新のdebianjessieでこれを芋おいたす

ここでも同じ問題がありたす。 突然、3぀のawsサヌバヌがダりンし、ログに「unregister_netdeviceloが解攟されるのを埅っおいたす。䜿甚回数= 1」ず叫んでいたした。

Ubuntu14.04
カヌネルバヌゞョン3.13.0-63-generic
Docker1.7.1

Syslog
screenshot from 2015-10-22 11 53 41

安党に䜿甚できるカヌネルバヌゞョンはありたすか

この問題は、Ubuntu15.10のカヌネル4.2でも発生したす

coreosで発生したした

画像1174
ストレヌゞドラむバヌオヌバヌレむ
バッキングファむルシステムextfs
実行ドラむバヌネむティブ-0.2
ロギングドラむバヌjson-file
カヌネルバヌゞョン4.1.7-coreos
オペレヌティングシステムCoreOS 766.4.0

@ killme2008が前回蚀ったカヌネルのバグ

おそらく、カヌネルの䞊にこのパッチを適甚しお詊しおみる必芁がありたすhttp://www.spinics.net/lists/netdev/msg351337.html
パケットpacket_bindの競合状態

たたは、-stableツリヌでバックポヌトを埅ちたす。 それは遅かれ早かれ来るでしょう。

+1玠晎らしいニュヌスです

みなさん、朗報です

ここでの最埌のコメント執筆時点、17日前以来、これらの゚ラヌは二床ず発生しおいたせん。 私のサヌバヌそのうちの玄30台は、いく぀かの叀いパッケヌゞでubuntu14.04を実行しおいたした。

docker-engine1.7.1から1.8.3を含む完党なシステムアップグレヌド+ ubuntuのリポゞトリで可胜な最新バヌゞョンぞのカヌネルアップグレヌドの埌、サヌバヌは問題なく実行されおいたす。

8ball

今日のAWSむンスタンスの3぀でも発生したした

Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:19:00 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:19:00 UTC 2015
 OS/Arch:      linux/amd64
Containers: 45
Images: 423
Storage Driver: devicemapper
 Pool Name: docker-202:1-527948-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 22.79 GB
 Data Space Total: 107.4 GB
 Data Space Available: 84.58 GB
 Metadata Space Used: 35.58 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.112 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.77 (2012-10-15)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-49-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 8
Total Memory: 60 GiB
Name: ip-10-0-1-36
ID: HEZG:TBTM:V4LN:IU7U:P55N:HNVH:XXOP:RMUX:JNWH:DSJP:3OA4:MGO5
WARNING: No swap limit support

Ubuntu 14.04でも同じ問題が発生しおいたす。すべおのパッケヌゞが最新で、最新のlinux-generic-lts-vividカヌネルです。

$ docker version
Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:43:42 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:43:42 UTC 2015
 OS/Arch:      linux/amd64
$ docker info
Containers: 14
Images: 123
Server Version: 1.9.0
Storage Driver: aufs
 Root Dir: /mnt/docker-images/aufs
 Backing Filesystem: extfs
 Dirs: 151
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-32-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 8
Total Memory: 29.45 GiB
Name: ip-172-31-35-202
ID: 3B7E:5DJL:S4IB:KUCL:6UKN:64OF:WCLO:JKGK:4OI2:I2R6:63EY:WATN
WARNING: No swap limit support

最新のlinux-image-generic 3.13.0-67-genericでもありたした。

ここrancherOSでも同じ問題が発生しおいたす。

ただFedora22で起こっおいたす曎新されたした...
dockerを再起動するず、メッセヌゞを取り陀くこずができたす

systemctl restart docker
...メッセヌゞが玄3〜4回再び衚瀺され、その埌停止したす

同じ゚ラヌがcoreosで私に䌚いたす

coreosのバヌゞョン

 core @ core-1-94〜 $ cat / etc / os-release
 NAME = CoreOS
 ID = coreos
 VERSION = 766.5.0
 VERSION_ID = 766.5.0
 BUILD_ID =
 PRETTY_NAME = "CoreOS 766.5.0"
 ANSI_COLOR = "1; 32"
 HOME_URL = "https://coreos.com/"
 BUG_REPORT_URL = "https://github.com/coreos/bugs/issues"

Dockerバヌゞョン

 core @ core-1-94〜 $ dockerバヌゞョン
クラむアントバヌゞョン1.7.1
クラむアントAPIバヌゞョン1.19
 Goバヌゞョンクラむアントgo1.4.2
 Gitコミットクラむアントdf2f73d-dirty
 OS / Archクラむアントlinux / amd64
サヌバヌバヌゞョン1.7.1
サヌバヌAPIバヌゞョン1.19
 Goバヌゞョンサヌバヌgo1.4.2
 Gitコミットサヌバヌdf2f73d-dirty
 OS / Archサヌバヌlinux / amd64
 core @ core-1-94〜 $ uname -a
 Linuxコア-1-944.1.7-coreos-r12 SMP Thu Nov 5 02:10:23 UTC 2015 x86_64 IntelRXeonRCPU E5-2660 v3 @ 2.60GHz GenuineIntel GNU / Linux

システムログ

 Dec 07 16:26:54 core-1-94カヌネルunregister_netdeviceveth775ea53が解攟されるのを埅っおいたす。 䜿甚回数= 1
 Dec 07 16:26:54 core-1-94カヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 2
 Dec 07 16:26:55 core-1-94 sdnotify-proxy [1203]I1207 082655.930559 00001 vxlan.go340]ミスではないこずを無芖する4e5c472f9a85、10.244 .97.10
 Dec 07 16:26:59 core-1-94 dockerd [1269]time = "2015-12-07T162659.448438648 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:01 core-1-94 sdnotify-proxy [1203]I1207 082701.050588 00001 vxlan.go340]ミスではないこずを無芖する5ab1f7e97dd0、10.244 .34.8
 Dec 07 16:27:02 core-1-94 dockerd [1269]time = "2015-12-07T162702.398020120 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:02 core-1-94 dockerd [1269]time = "2015-12-07T162702.398316249 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:04 core-1-94 dockerd [1269]time = "2015-12-07T162704.449317389 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:04 core-1-94カヌネルunregister_netdeviceveth775ea53が解攟されるのを埅っおいたす。 䜿甚回数= 1
 Dec 07 16:27:04 core-1-94カヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 2
 Dec 07 16:27:06 core-1-94 sdnotify-proxy [1203]I1207 082706.106573 00001 vxlan.go340]ミスではないこずを無芖するa638ac7993f5、10.244 .47.24
 Dec 07 16:27:09 core-1-94 dockerd [1269]time = "2015-12-07T162709.449944048 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:11 core-1-94 sdnotify-proxy [1203]I1207 082711.162578 00001 vxlan.go340]ミスではないこずを無芖する0ef06ff46957、10.244 .71.24
 Dec 07 16:27:12 core-1-94 dockerd [1269]time = "2015-12-07T162712.502991197 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:12 core-1-94 dockerd [1269]time = "2015-12-07T162712.503411160 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:14 core-1-94 dockerd [1269]time = "2015-12-07T162714.450646841 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:14 core-1-94カヌネルunregister_netdeviceveth775ea53が解攟されるのを埅っおいたす。 䜿甚回数= 1
 Dec 07 16:27:14 core-1-94カヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 2
 Dec 07 16:27:16 core-1-94 sdnotify-proxy [1203]I1207 082716.282556 00001 vxlan.go340]ミスではないこずを無芖するa6627731ef68、10.244 .13.6
 Dec 07 16:27:19 core-1-94 dockerd [1269]time = "2015-12-07T162719.451486277 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:21 core-1-94 sdnotify-proxy [1203]I1207 082721.402559 00001 vxlan.go340]ミスではないこずを無芖する92c46652cdbb、10.244 .24.7
 Dec 07 16:27:22 core-1-94 dockerd [1269]time = "2015-12-07T162722.575446889 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:22 core-1-94 dockerd [1269]time = "2015-12-07T162722.575838302 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:24 core-1-94 dockerd [1269]time = "2015-12-07T162724.452320364 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:24 core-1-94カヌネルunregister_netdeviceveth775ea53が解攟されるのを埅っおいたす。 䜿甚回数= 1
 Dec 07 16:27:24 core-1-94カヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 2
 Dec 07 16:27:26 core-1-94 sdnotify-proxy [1203]I1207 082726.394569 00001 vxlan.go340]ミスではないこずを無芖する6af7bfec0350、10.244 .87.8
 Dec 07 16:27:29 core-1-94 dockerd [1269]time = "2015-12-07T162729.453171649 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:29 core-1-94 systemd [1]Generate / run / coreos / motdを開始しおいたす...
 Dec 07 16:27:29 core-1-94 systemd [1]/ run / coreos / motdの生成を開始したした。
 Dec 07 16:27:32 core-1-94 dockerd [1269]time = "2015-12-07T162732.671592437 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:32 core-1-94 dockerd [1269]time = "2015-12-07T162732.671841436 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:33 core-1-94 sdnotify-proxy [1203]I1207 082733.562534 00001 vxlan.go340]ミスではないこずを無芖する22b462d625b9、10.244 .68.8
 Dec 07 16:27:34 core-1-94 dockerd [1269]time = "2015-12-07T162734.453953162 + 0800" level = info msg = "GET / version"
 Dec 07 16:27:34 core-1-94カヌネルunregister_netdeviceveth775ea53が解攟されるのを埅っおいたす。 䜿甚回数= 1
 Dec 07 16:27:35 core-1-94カヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 2

お誕生日おめでずう、血たみれの問題=
2014幎5月6日

ここでも同じです。 再起動するだけです。 最新のDockerバヌゞョン。 Ubuntu14.04。

@samvignoliこれはカヌネルの問題ずしお識別されおいるため、残念ながら

@thaJeztahカヌネル問題のバグトラッカヌぞのリンクはありたすか
それずも、圱響を受けるカヌネルぞのポむンタですか

私たちの環境でこれを解決するこずに熱心です。

@Rucknar申し蚳ありたせんが、私はしたせんおそらく、このディスカッションに1぀ありたすが、すべおのコメントを読み返しおいたせん

Linux atlas2 3.19.0-33-generic38〜14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

@Rucknarを少し䞊にスクロヌルするず、パッチhttp://www.spinics.net/lists/netdev/msg351337.htmlぞのリンクが衚瀺され

おかげさたで、アップグレヌドに必芁なものを芋おいきたす。

FWIWここで説明した最埌のパッチをubuntu3.19にバックポヌトし、4.2カヌネルでもテストしたしたが倱敗したした。 この時点では、4.4-rc3net-nextブランチでも問題が発生しおいたす。

@rsampaioどのようにそれをテストしたしたか 実際、どのカヌネルでも、dockerを䜿甚しおこの障害を確実にトリガヌするこずはできたせん。 それはたたに起こりたす。

@fxposter本番環境以倖でも問題を再珟できないため、パッチを適甚したカヌネルを本番環境の負荷から24時間以内にカヌネルが圱響を受けるかどうかを確認できたす。

非垞に珍しいリ゜ヌスで修正するこずがありたす。コンテナディレクトリを/ var / lib / docker / aufs / mntから移動したす。

これで...「サヌビスドッカヌの再起動」を実行しお、ディレクトリを元に戻すこずができる堎合がありたす。

それ以倖の堎合は...再起動するだけです。

@rsampaio今、herokuの制䜜に぀いお話しおいるのですか この問題をどのように回避したすかすべおのビゞネスがコンテナなどを䞭心に構築されおいるためですか

@rsampaio --userland-proxy=falseを䜿甚したすか、それずも倧量の䜜成枈みコンテナヌを䜿甚したすか --userland-proxy=falseを䜿甚し、負荷をかけなくおもかなり簡単に再珟できたす:)

@ LK4D4倧量の䜜成/砎棄されたコンテナ、特に倧量のアりトバりンドトラフィックを実行するコンテナだず思いたす

@rsampaiohttps//github.com/crosbymichael/docker-stressを長時間䜿甚しおも再珟できたす

これを修正するための曎新/提案はありたすか

@joshrendekこれはカヌネルのバグです。 新しくリリヌスされたカヌネル4.4でも修正されおいないようです。そのため、どこかに少なくずももう1぀の競合状態がありたす:)

カヌネルのバグ
image

=

@samvignoliコメントを建蚭的に保぀こずができたすか この問題を解決する方法がある堎合は、PRを開いおください。

このバグはすでにアップストリヌムカヌネルメヌリングリストで報告されおいたすか

確かにそうです。 最初のコメントもこのバグを参照しおいたす https 

2014幎からオヌプンしおいたす。アプリケヌションが誀っお䜿甚しおいる可胜性が高いず蚀う以倖は、それに取り組んでいる人からのコメントはありたせん。

リンクをありがずう、ゞャスティン Linusをトロヌルしたす=

敬具。 = *heart

@samvignoliこれをしないでください、それは誰にも圹立ちたせん。
誰かがこれを小さなVMむメヌゞで再珟できたすか
たぶん、gdbずたくさんのkprintfで手を汚すこずができたす。

バグはただ開いおいたす。

OSCentOS 7.2
カヌネル4.4.2 elrepo kernel-ml
docker1.10.2
fsxfsを䜿甚したoverlayfs

ログ

Message from syslogd<strong i="11">@host118</strong> at Feb 29 14:52:47 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1
[root<strong i="14">@host118</strong> ~]# uname -a
Linux host118 4.4.2-1.el7.elrepo.x86_64 #1 SMP Thu Feb 18 10:20:19 EST 2016 x86_64 x86_64 x86_64 GNU/Linux
[root<strong i="15">@host118</strong> ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root<strong i="16">@host118</strong> ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.2.1511 (Core)
Release:    7.2.1511
Codename:   Core
[root<strong i="17">@host118</strong> ~]# docker info
Containers: 5
 Running: 2
 Paused: 0
 Stopped: 3
Images: 154
Server Version: 1.10.2
Storage Driver: overlay
 Backing Filesystem: xfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 4.4.2-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.858 GiB
Name: host118
ID: 2NW7:Y54E:AHTO:AVDR:S2XZ:BGMC:ZO4I:BCAG:6RKW:KITO:KRM2:DQIZ
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

sameersbn / docker-gitlab docker imageを実行するず、このログが衚瀺されたす。

wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
docker-compose up

私は幞運に恵たれおいるかもしれたせんが、これらのsysctl蚭定を適甚した埌、このような事態の発生は倧幅に枛少したした。

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 600
net.ipv4.tcp_tw_reuse = 1
net.netfilter.nf_conntrack_generic_timeout = 120
net.netfilter.nf_conntrack_max = 1555600000
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 300
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300

@joshrendekこれらの蚭定の背埌にある動機は䜕ですか

@kmikeこれは、私たちが経隓しおいた他のいく぀かのconntrackの問題ipテヌブルがいっぱいになるを修正するこずでした-副䜜甚ずしおではありたすが、私の元の問題に関しお䜕かをしたようです

実際に䜕が倉わったかを確認できるように、前埌を衚瀺しおいただけたすか これらの蚭定をバむナリ怜玢しお、より小さなセットがあるかどうかを確認したすか

Compute EngineVMでCoreOSStable899.13.0を䜿甚しおいたす。 この゚ラヌは、 0 デフォルトの次のフラグを䜿甚しおサヌバヌを起動するたびに発生したす。 䜕床かテストを繰り返したしたが、IPv6を無効にするず、ノヌド内のすべおのコンテナヌを゚ラヌなしで起動できたす。

$ cat /etc/sysctl.d/10-disable-ipv6.conf 
net.ipv6.conf.all.disable_ipv6 = 1

私はgcloudコンテナを䜿甚しおGCRからダりンロヌドしおいるので、おそらく問題はIPv6 +画像のMBのダりンロヌド+コンテナをすばやく閉じるこずです。

参考のためのDockerバヌゞョン

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   9894698
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   9894698
 Built:        
 OS/Arch:      linux/amd64

この号では、以前のsysctlフラグもテストしたした。 しかし、いく぀かはすでにその倀を持っおおり、残りはこの゚ラヌに関連するものを䜕も倉曎しおいないようです

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 600
  -----> not found in CoreOS
net.ipv4.tcp_tw_reuse = 1
  -----> default: 0
net.netfilter.nf_conntrack_generic_timeout = 120
  -----> default: 600
net.netfilter.nf_conntrack_max = 1555600000
  -----> default: 65536
net.netfilter.nf_conntrack_tcp_timeout_close = 10
  -> already: 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
  -> already: 60
net.netfilter.nf_conntrack_tcp_timeout_established = 300
  -----> default: 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
  -> already: 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
  -> already: 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
  -> already: 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
  -> already: 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
  -> already: 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
  -> already: 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
  -> already: 300

net.ipv6.conf.all.disable_ipv6 = 1を蚭定しおも、ただ問題が発生しおいたす。

Dockerストレスツヌルは、問題を非垞に簡単に発生させる可胜性がありたす。
https://github.com/crosbymichael/docker-stress

これは、䞊蚘のツヌル甚に䜜成したバむナリです。
https://storage.googleapis.com/donny/main
https://storage.googleapis.com/donny/stress.json

「unregister_netdeviceveth6c3b8b0が解攟されるのを埅っおいたす。䜿甚回数」ずいうログが衚瀺されるず、dockerがハングしおいたす。 これはdockerによっお匕き起こされたカヌネルの問題だず思いたす。 これは、docker userland-proxyがオフ--userland-proxy = falseの堎合にのみ発生したす。

これは、ナヌザヌランドプロキシが有効になっおいる堎合ず有効になっおいない堎合で発生したため、オフの堎合だけは蚀いたせん。

それは状況を悪化させる可胜性がありたす。 --userland-proxy=falseデフォルトにしようずしたこずがありたすが、副䜜甚があったため、元に戻したしたhttps://github.com/docker/docker/issues/14856

昚日から䞀床も゚ラヌが発生したした。明らかにIPv6を無効にするこずは修正ではありたせん。 しかし、フラグがないず、Dockerを砎棄せずにサヌバヌのすべおのコンテナヌを起動するこずさえできたせん。

kubernetes1.2.2およびdocker1.10.3を䜿甚するCoreOS1010.1.0でこれに遭遇する

Kubernetesはkubeletにフラグを远加したしたモバむルでは、怜玢できたせん。
ヘアピンモヌド。 それを「無差別橋」たたは有効なものに倉曎したす
倀はです。 その倉曎を行っお以来、この゚ラヌは発生しおいたせん。

@bprashanh

確認たたは反論しおください。
2016幎4月13日12:43 PM、「AaronCrickenberger」 [email protected]
曞きたした

kubernetes1.2.2ずdockerを搭茉したCoreOS1010.1.0でこれに遭遇
1.10.3

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment -209617342

Linux 4.4.5-15.26.amzn1.x86_64ずDockerバヌゞョン1.9.1を実行しおいるAWSでこれを取埗するには、a34a1d5 /1.9.1をビルドしたす。

Alpineむメヌゞを含むRuby2.3.​​0がコンテナヌ内で実行されおいるため、これが発生したす

カヌネル[58551.548114] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1

これに察する修正はありたすか

Linux 3.19.0-18-generic #18~14.04.1-Ubuntu SMP Wed May 20 09:38:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux初めおこれを芋た

数回の再起動で修正されたした。

@MrMMorris問題が

これがカヌネルの競争であり、refcountを倱うこずはかなり明らかです
どこか。 これはバグを远跡するのは本圓に難しいですが、私たちが知る限りでは
ただ存圚しおいたす。

22:52時月、2016幎5月2日には、Suneケラヌ[email protected]
曞きたした

@MrMMorris https://github.com/MrMMorris確かに、
問題は氞久に消えた、たたはあなたがそれを再び経隓しおいないずいう点で
ただ 競合状態である可胜性がありたす...

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment -216444133

うん。 カヌネル4.5でCoreOS1032.0.0を詊したしたが、ただ問題が解決しおいたせん。

昚日、カヌネル4.5.0を搭茉したCoreOS 1010.1.0でこれに再び遭遇したした。これは、いく぀かのコンテナヌが開始され、連続しお匷制終了された埌のこずです。

この゚ラヌが発生したした。

Dockerバヌゞョン1.9.1
カヌネルバヌゞョン4.4.8-20.46.amzn1.x86_64
オペレヌティングシステムAmazon Linux AMI 2016.03

@sirlatromは修正されおいたせん。 これをもう䞀床芋る😭解決するには耇数回の再起動が必芁でした。

珟圚実行䞭の3.19.0-18-generic。 最新にアップグレヌドしおみたす

こっちも䞀緒 cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry : cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry : cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry : cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry  cry : cry  cry  cry  cry  cry  cry  cry  cry  cry

@samvignoliあなたのコメントは建蚭的ではありたせん。 投皿をやめおください。

申し蚳ありたせんが、芪指を立おる機胜を忘れおしたいたした。

Fedoraサヌバヌ23-4.2.5-300.fc23.x86_64で再珟。 Dockerサヌビスを再起動できたせん-ノヌドを再起動するだけです。

Fedora 24カヌネルで同じ問題4.5.2-302.fc24.x86_64。 ハングは発生したせんでしたが、ログファむルをスパムしたす。

@hapylestat systemctl restart dockerを詊すこずができたすか これは私のためにそれをすべおぶら䞋げさせたした。

ありがずう

これは私のCoreOS、EC2マシンで非垞に頻繁に発生しおいたす。 それがたったく圹立぀堎合のために、このバグの1぀のむンスタンスでスタックしたvethデバむスに関連するすべおのログがありたす。

$ journalctl | grep veth96110d9
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal systemd-udevd[4189]: Could not generate persistent MAC address for veth96110d9: No such file or directory
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal kernel: IPv6: ADDRCONF(NETDEV_UP): veth96110d9: link is not ready
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Configured
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal kernel: IPv6: ADDRCONF(NETDEV_CHANGE): veth96110d9: link becomes ready
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Gained carrier
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Lost carrier
May 14 16:40:27 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Removing non-existent address: fe80::98f4:98ff:fea2:d83b/64 (valid for ever)
May 14 16:40:32 ip-10-100-37-14.eu-west-1.compute.internal kernel: eth0: renamed from veth96110d9
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal kernel: veth96110d9: renamed from eth0
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Configured
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Gained carrier
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal kernel: IPv6: veth96110d9: IPv6 duplicate address fe80::42:aff:fee0:571a detected!
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Lost carrier
May 14 16:53:45 ip-10-100-37-14.eu-west-1.compute.internal systemd-networkd[665]: veth96110d9: Removing non-existent address: fe80::42:aff:fee0:571a/64 (valid for ever)
May 14 16:53:55 ip-10-100-37-14.eu-west-1.compute.internal kernel: unregister_netdevice: waiting for veth96110d9 to become free. Usage count = 1
May 14 16:54:05 ip-10-100-37-14.eu-west-1.compute.internal kernel: unregister_netdevice: waiting for veth96110d9 to become free. Usage count = 1
May 14 16:54:15 ip-10-100-37-14.eu-west-1.compute.internal kernel: unregister_netdevice: waiting for veth96110d9 to become free. Usage count = 1
May 14 16:54:25 ip-10-100-37-14.eu-west-1.compute.internal kernel: unregister_netdevice: waiting for veth96110d9 to become free. Usage count = 1
May 14 16:54:35 ip-10-100-37-14.eu-west-1.compute.internal kernel: unregister_netdevice: waiting for veth96110d9 to become free. Usage count = 1

これは、䞀床に倚くのコンテナを削陀した堎合私の堎合、k8sポッドをたずめお削陀した堎合に発生するようです。

再起動で修正されたず蚀っおいる人のために-マシンを再起動たたは停止/起動したしたか 物理マシンでは、リモヌト電源リセットを䜿甚しおマシンを埩旧させる必芁がありたした。

@ joshrendek 、iLOのコヌルドブヌト

@joshrendekこれを監芖しお実行し、発生したずきにreboot -fを実行するスクリプトがありたす😢。

問題を芋぀けた可胜性がありたすたたは運が良かっただけです。 DockerグラフディレクトリをXFSパヌティションディスクからEXT4パヌティションディスクに移動したしたが、問題を再珟できたせんたた、発生しおいた他のXFSバグの負荷を解決できたせん。 @vbattsがXFSはただサポヌトされおいないず蚀ったこずを芚えおいたす。

build 、 run 、 stop 、 deleteをさたざたな画像の無限ルヌプで実行し、サむクルごずに玄10個のコンテナを䜜成しお、挑発しようずしたした。過去数時間。

@joedborgどのグラフドラむバヌを䜿甚しおいたすか デバむスマッパヌ かぶせる

@thaJeztah良い点、私はそれに぀いお蚀及すべきだった。 私は珟圚EXT4バッキングFSでオヌバヌレむドラむバヌを䜿甚しおいたす。

以前はdevicemapperを䜿甚しおいたしたがFedora Serverを䜿甚しおいるため、特にコンテナヌが削陀された埌、マッパヌがプヌルにスペヌスを戻さないリヌクで、倚くの人がそう信じおいるように倚くの苊痛がありたした。

それが圹に立ったら、私はDocker1.11.1ずカヌネル4.2.5-300.fc23.x86_64を䜿甚しおいたす。

@joedborgは興味深いです。なぜなら、RHELのドキュメントには、RHEL / CentOS 7.1ではEXT4のみがサポヌトされ、RHEL / CentOS7.2ではXFSのみがサポヌトされるず蚘茉されおいるためです。 XFSが新しいバヌゞョンで動䜜するこずを期埅しおいたした

@thaJeztahああそれは奇劙だ。 私はそれがそうであるかもしれない他のこずを考えようずしおいたす。 䞊から読み盎したしたが、同じ蚭定を実行しおいる人がいるようです。 他に異なるのは、XFSディスクがスピンドルであり、EXT4がSSDであるずいうこずだけです。 その間、゜ヌクテストを続けたす。 たた、同じセットアップを䜿甚するように補品を移動したので、どちらの方法でも、たもなく答えが埗られたす。 ただし、以前はほがすべおのstopで実行されおいたため、確かに優れおいたす。

@joedborgたあ、それは確かに有甚な情報です

ここでも同じ゚ラヌ、カヌネル4.2から4.5、同じDockerバヌゞョン。

ずころで、私は同じボックスで同時に耇数のvirtualboxマシンを実行しおいたす。

$ docker version
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 05:27:08 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 05:27:08 UTC 2015
 OS/Arch:      linux/amd64
$ docker info
Containers: 3
Images: 461
Storage Driver: devicemapper
 Pool Name: docker-253:7-1310721-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 18.08 GB
 Data Space Total: 107.4 GB
 Data Space Available: 18.37 GB
 Metadata Space Used: 26.8 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.121 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.5.0-0.bpo.1-amd64
Operating System: Debian GNU/Linux 8 (jessie)
CPUs: 4
Total Memory: 15.56 GiB
Name: tungsten
ID: HJX5:TKIH:TF4G:JCQA:MHQB:YYUD:DHBL:53M7:ZRY2:OCIE:FHY7:NLP6

ext4 FS䞊のディレクトリで、 overlayグラフドラむバを䜿甚しおこの問題が発生しおいたす。 だから私はxfsが問題だずは思わない😢

@obeattieええ、人々もdevicemapperそれを手に入れおいるようです。 朚に觊れおください、私は切り替えおから再び問題を抱えおいたせん。 前述のように、物理ディスクも亀換したした。 これは興味深いものになるでしょう

この問題は、ファむルシステムずはたったく関係がありたせん。 zfs、overlayfs、devicemapper、btrfs、aufsでこの問題が発生したした。 たた、スワップの有無にかかわらず。 Dockerに限定されるものではなく、lxcでも同じバグが発生したした。 私が珟圚芋おいる唯䞀の回避策は、コンテナを同時に停止しないこずです。

それが圹立぀堎合は、AWSAMIがサポヌトする最新のec2むンスタンスで同じ゚ラヌメッセヌゞが衚瀺されたす。 dockerバヌゞョンが衚瀺されたす-

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5/1.9.1
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5/1.9.1
 Built:
 OS/Arch:      linux/amd64

ただ乗り蟌んでください。 最新のAmazonec2むンスタンスでも同じ動䜜が芋られたす。 しばらくするず、コンテナが転倒しお応答しなくなりたす。

$ docker情報
コンテナ2
画像31
サヌバヌバヌゞョン1.9.1
ストレヌゞドラむバヌdevicemapper
プヌル名docker-2021-263705-pool
プヌルのブロックサむズ65.54 kB
基本デバむスサむズ107.4 GB
バッキングファむルシステム
デヌタファむル/ dev / loop0
メタデヌタファむル/ dev / loop1
䜿甚されるデヌタスペヌス1.199 GB
デヌタスペヌスの合蚈107.4 GB
䜿甚可胜なデヌタスペヌス5.754 GB
䜿甚されるメタデヌタスペヌス2.335 MB
メタデヌタスペヌスの合蚈2.147 GB
利甚可胜なメタデヌタスペヌス2.145 GB
サポヌトされおいるUdev同期true
遅延削陀が有効false
延期された削陀が有効false
延期された削陀枈みデバむス数0
デヌタルヌプファむル/ var / lib / docker / devicemapper / devicemapper / data
メタデヌタルヌプファむル/ var / lib / docker / devicemapper / devicemapper / metadata
ラむブラリバヌゞョン1.02.93-RHEL72015-01-28
実行ドラむバヌネむティブ-0.2
ロギングドラむバヌjson-file
カヌネルバヌゞョン4.4.10-22.54.amzn1.x86_64
オペレヌティングシステムAmazon Linux AMI 2016.03
CPU1
総メモリ995.4 MiB
名前[線集枈み]
IDOB7AQ6RX ZRMK4R5H  ZUQYBBNK  BJNNOWKS FNU47NI2 AKRT5SEP

$ dockerバヌゞョン
クラむアント
バヌゞョン1.9.1
APIバヌゞョン1.21
Goバヌゞョンgo1.4.2
Gitコミットa34a1d5 / 1.9.1
構築
OS / Archlinux / amd64

サヌバ
バヌゞョン1.9.1
APIバヌゞョン1.21
Goバヌゞョンgo1.4.2
Gitコミットa34a1d5 / 1.9.1
構築
OS / Archlinux / amd64

䞊蚘のコメントず同じように、EC2でも実行されるのは、 64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1を䜿甚するElasticBeanstalkを介したものです。

珟時点では倚少の逞話ですが、最近、テストずしお玄18台のサヌバヌで4.2.0から4.5.5カヌネルにアップグレヌドしようずしたしたが、この問題はかなり悪化したした数日から問題の間隔は4時間以内。

これはDebian8にありたした

@jonpaulおよび@ g0ddardずたったく同じセットアップ

このバグをどのように軜枛できるかを怜蚎しおいたす。
最初にうたくいくかもしれないし、うたくいかないかもしれたせんが、危険です、これが発生した堎合にAPIを利甚できるようにしおおくこずです23178

こんにちは。 私もこのバグに噛たれたした...

Jun 08 17:30:40 node-0-vm kernel: unregister_netdevice: waiting for veth846b1dc to become free. Usage count = 1

CoreOS Beta、FlannelでKubernetes 1.2.4を䜿甚しおおり、Azureで実行しおいたす。 この問題のデバッグに圹立぀方法はありたすか カヌネルのバグスレッドは死んでいるようです。 カヌネルでIPv6を無効にしたり、 --userland-proxy=trueを䜿甚したり、オヌバヌレむストレヌゞヘルプの代わりにaufsを䜿甚したりする人もいたすが、そうでない人もいたす...少し混乱したす。

@ justin8のように、

コンテナがメモリ制限に達したずきにこのバグが発生したした。 関連するかどうかわからない。

ここに同じ問題

# docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   a34a1d5
 Built:        Fri Nov 20 17:56:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   a34a1d5
 Built:        Fri Nov 20 17:56:04 UTC 2015
 OS/Arch:      linux/amd64
 # docker info
Containers: 213
Images: 1232
Server Version: 1.9.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 1667
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-5-exton
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 4
Total Memory: 21.58 GiB
Name: [redacted]
Message from syslogd@[redacted] at Jun 24 10:07:54 ...
 kernel:[1716405.486669] unregister_netdevice: waiting for lo to become free. Usage count = 2

Message from syslogd@[redacted] at Jun 24 10:07:56 ...
 kernel:[1716407.146691] unregister_netdevice: waiting for veth06216c2 to become free. Usage count = 1

centos7.2
docker 1.10.3
同じ問題

4.6.3カヌネル非垞に最近でCoreOS 1068.3.0を実行しおいるEC2m4.largeで、最終的にこの問題を再珟する「1぀のラむナヌ」がありたす。 私の堎合、玄300回の繰り返しが必芁ですが、YMMVです。

Linux ip-172-31-58-11.ec2.internal 4.6.3-coreos2 SMP Sat Jun 25 00:59:14 UTC 2016 x86_64 IntelRXeonRCPU E5-2676 v3 @ 2.40GHz GenuineIntel GNU / Linux
CoreOSベヌタ1068.3.0
Dockerバヌゞョン1.10.3、ビルド3cd164c

ここでのルヌプの数癟回の反埩は、最終的にdockerdをハングさせ、カヌネルは次のような゚ラヌメッセヌゞを出力したす。

kernel: unregister_netdevice: waiting for veth8c7d525 to become free. Usage count = 1

再生ルヌプは

i=0; while echo $i && docker run --rm -p 8080 busybox /bin/true && docker ps; do sleep 0.05; ((i+=1)); done

線集

  • userland-proxy=falseずきだけこれで再珟できたした
  • VirtualBox今のずころec2のみを䜿甚しお再珟できなかったので、ハむパヌバむザヌにも関連しおいる可胜性がありたす

䞊蚘の@btalbotのスクリプトは、数千回の反埩の埌、

$ docker --version
Docker version 1.10.3, build f476348/1.10.3
$ docker info
Containers: 3
 Running: 0
 Paused: 0
 Stopped: 3
Images: 42
Server Version: 1.10.3
Storage Driver: devicemapper
 Pool Name: docker_vg-docker--pool
 Pool Blocksize: 524.3 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: xfs
 Data file: 
 Metadata file: 
 Data Space Used: 17.69 GB
 Data Space Total: 73.67 GB
 Data Space Available: 55.99 GB
 Metadata Space Used: 5.329 MB
 Metadata Space Total: 130 MB
 Metadata Space Available: 124.7 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.109 (2015-09-22)
Execution Driver: native-0.2
Logging Driver: journald
Plugins: 
 Volume: local
 Network: bridge null host
Kernel Version: 4.5.7-200.fc23.x86_64
Operating System: Fedora 23 (Workstation Edition)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 0
CPUs: 4
Total Memory: 15.56 GiB
Name: <hostname>
ID: TOKW:AWJF:3VZU:55QA:V3KD:ZCA6:4XWW:JBY2:2Q5C:3S65:3ZXV:XRXG
Registries: docker.io (secure)

この問題は私のKubernetesクラスタヌで非垞に頻繁に発生したすが、ストレッサヌたたは@btalbotの1぀のラむナヌでは確実に再珟できたせん。 CoreOS1068.3.0を搭茉した2぀のAzureVMで実行しおみたした。

最初のVMはStandard_D1_v23.5GB RAM、1コアでした-スクリプトは3000回以䞊の反埩を行いたした。
2番目のVMはStandard_DS15_v2140GB Ram、20コアでした-スクリプトは7600回以䞊の反埩を行いたした。

以前のコメントhttps://github.com/docker/docker/issues/5618#issuecomment-229545933を曎新しお、userland-proxy = falseの堎合にのみこれを再珟できるようにしたした。

EC2 t2.microシングルコアVMずm4.largeマルチコアの䞡方でHVMを䜿甚しお再珟したす。 userland-proxyの蚭定に関係なく、ラップトップでVirtualBoxを䜿甚しおそれが発生するのはただ芋おいたせん。

kubernetesクラスタヌでヘアピン-vethを有効にしおFlannelを䜿甚しおいるずきにこのバグが発生したしたiptablesプロキシを䜿甚。 このバグは、実行時にのみ発生しおいたした。コンテナが倚すぎたす。 cbr0ブリッゞネットワヌクず無差別ブリッゞヘアピンモヌドの䜿甚に切り替え、二床ず衚瀺されたせん。
実際、ヘアピンvethを䜿甚しおいる堎合は、このバグを簡単に再珟できたす。このゞョブは、kubernetesを含む100個のコンテナヌで開始するだけです。

2016幎1月7日08:01に、manoj0077は次のように曞いおいたす。

@btalbot https://github.com/btalbotなので、1.12で再起動できたす
実行䞭のコンテナに圱響を䞎えずにdockerd。 したがっお、dockerdは再起動したす
この堎合ここで助けたすか

AFAICT、1.12のむベント、Dockerコンテナプロセスはただ子です
dockerデヌモンの。

@sercandどのようにしお無差別ブリッゞヘアピンモヌドを蚭定したしたか Dockerからのドキュメントが衚瀺されないか、別の名前を䜿甚しおいる可胜性がありたす

これがい぀芋られるかに぀いお、Docker🐳からの公匏の蚀葉はありたすか これは2番目にコメントの倚い未解決の問題です。 非垞に深刻ですホストの再起動が必芁です。 再珟性がありたす。 根本的な原因を特定したり、修正したりするための実際の進展は芋られたせん😞。

これはカヌネルの問題である可胜性が最も高いようですが、 Bugzillaの

@ justin8これらはKubeletフラグだず思いたす --configure-cbr0ず--hairpin-mode

@sercand私もフランネルを䜿甚しおいたす。 --hairpin-mode=promiscuous-bridgeを䜿甚するこずに䞍利な点はありたすか

@obeattie同意したす。 :(

FTRセットアップしたテストKubernetesクラスタヌでヘアピンベスも䜿甚しおいたす。

@sercand promiscuous-bridge䜿甚を開始する手順を詳しく教えおください。 ノヌドのkubeletにフラグ--configure-cbr0=trueを远加したしたが、次のように文句を蚀いたす。
ConfigureCBR0 requested, but PodCIDR not set. Will not configure CBR0 right now 。 このPodCIDRはマスタヌから来るはずだず思いたしたか ありがずう。

線集コントロヌラヌマネヌゞャヌの構成に--allocate-node-cidrs=true --cluster-cidr=10.2.0.0/16を远加する必芁があるようですが、クラりドプロバむダヌAzureがないため、ルヌトが機胜しない可胜性がありたす。

@ justin8私はこのドキュメントをフォロヌし
ドキュメントhairpin-modeの@edevilは、「これにより、サヌビスの゚ンドポむントが、独自のサヌビスにアクセスしようずした堎合に、サヌビスの゚ンドポむントがロヌドバランスを取り戻すこずができたす」ずいう

@sercandドキュメントによるず、コントロヌラヌマネヌゞャヌで--allocate-node-cidrs=trueを䜿甚する堎合、ルヌトを蚭定するためにクラりドプロバむダヌを䜿甚するこずになっおいたす。 Azure甚のKubernetesクラりドプロバむダヌがないので、問題はありたせんでしたか ルヌトを手動で蚭定したすか ありがずう。

@edevil私はこのリポゞトリでそれを芋぀けるこずができたす。 私はすぐにこの構成を䜜成し、䞀床だけテストしたした。 その背埌にある基本的なロゞックを提䟛するだけで十分だず思いたす。

@morvans @btalbot 1.12で詊す機䌚がありたしたか...

ヘアピンベスから離れおcbr0ブリッゞを䜿甚するず、問題を再珟できないこずが確認できたす。

念のためベアメタルでこの問題を抱えおいる人はいたすか これは、VMWareラボでランチャヌクラスタヌをテストしたずきに芋られたしたが、実際のベアメタル展開では芋られたせんでした。

はい、この問題は、4.3以䞊のカヌネルのベアメタルで発生したす。 これは、さたざたなマシンやハヌドりェア構成で芋られたす。 私たちにずっおの唯䞀の解決策は、カヌネル4.2を䜿甚するこずでした。

それは間違いなく4.2でも発生したすが、新しいものでは桁違いに頻繁に発生したす。各メゞャヌリリヌスをテストしお、それが優れおいるかどうかを確認しおいたすが、ただ䜕もありたせん。

CoreOS alpha1097.0.0でも発生したす。

カヌネル4.6.3
Docker1.11.2

同じ問題が発生したす。

Docker1.11.2
カヌネル4.4.8-boot2docker。

ホストOSX䞊のVMWareFusionドラむバヌを備えたDockerマシン。

提案された回避策はありたすか

クラッシュダンプが可胜な環境別名ではないEC2で確実に問題を再珟するこずができたすあなたの人々の堎合は、事実を共有し、このクラッシュダンプファむルに本圓に䟿利でしたでしょうUbuntuの䞭で信頌できるのkdumpを有効にする方法の詳现に぀いおは芋぀けるこずができるここずkdumpがcrashdumpを生成する準備ができたずきに有効にする必芁があるクラッシュオプションは次のずおりです。

echo 1 > /proc/sys/kernel/hung_task_panic          # panic when hung task is detected
echo 1 > /proc/sys/kernel/panic_on_io_nmi          # panic on NMIs from I/O
echo 1 > /proc/sys/kernel/panic_on_oops            # panic on oops or kernel bug detection
echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi # panic on NMIs from memory or unknown
echo 1 > /proc/sys/kernel/softlockup_panic         # panic when soft lockups are detected
echo 1 > /proc/sys/vm/panic_on_oom                 # panic when out-of-memory happens

クラッシュダンプは、カヌネル開発者が参照リヌクの原因に぀いお詳しく知るのに圹立ちたすが、クラッシュダンプにはホストのメモリダンプも含たれおおり、適切な情報が含たれおいる可胜性があるこずに泚意しおください。

...賢明な情報。

o

私は同じ問題に盎面しおいたす。

Jul 13 10:48:34 kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Linux 4.6.3-1.el7.elrepo.x86_64
Docker: 1.11.2

同じ問題

Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-25-generic x86_64)
Docker version: 1.10.3

タヌミナル画面で盎接発生したした

Message from syslogd<strong i="6">@svn</strong> at Jul 26 21:47:38 ...
 kernel:[492821.492101] unregister_netdevice: waiting for lo to become free. Usage count = 2

Message from syslogd<strong i="7">@svn</strong> at Jul 26 21:47:48 ...
 kernel:[492831.736107] unregister_netdevice: waiting for lo to become free. Usage count = 2

Message from syslogd<strong i="8">@svn</strong> at Jul 26 21:47:58 ...
 kernel:[492841.984110] unregister_netdevice: waiting for lo to become free. Usage count = 2

システムは

Linux svn.da.com.ar 4.4.14-24.50.amzn1.x86_64 #1 SMP Fri Jun 24 19:56:04 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

同じ問題

Os: Amazon Linux AMI release 2016.03
Docker: 1.9.1

ここでも

Linux 4.4.14-24.50.amzn1.x86_64 x86_64
Docker version 1.11.2, build b9f10c9/1.11.2

EC2でも同じ問題が発生しおいたす。

Docker version 1.11.2, build b9f10c9/1.11.2
NAME="Amazon Linux AMI"
VERSION="2016.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2016.03"
PRETTY_NAME="Amazon Linux AMI 2016.03"
CPE_NAME="cpe:/o:amazon:linux:2016.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
 kernel:[154350.108043] unregister_netdevice: waiting for lo to become free. Usage count = 1

これが発生した堎合、すべおの私のpty +ブザヌで
「単に」DebianJessie +バックポヌト

Linux 4.6.0-0.bpo.1-amd64 #1 SMP Debian 4.6.1-1~bpo8+1 (2016-06-14) x86_64 GNU/Linux
Docker version 1.12.0, build 8eab29e

こんにちは、

砎壊的な新しいむメヌゞを䜜成しお、制埡された環境で問題を再珟しようずするず、再珟できたせん。

この問題は、docker1.9.1を実行しおいるサヌバヌの1぀で発生したす

 docker info | egrep "Version|Driver"
Server Version: 1.9.1
Storage Driver: devicemapper
 Library Version: 1.02.93 (2015-01-30)
Execution Driver: native-0.2
Logging Driver: gelf
Kernel Version: 4.5.0-coreos-r1

私はこれたで17753コンテナを䞊行モヌドで同時に昌食し、veth *むンタヌフェむスをリヌクするこずなくむンタヌネットぞのトラフィックを増やしおいたす。 誰かが指瀺を貌り付けお、問題を䞀貫しお再珟できたすか

@pegerto --userland-proxy=falseあり、倚数のコンテナヌを同時にスピンアップする堎合、トリガヌは非垞に簡単です。 私はhttps://github.com/crosbymichael/docker-stressを䜿甚しおこれを行い

ありがずう@ cpuguy83

--userland-proxy=falseを持぀ようにデヌモンを構成する問題を簡単に再珟できたす。ありがずうございたす。この構成を実行しないデヌモンに圱響するこの問題を確認できたす。

> = 4.3のnetns分離によっお導入されたnetfilterフックにカヌネルダンプが衚瀺されたす。ルヌトが127/8で発生したずきに、問題が悪化しおいるように芋える理由はありたすか

ありがずう

この問題も芋おいたす。 CoreOS 1068.8.0、Docker 1.10.3、カヌネル4.6.3。 誰かが興味を持っおいるなら、私はいく぀かのシステムログを匕き出したした。

ちょうど耇数を取埗したした...
unregistered_netdevice: waiting for lo to become free. Usage count = 1
... 2぀のVMずベアメタルラップトップで、すべおUbuntu 16.04ず最新のカヌネル4.4.0-3 [456]を実行しおいたす。

その結果、すべおがハングし、ハヌドリブヌトが必芁になりたす。
先週たでこれを経隓したこずがなく、VMの1぀は1.11.3にあり、他のVMはすべお1.12.0にあったず思いたす。

@RRAlexこれはどの
デヌモンオプションで--userland-proxy=falseしおいる堎合...たたは私が理解しおいるこずからkubernetesを䜿甚しおいる堎合は、この問題が発生する可胜性がありたす。

その理由は、 --userland-proxy=falseオプションがブリッゞむンタヌフェむスでヘアピンNATを有効にするためです...これは、kubernetesがコンテナのネットワヌクを蚭定するずきにも蚭定するものです。

Docker CloudおよびDocker Cloud゚ヌゞェントを䜿甚するBYOノヌドでこれを確認したす。

今日、これを珟圚のAmazon ECS AMIで1回玄25回の詊行のうち芋たした。apt-getupdates、pbzip2をむンストヌルし、それを実行するコマンドでvanilla debianjessieを実行したす単玔なマルチスレッドCPUテスト。

@edevil
ここにいるほずんどの人は、コンテナの起動/停止にDockerを䜿甚しおいるずきにこの状況に遭遇するず説明しおいたすが、DebianでDockerを䜿甚しなくおもたったく同じ状況になりたした。

  • Debian "Jessie"= Debianバヌゞョン8.5、ベアメタルVMなし、クラりドなし、ただしプレヌンハヌドりェア
  • カヌネル3.16.0-4-amd64
  • 4぀のLXCコンテナを開始したした
  • 「lxc-stop-n $ containerName」で1぀のLXCコンテナをシャットダりンしたす
  • このコマンドが完了しおも、カヌネルたたはむンタヌフェむスはただ完党に「クリヌンアップ」されおいない可胜性がありたす。前の「lxc-stop」の盎埌に新しい「lxc-stop」を起動するず、カヌネルの問題が発生するためです。

マシンをハヌドリセットする以倖に回埩する方法はありたせん。

したがっお、この問題を特定/解決するための調査では、Dockerだけに焊点を圓おないでください。 Dockerを介した堎合でも、単玔な「lxc」コマンドを䜿甚した堎合でも、コンテナヌの高速停止/開始に関する䞀般的な問題は明らかです。

これはLinuxカヌネルの問題だず思いたす。

非垞に重い負荷で3぀のchroot実際にはpbuilderを実行しおいるずきに、この問題が発生したした。
私のハヌドりェアはLoongson3A3.16カヌネルのmips64elマシンです。

私がそれにsshしようずしおいるずき、私はこの問題に遭遇したした。

したがっお、この問題はdockerやlxcだけでなく、chrootにも関係しおいる可胜性がありたす。

Dockerバヌゞョン1.11.2。

kernel:[3406028.998789] unregister_netdevice: waiting for lo to become free. Usage count = 1

cat /etc/os-release 
NAME=openSUSE
VERSION="Tumbleweed"
VERSION_ID="20160417"
PRETTY_NAME="openSUSE Tumbleweed (20160417) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:20160417"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
ID_LIKE="suse"
uname -a
Linux centre 4.5.0-3-default #1 SMP PREEMPT Mon Mar 28 07:27:57 UTC 2016 (8cf0ce6) x86_64 x86_64 x86_64 GNU/Linux

ベアメタル。

最近、カヌネル4.6.xずdocker 1.11.2のベアメタルovh専甚で問題が発生したした。
ここでコメントを読み、耇数の回避策を詊した埌、カヌネルを最新バヌゞョンの3.14ブランチ3.14.74にダりングレヌドし、 https //github.com/docker/libnetwork/issues/1189を回避するためにdockerを1.12.0にアップグレヌドしたした

これがお圹に立おば幞いです。

すべお、Dockerやchrootに぀いおのメッセヌゞを投皿する必芁はもうないず思いたす。それはすべおLinuxカヌネルに関するものです。
それで、コンテナの仮想ネットワヌクむンタヌフェむスを無効にしおいる郚分で、カヌネルを䜕らかの方法でデバッグできる誰かが立ち䞊がるこずができたすか コンテナの新しい停止が芁求される前に、コンテナの以前の停止がただその仮想むンタヌフェむスを完党に無効化/クリヌンアップしおいなかった堎合に、いく぀かの競合状態が発生する可胜性がありたす。

@rdelanghこの問題は必ずしもカヌネルに関連しおいるずは思いたせん。

Fedora 24では、FedoraリポゞトリからのDocker 1.10.3の問題を再珟できず、Docker自身のリポゞトリからのDocker1.12.1でのみ再珟できたす。

䞡方のテストは、カヌネル4.6.7-300.fc24.x86_64を䜿甚しお実斜されたした。

CoreOS 1068.10.0、Docker 1.10.3、カヌネル4.6.3でもこの問題が発生しおいたす。

kernel: unregister_netdevice: waiting for veth09b49a3 to become free. Usage count = 1

EC2で安定したCoreOS1068.9.0でKubernetes1.3.4を䜿甚するず、docker1.10.3でこの問題が発生したす。

unregister_netdevice: waiting for veth5ce9806 to become free. Usage count = 1
unregister_netdevice: waiting for veth5ce9806 to become free. Usage count = 1
unregister_netdevice: waiting for veth5ce9806 to become free. Usage count = 1
...
uname -a
Linux <redacted> 4.6.3-coreos #2 SMP Fri Aug 5 04:51:16 UTC 2016 x86_64 Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz GenuineIntel GNU/Linux

Ubuntu 16.04、Docker 1.12.1、カヌネル4.4.0-34-genericでもこの問題が発生したす
waiting for lo to become free. Usage count = 1

$ time docker ps
CONTAINER ID        IMAGE                                                                       COMMAND                  CREATED             STATUS                             PORTS                                                                          NAMES

...

real    4m40.943s
user    0m0.012s
sys     0m0.004s

Kubernetes <= 1.3.4を䜿甚しおいる堎合は、この問題を悪甚できたす https 

そこから2぀のReplicationControllerを䜜成できたす。これに基づいおhelloずhello1ず呌びたした http 

次に、これに基づいお、䞊蚘ず同じ名前/ラベルに䞀臎する2぀のデプロむメントを䜜成したす http 

_デプロむメントを䜜成するずすぐに、膚倧な量のスパムコンテナが届きたす_。

しばらく数分オンのたたにするず、倚くのものが終了/䜜成しようずしおいるのがわかりたす。 デプロむメントを削陀しお、状況を安定させるこずができたす。 あなたは良い䞀握りの終了ずContainerCreatingを芋るはずです。 ノヌドにSSHで接続する堎合は、 dmesgずdocker psをチェックしお、䞊蚘の症状が明らかかどうかを確認しおください。

私の堎合、問題が発生する前に、このフリヌクを解攟するのに玄5分かかりたした。 @sercandず@edevilがいじっおいた倉曎を予定です。

@edevilリンクされたコミットを確認した埌、この問題を回避するためにKubernetesによっお䜜成されたcbroブリッゞを優先しお、環境内のFlannelを完党に無効化/削陀したこずは正しいですか

フランネルがdocker0を䜿甚したいず考えおおり、内郚ネットワヌクがcbr0しおいるため、これらをタンデムで䜿甚するこずはできたせん。

@ alph486正解です、フランネルの䜿甚をやめたした。 ブリッゞを䜿甚しお、ポッドネットワヌクのルヌトを蚭定したす。

@ alph486フランネルは--bridge=cbr0 dockerオプションでオヌバヌラむドできたす。
CoreOSでは、dockersystemdナニットをオヌバヌラむドする必芁がありたす。

Kubeletフラグ--experimental-flannel-overlayは、フランネル構成を読み取り、フランネルCIDRを䜿甚しおDockerブリッゞcbr0を構成できたす。

たた、問題のように思われるveth-hairpin代わりにpromiscuousモヌドが有効になりたす。

入力しおくれた@daduxに感謝したす。 K8sが、オヌバヌラむドされたナニットによっおすでにブヌトストラップされおいるcbr0むンタヌフェヌスを取埗する堎合、その゜リュヌションず連携しおいる可胜性がありたす。 私はそれを詊しおみたす。

ドキュメントによるず、 promiscuous-bridge --hairpin-modeはkubelet v1.3.4 +の

kubenetネットワヌクプラグむン --configure-cbr0を眮き換えるように蚭定されおいたすを䜿甚した埌、問題を再珟できたせんでした。 将来の䞍確実性のために、私はflannel-overlayオプションを避けおいたす --configure-cbr0関連付けられおいるようです。

Dockerデヌモンがdocker0ブリッゞを䜿甚しおいる堎合、kubeletは存圚しないブリッゞcbr0を構成しようずするため、 --hairpin-mode=promiscuous-bridgeを蚭定しおも効果はありたせん。

CoreOSの堎合、Kubernetesの動䜜をミラヌリングするための回避策ですが、フランネルを䜿甚しおいたす。

  • docker.serviceのsystemdドロップむンを远加しお、ブリッゞdocker0むンタヌフェむスをプロミスキャスモヌドに構成したす。 確かにこれをやりたいより゚レガントなものがありたすか
- name: docker.service
  command: start
  drop-ins:
   - name: 30-Set-Promiscuous-Mode.conf
     content: |
       [Service]
       ExecStartPost=/usr/bin/sleep 5
       ExecStartPost=/usr/bin/ip link set docker0 promisc on
  • Dockerブリッゞにヘアピンをセットしないようにkubeletに䌝えたす。
    kubelet --hairpin-mode=none

ヘアピンがむンタヌフェヌスで有効になっおいるかどうかを確認できたす。
brctl showstp docker0
たた
for f in /sys/devices/virtual/net/*/brport/hairpin_mode; do cat $f; done

私の同僚は最近これを修正したず思いたすhttp://www.spinics.net/lists/netdev/msg393441.html 、私たちは私たちの環境でこの問題に遭遇したした、そしお私たちは問題を芋぀けたした、この修正で、私たちはこの問題に決しお遭遇したせんもっず。 この問題に遭遇した人は誰でも、このパッチを詊しお、それが再び発生するかどうかを確認できたす。 そしお私たちの分析から、それはipv6に関連しおいるので、dockerデヌモンを起動するずきに--ipv6=falseでdockerのipv6を無効にするこずもできたす

@ coolljt0725間違っおいるかもしれたせんが、

@daduxご

    - name: docker.service
      drop-ins:
        - name: 30-Set-Promiscuous-Mode.conf
          content: |
            [Service]
            ExecStartPost=/usr/bin/sleep 5
            ExecStartPost=/usr/bin/ip link set docker0 promisc on

kubelet.service以䞋を远加したした

        --hairpin-mode=none

O / Sがコンテナヌのむンタヌフェヌスを凊理する方法に関しお、Docker / Kubernetesに察するこれらの倉曎はどのような圱響を及がしたすか
DockerやKubernetesではなく、間違ったO / S動䜜の問題であるこずを匷調する必芁がありたす。これは、私たちおよびこのスレッドの他の䞀郚の人々がDockerたたはKubernetesをたったく実行しおいないためですが、LXCを停止したずきにたったく同じ状況が発生するためです。コンテナは次々ず非垞に速くなりたす。

@rdelanghその通りです。 ただし、この問題は、Dockerに関連する動䜜を远跡するためにDockerプロゞェクトで䜜成されたした。 このスレッドでは、OSの問題、K8sの問題、CoreOSの問題ずしお远跡しおいる他の問題がありたす。 LXCなどで問題を芋぀けた堎合は、そこでスレッドを開始し、ここにリンクしお問題に関する認識を高めるこずを匷くお勧めしたす。

この゚ラヌのためにDockergoogleを䜿甚しおいる堎合、おそらくここに到達したす。 したがっお、根本的な問題が修正されるたで人々が前進できるように、この問題の回避策をここに投皿するこずは理にかなっおいたす。

O / Sがコンテナヌのむンタヌフェヌスを凊理する方法に関しお、Docker / Kubernetesに察するこれらの倉曎はどのような圱響を及がしたすか

  1. 私の投皿でのDockerの倉曎により、KubernetesスタックがDockerに問い合わせるこずができ、問題が発生したずきにプラットフォヌムが正垞であるこずを確認できたす。
  2. hairpin-mode倉曎は、基本的にK8にdocker0ブリッゞをそのたた䜿甚するように指瀺するため、Dockerで問題が発生する「カヌネルランド」ネットワヌクず「ヘアピンベス」を䜿甚しようずはしたせん。実行パス。

K8sずDockerを䜿甚したこの問題の回避策。

coolljt0725の同僚のパッチは安定するためにキュヌに入れられおいるので、すぐにディストリビュヌションにバックポヌトされるこずを願っおいたす。 David Millerの投皿http//www.spinics.net/lists/netdev/msg393688.html

そのコミットがどこにあるのかわからないので、UbuntuやRHなどに送信しお远跡ずバックポヌトを支揎する必芁があるかどうか。

ある時点でここに珟れるず思いたす
http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/tree/net/ipv6/addrconf.c

線集ここに存圚するようです https 

coolljt0725ずcoそしおこのスレッドのすべおの人に感謝したす。 倚くの人がしばらくの間ipv6パッチでカヌネルに曎新できないので、珟圚は党員このスレッドからの提案の倚くを詊した埌、私はなんずかこのバグを朰すこずができたした。 うたくいったこずずうたくいかなかったこずをフォロヌアップするために完党な投皿をしたいので、私が芋た問題を他の人が芋る必芁はありたせん。

TL; DR Linuxブヌトパラメヌタでipv6を無効にし、再起動したす。 coreosでは、これは/usr/share/oem/grub.cfgにset linux_append="ipv6.disable=1"の内容が含たれおいるこずを意味し、その埌再起動したす。 centos / ubuntu / debian / $ linuxesで機胜するはずのより汎甚的な提案はここにありたす

  • ipvlanl2、l3/ macvlanbridgeを詊しおみたしたこれらはどちらもawsで機胜したせん。少なくずも、私はどちらかをawsで機胜させるための知識を持っおいたせん。 ぀たり、ipvlanたたはmacvlanを䜿甚しおネットワヌクに接続されたコンテナヌを起動するず、ゲヌトりェむにpingを実行したり、むンタヌネットに接続したりできたせんでしたはい、aws以倖の環境で動䜜する基本的なアむデアをテストしたした。 これは実際には目前の問題を解決したように芋えたしたが、私たちのナヌスケヌスではむンタヌネットに接続できる必芁がありたす-そうでないナヌスケヌスでは、これは実行可胜なオプションであり、ブリッゞに察しおかなりセクシヌに芋えたす。
  • dockerd個別に枡された次のフラグを、特定の組み合わせで詊したしたどれも機胜しおいないようだったので、すべおの組み合わせを詊すこずに぀いおあたり科孊的ではありたせんでした。
--ipv6=false
—iptables=false
—ip-forward=false
—icc=false
—ip-masq=false
—userland-proxy=false

興味深いこずに、 --ipv6=falseは実際には䜕もしおいないようです。これは非垞に耇雑で、コンテナはこのフラグでinet6アドレスを受信しお​​いたした。

--userland-proxy=falseはヘアピンモヌドを蚭定し、実際に機胜するこずは期埅されおいたせんでした。 これに関連しお--userland-proxy=falseここでは、これはすぐ䞊流であっおもよいし、䟡倀がある別のショット、それはパフォヌマンスのために、この問題に蚀及バグにかかわらず、これをオフにするにはいいだろうが、残念ながら、それはたた別の持っおいたす珟時点でのバグ。

長すぎる; 読みたしたgrub蚭定でipv6を無効にしたす。 リブヌト。 利益。

CentOS 7.23.10.0-327.28.3.el7.x86_64およびDocker 1.12.1k8sなしでこの問題に盎面したした。 この問題は、ネットワヌクトラフィックが増加するず発生したす。
以前のアドバむスに埓っおipv6を無効にしおカヌネルを起動しおも圹に立ちたせんでした。
しかし、docker0むンタヌフェヌスをpromiscモヌドに倉えるこずで、これは修正されたした。 @daduxによる䞭叀のsystemdドロップむンありがずう-珟圚はうたく機胜しおいるようです。

@rdallman grubを介しおipv6をunregister_netdevice劚げられるこずはありたせん。 --userland-proxy蚭定に関係なくtrueたたはfalseのいずれか。

ああ、パッチが安定するためにキュヌに入れられたのは玠晎らしいこずです。
--ipv6=falseが䜕もしないずいう問題に぀いお@abochにpingを

@trifle申し蚳ありたせん:(情報を投皿しおいただきありがずうございたす。数日間のテスト埌もただ問題は発生しおいたせんが、問題が発生した堎合は曎新されたす。coreos1122.2カヌネル4.7.0を実行しおいたす。docker0をpromiscモヌドに蚭定しおいたす。䞀郚の人にずっおはこれを修正しおいるようです私たちにずっおは運が悪いです。

@RRAlex誰かがバックポヌトに関しおUbuntuカヌネルチヌムに

Ubuntuカヌネルチヌムのメヌリングリスト
https://lists.ubuntu.com/archives/kernel-team/2016-September/thread.html

安定したカヌネルのパッチ
https://github.com/torvalds/linux/commit/751eb6b6042a596b0080967c1a529a9fe98dac1d

Ubuntuカヌネルコミットログ
http://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/log/?h=master-next
パッチはただありたせん

@leonsp私は関連する問題ず思われるものに぀いお圌らに連絡しようずしたした
https://bugs.launchpad.net/ubuntu/+source/linux-lts-xenial/+bug/1403152

最埌の79応答を芋るず、誰かがそのパッチを䜿甚しおXenialのカヌネルを構築したした。
https://launchpad.net/~ddstreet/+archive/ubuntu/lp1403152

それがメむンのUbuntuカヌネルツリヌにい぀入るのか、たたこの人ずUbuntuずの関係は䜕か、そしおそれが圹立぀かどうかはわかりたせん...

たた、Ubuntuカヌネルのコミットログで、そのスレッドからの蚀及されたコミットを芋぀けるこずができたせん。

@RRAlex䞊蚘のコミットはddstreetのブランチ〜ddstreet / + git / linuxlp1403152-xenialにあり、ログは次のずおりです https //code.launchpad.net/~ddstreet/+git/linux/+ref/lp1403152-xenial
したがっお、Ubuntu 16.04でこの問題を抱えおいる人は誰でも、詊しおみるこずができたす。 https://launchpad.net/~ddstreet/+archive/ubuntu/lp1403152

おそらく@sforsheeは知っおいたすUbuntuカヌネルの堎合

私は぀いに「ipv6.disable = 1」゜リュヌションをテストするこずに成功したした。 それに加えお-私は私のdebian8で4.7.2カヌネルにアップグレヌドしたした。
カヌネルをアップグレヌドし、カヌネルパラメヌタヌで「ipv6.disable = 1」を有効にした埌、Dockerデヌモンの「--userland-proxy = false」フラグがなくおも、実際のワヌクロヌドで「埅機䞭」の問題をキャッチできたした。 幞いなこずに、「-userland-proxy = false」を指定し、「docker-stress」の問題を再珟しようずするず、それができなくなりたす。 しかし、「-userland-proxy」の倀に関係なく、再び発生するず確信しおいたす。
぀たり、私が芋たずころ、ipv6は間違いなくこの問題に関䞎しおいたす。これは、docker-stressが問題をキャッチできなくなったためです。 悪いニュヌスは、問題が実際にはただ存圚しおいるこずです぀たり、郚分的にしか修正されおいたせん。

さらにテストするために、埌で最新の4.8rc7をコンパむルしたす。

@ twang2218 @ coolljt0725

うヌん..だから私はちょうどddstreetのppaからバックポヌトされたパッチでUbuntuxenial 4.4.0-36カヌネルを詊したした

$ uname -a
Linux paul-laptop 4.4.0-36-generic #55hf1403152v20160916b1-Ubuntu SMP Fri Sep 16 19:13:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

残念ながら、これは私にずっお問題を解決しおいないようです。 「ipv6.disable = 1」でも実行しおいるこずに泚意しおください。 同じ結果で耇数の無関係な原因を芋おいたすか このスレッドのコメントの倚くはそう瀺唆しおいるようです。

これらに぀いおはあたり知りたせんが、以前にこのようなバグがあったこずは知っおいたす。 私が理解しおいるように、ネットワヌク名前空間がクリヌンアップされるず、ネットワヌクデバむスぞの参照カりントがloに転送されるため、「loが解攟されるのを埅぀」ずは、䞀郚のネットデバむスで参照カりントのリヌクが発生するこずを意味したすが、必ずしもloではありたせん。盎接。 リヌクがあったこずがわかったずきには、どのデバむスに関連付けられおいたのかわからないため、これらは远跡する必芁がありたす。

すべおのコメントを読み返したわけではありたせんが、誰かがUbuntuで信頌できるリプロデュヌサヌをくれたら、それを芋お、䜕か理解できるかどうかを確認したす。

@sforshee再珟するのは必ずしも簡単ではありたせんが、パッチが䜜成されたした少なくずもここで報告されたケヌスのいく぀かを修正したす。 http://www.spinics.net/lists/netdev/msg393441.html。 それはアップストリヌムで受け入れられたしたhttps://github.com/torvalds/linux/commit/751eb6b6042a596b0080967c1a529a9fe98dac1d

@thaJeztahああ、あなたが今私に向けおいた質問が芋えたす。

したがっお、パッチはアップストリヌム4.4の安定したキュヌにありたす。16.04の堎合、次のカヌネルSRUすでに進行䞭ではなく、その埌の玄5〜6週間に含たれる可胜性がありたす。 14.04でも必芁な堎合は、バックポヌトできるようにお知らせください。

@sforsheeは基本的に以前そのパッチの前で、カヌネルでipv6を有効にし通垞はデフォルトで有効、dockerデヌモンフラグに「--userland-proxy = false」を远加しおからdocker-stress -c 100実行するこずで再珟できたした。䟋docker-stressはここからですhttps//github.com/crosbymichael/docker-stress

@fxposterありがずう。 その修正がある堎合、私が本圓に心配する必芁があるのは、その修正をUbuntuカヌネルに取り蟌むこずだけです。 たた、そのパッチで修正されおいない他のリヌクを調べるのを手䌝うこずもできたす。

私もこの問題を抱えおいたす。 AWSのrancherOSボックス内でdockerを実行しおいたす。 実際には、ランチャヌクラスタヌ3぀のホストをセットアップし、その䞭で小さなアプリケヌションを実行した埌、ランダムに発生したす。

同じ... Fedora 24はランダムに発生し、10時間ごずに1぀取埗するよりも、1週間は問題ない可胜性がありたす
kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

カヌネル3.10.0-327.36.1.el7およびdocker1.12.1を実行しおいるCentOS7での䜓隓

Docker 1.12.1のたたでカヌネル3.10.0-327.18.2.el7にダりングレヌドするず、システムが安定したようです。

私もこれを芋おいたす
Dockerバヌゞョン1.11.2
Ubuntu 16.04.14.4.0-38-generic

ipv6が無効grub

ipv6パッチsic !!を含むカヌネル4.8.0-rc7を搭茉したサヌバヌで、 --userland-proxy=false sicなしでこの問題が発生したした。 したがっお、問題の䞀郚は修正されるかもしれたせんが、すべおではありたせん。

これをデバッグする方法を知っおいる人はいたすか

これは、ほが空きメモリが䞍足した堎合にのみセットアップで発生するこずがわかりたした。

@fxposter最小限の再珟ケヌスを芋぀けるず䟿利ですが、これはちょっず難しいです/次に、ftraceを䜿甚しお少なくずもコヌドパスを芋぀けるこずができたす。

CoreOS 1081.5.04.6.3-coreosで発生

Linux blade08 4.6.3-coreos #2 SMP Sat Jul 16 22:51:51 UTC 2016 x86_64 Intel(R) Xeon(R) CPU X5650 @ 2.67GHz GenuineIntel GNU/Linux

@ LK4D4残念ながら、

@fxposterそのパッチは問題の䞀郚を修正するだけですしかし、私たちの環境では、そのパッチでこれ以䞊遭遇するこずはありたせん、すべおではありたせん。同僚にこの問題を調査し続けさせたす。 これを再珟する方法があれば、私に知らせおください、ありがずう:)

このパッチをFedora24に適甚するようにRedhatにリク゚ストを投皿したした。

https://bugzilla.redhat.com/show_bug.cgi?id=1379767#c1

4.4.0-42はただ確かに壊れおいたす...
私はここでUbuntuに぀いお蚀及したしたが、おそらく誰かがより良いアむデアを持っおいたす
https://bugs.launchpad.net/ubuntu/+source/linux-lts-xenial/+bug/1403152

これ、Dockerバヌゞョン1.11.2、ビルドb9f10c9 / 1.11.2、64ビットAmazon Linux 2016.03v2.1.6も衚瀺されたす。

ただ起こった。 docker 1.12.2、armbian linux kernel 4.8.4、bootargsのipv6.disable = 1

バグを修正する方法、私は毎日それに䌚いたす

@woshihaoren --userland-proxy=falseは䜿甚しないでください

明確にするために、userland-proxyも無効にしお盎面したした

Amazon Linux AMI 2016.9でこれを取埗する

$ uname -a

Linux 4.4.23-31.54.amzn1.x86_64 #1 SMP

Dockerバヌゞョン

`` `クラむアント
バヌゞョン1.11.2
APIバヌゞョン1.23
Goバヌゞョンgo1.5.3
Gitコミットb9f10c9 / 1.11.2
構築
OS / Archlinux / amd64

サヌバ
バヌゞョン1.11.2
APIバヌゞョン1.23
Goバヌゞョンgo1.5.3
Gitコミットb9f10c9 / 1.11.2
構築
OS / Archlinux / amd64
`` `

centos7カヌネル4.4.30再び~~~~

CoreOS 1185.3.0、4.7.3-coreos-r2、Docker 1.11.2
コマンドずしお「apt-getupdate」を䜿甚しお10..20debian jessieコンテナを実行するだけで再珟可胜。

CoreOS安定版は珟圚もヒットしおいたす。 4.7シリヌズの修正は4.7.5にありたす https 

commit 4e1b3aa898ea93ec10e48c06f0e511de37c35b2d
Author: Wei Yongjun <[email protected]>
Date:   Mon Sep 5 16:06:31 2016 +0800

    ipv6: addrconf: fix dev refcont leak when DAD failed

TL; DR-この投皿には解決策はありたせんが、これたでに远跡したこずず珟圚の䜜業理論をリストしたす。 これを远いかけおいる他の人々が、私たちがこのこずを実行するずきに、ここでいく぀かの情報が圹立぀こずを願っおいたす。

@ koendc4.7.5に導入されたパッチを投皿しおいただきありがずうございたす。 4e1b3aa898ea93ec10e48c06f0e511de37c35b2dアップストリヌム751eb6b6042a596b0080967c1a529a9fe98dac1dパッチを4.5.5セットアップ[1]にバックポヌトし、unregister_netdeviceの問題を簡単に再珟できたした。 4.7.xカヌネルの他の倉曎が、提䟛されたパッチず連携しおこの問題を解決する可胜性がありたすが、私はただそれを確認しおいないので、ただすべおの垌望を倱うこずはありたせん。 [2]で説明されおいるように、問題を匕き起こす再珟可胜なテストケヌスがあるため、4.5.5でテストしおいたす。

テストに基づいお確認したその他の事項

  • 4.2はそれ以降のカヌネルよりもはるかに安定しおいたす
  • 4.5.xは簡単に再珟できたす。 私が広範囲にテストした新しいカヌネル4.8.2および4.8.6のうち、最初に発生するたでの時間は60〜48時間の範囲でしたが、問題は䟝然ずしお存圚したす。
  • この問題は、ネットワヌクトラフィックず、コンテナず芪リ゜ヌスの比率virt cpuの䞡方に関連しおいるようです。 他の人が避けおきたように、これが実際に競合状態である堎合、これは赀いニシンである可胜性がありたす

次のステップ

  • 適切なprintkステヌトメントを䜿甚しおカヌネルをむンストルメントし、割り圓おられたリ゜ヌスが解攟されないケヌスを芋぀けようずしたす
  • 前述のパッチの有無にかかわらず、4.7.5以降のカヌネルをテストしお、問題が発生するかどうかを確認したす。
  • クラッシュの盎前に、非垞に興味深い䞀連のIPv6: eth0: IPv6 duplicate address <blah> detected゚ラヌが発生したした。 別の赀いニシンかもしれたせんが、盞関関係があるかどうかを確認するために、ipv6を無効にしおみおください

[1]私の完党なセットアップは、 4.5.5基づいおわずかにカスタマむズされたDebianカヌネルを実行するGCEvirtです。 Docker version 1.8.3, build f4bf5c7はその䞊で実行されおいたす
[2]テストケヌスの情報私は、それぞれのNode.js開始、20の䞊列凊理を有するハロヌワヌルドドッカヌ容噚のサヌバ内を。 hello worldを返す代わりに、Node.jsサヌバヌは1MBのランダムテキストを返したす。 芪プロセスは、コンテナヌを開始し、カヌルしお1MBのデヌタを取埗し、コンテナヌを停止するタむトなルヌプにありたす。 この蚭定を䜿甚するず、4〜90幎代の問題を䞀貫しお再珟できたす。 物理ホストたたはvirtualbox内でこれず同じセットアップを䜿甚しおも、GCEボックスでの再生たでの平均時間を倉曎するさたざたな項目があるにもかかわらず、問題は再珟されたせん。 私が遊んでいる倉数同時テストプロセスの数、転送されたペむロヌドのサむズ、curl呌び出しの量。 最初の2぀の倉数は確実に盞関しおいたすが、virtの劥圓な飜和点を芋぀けるために倉数を調敎するだけである可胜性が高いず思いたす。

私もこの゚ラヌが発生しおいたす。

コンテナをデプロむした埌、3回繰り返されおいるのがわかりたす。

説明

kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

問題を再珟する手順

  1. DockerホストにSSHで接続
  2. コンテナを実行する
docker run -d --network=anetwork --name aname -p 9999:80 aimagename

受け取った結果を説明しおください。

゚ラヌを3回繰り返すだけです。

期埅した結果を説明しおください。
゚ラヌなし

重芁ず思われる远加情報たずえば、問題が発生するのはたたにしかありたせん
今週末から始たったばかりです。

docker version出力

 docker --version
Docker version 1.12.3, build 6b644ec

docker info出力

docker info
Containers: 10
 Running: 9
 Paused: 0
 Stopped: 1
Images: 16
Server Version: 1.12.3
Storage Driver: overlay2
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: overlay null host bridge
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.8.4-200.fc24.x86_64
Operating System: Fedora 24 (Server Edition)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 15.67 GiB
Name: docker-overlayfs
ID: AHY3:COIU:QQDG:KZ7S:AUBY:SJO7:AHNB:3JLM:A7RN:57CQ:G56Y:YEVU
Docker Root Dir: /docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

远加の環境の詳现AWS、VirtualBox、物理など

仮想マシン
Fedora 24
ext3のOverlayFS2

Dockerに割り圓おられた個別のドラむブは24ギガを䜿甚したす。
ラムの16ギガ。

Docker PS

docker ps -a
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
5664a10de50b        7f01d324a3cb         "/bin/sh -c 'apk --no"   11 minutes ago      Exited (1) 10 minutes ago                                                    pensive_brattain
3727b3e57e2f        paa-api              "/bin/sh -c /run.sh"     10 days ago         Up 10 days                  0.0.0.0:8080->80/tcp                             paa-api
43cfe7eae9cf        paa-ui               "nginx -g 'daemon off"   10 days ago         Up 10 days                  0.0.0.0:80->80/tcp, 443/tcp                      paa-ui
345eaab3b289        sentry               "/entrypoint.sh run w"   11 days ago         Up 11 days                  0.0.0.0:8282->9000/tcp                           my-sentry
32e555609cd2        sentry               "/entrypoint.sh run w"   11 days ago         Up 11 days                  9000/tcp                                         sentry-worker-1
a411d09d7f98        sentry               "/entrypoint.sh run c"   11 days ago         Up 11 days                  9000/tcp                                         sentry-cron
7ea48b27eb85        postgres             "/docker-entrypoint.s"   11 days ago         Up 11 days                  5432/tcp                                         sentry-postgres
116ad8850bb1        redis                "docker-entrypoint.sh"   11 days ago         Up 11 days                  6379/tcp                                         sentry-redis
35ee0c906a03        uifd/ui-for-docker   "/ui-for-docker"         11 days ago         Up 11 days                  0.0.0.0:9000->9000/tcp                           docker-ui
111ad12b877f        elasticsearch        "/docker-entrypoint.s"   11 days ago         Up 11 days                  0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   paa-elastic

Dockerむメヌゞ

 docker images -a
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
<none>               <none>              7f01d324a3cb        12 minutes ago      88.51 MB
<none>               <none>              1a6a12354032        12 minutes ago      88.51 MB
debian               jessie              73e72bf822ca        6 days ago          123 MB
paa-api              latest              6da68e510175        10 days ago         116.9 MB
<none>               <none>              4c56476ba36d        10 days ago         116.9 MB
<none>               <none>              3ea3bff63c7b        10 days ago         116.8 MB
<none>               <none>              05d6d5078f8a        10 days ago         88.51 MB
<none>               <none>              30f0e6001f1e        10 days ago         88.51 MB
paa-ui               latest              af8ff5acc85a        10 days ago         188.1 MB
elasticsearch        latest              5a62a28797b3        12 days ago         350.1 MB
sentry               latest              9ebeda6520cd        13 days ago         493.7 MB
redis                latest              74b99a81add5        13 days ago         182.9 MB
python               alpine              8dd7712cca84        13 days ago         88.51 MB
postgres             latest              0267f82ab721        13 days ago         264.8 MB
nginx                latest              e43d811ce2f4        3 weeks ago         181.5 MB
uifd/ui-for-docker   latest              965940f98fa5        9 weeks ago         8.096 MB

DockerボリュヌムLs

DRIVER              VOLUME NAME
local               3bc848cdd4325c7422284f6898a7d10edf8f0554d6ba8244c75e876ced567261
local               6575dad920ec453ca61bd5052cae1b7e80197475b14955115ba69e8c1752cf18
local               bf73a21a2f42ea47ce472e55ab474041d4aeaa7bdb564049858d31b538bad47b
local               c1bf0761e8d819075e8e2427c29fec657c9ce26bc9c849548e10d64eec69e76d
local               e056bce5ae34f4066d05870365dcf22e84cbde8d5bd49217e3476439d909fe44

* DF -H *

df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 7.9G     0  7.9G   0% /dev
tmpfs                    7.9G     0  7.9G   0% /dev/shm
tmpfs                    7.9G  1.3M  7.9G   1% /run
tmpfs                    7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/mapper/fedora-root   11G  1.6G  8.7G  16% /
tmpfs                    7.9G  8.0K  7.9G   1% /tmp
/dev/sda1                477M  130M  319M  29% /boot
/dev/sdb1                 24G  1.6G   21G   7% /docker
overlay                   24G  1.6G   21G   7% /docker/overlay2/5591cfec27842815f5278112edb3197e9d7d5ab508a97c3070fb1a149d28f9f0/merged
shm                       64M     0   64M   0% /docker/containers/35ee0c906a03422e1b015c967548582eb5ca3195b3ffdd040bb80df9bb77cd32/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/73e795866566e845f09042d9f7e491e8c3ac59ebd7f5bc0ee4715d0f08a12b7b/merged
shm                       64M  4.0K   64M   1% /docker/containers/7ea48b27eb854e769886f3b662c2031cf74f3c6f77320a570d2bfa237aef9d2b/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/fad7f3b483bc48b83c3a729368124aaaf5fdd7751fe0a383171b8966959ac966/merged
shm                       64M     0   64M   0% /docker/containers/116ad8850bb1c74d1a33b6416e1b99775ef40aa13fc098790b7e4ea07e3e6075/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/456c40bc86852c9f9c9ac737741b57d30f2167882f15b32ac25f42048648d945/merged
shm                       64M     0   64M   0% /docker/containers/a411d09d7f98e1456a454a399fb68472f5129df6c3bd0b73f59236e6f1e55e74/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/3ee2b1b978b048f4d80302eec129e7163a025c7bb8e832a29567b64f5d15baa0/merged
shm                       64M     0   64M   0% /docker/containers/32e555609cd2c77a1a8efc45298d55224f15988197ef47411a90904cf3e13910/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/3e1cdabc2ae422a84b1d4106af1dde0cd670392bbe8a9d8f338909a926026b73/merged
shm                       64M     0   64M   0% /docker/containers/345eaab3b289794154af864e1d14b774cb8b8beac8864761ac84051416c7761b/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/6bfc33084abe688af9c1a704a0daba496bee7746052103ef975c76d2c74d6455/merged
shm                       64M     0   64M   0% /docker/containers/111ad12b877f4d4d8b3ab4b44b06f645acf89b983580e93d441305dcc7926671/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/0b454336447a39d06966adedf4dc4abed6405212107a2f8f326072ae5fb58b3d/merged
shm                       64M     0   64M   0% /docker/containers/43cfe7eae9cf310d64c6fe0f133152067d88f8d9242e48289148daebd9cb713d/shm
overlay                   24G  1.6G   21G   7% /docker/overlay2/0d8bba910f1f5e928a8c1e5d02cc55b6fe7bd7cd5c4d23d4abc6f361ff5043ac/merged
shm                       64M     0   64M   0% /docker/containers/3727b3e57e2f5c3b7879f

DF -i

 df -i
Filesystem               Inodes IUsed   IFree IUse% Mounted on
devtmpfs                2051100   411 2050689    1% /dev
tmpfs                   2054171     1 2054170    1% /dev/shm
tmpfs                   2054171   735 2053436    1% /run
tmpfs                   2054171    16 2054155    1% /sys/fs/cgroup
/dev/mapper/fedora-root 5402624 53183 5349441    1% /
tmpfs                   2054171     8 2054163    1% /tmp
/dev/sda1                128016   350  127666    1% /boot
/dev/sdb1               1572864 72477 1500387    5% /docker
overlay                 1572864 72477 1500387    5% /docker/overlay2/5591cfec27842815f5278112edb3197e9d7d5ab508a97c3070fb1a149d28f9f0/merged
shm                     2054171     1 2054170    1% /docker/containers/35ee0c906a03422e1b015c967548582eb5ca3195b3ffdd040bb80df9bb77cd32/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/73e795866566e845f09042d9f7e491e8c3ac59ebd7f5bc0ee4715d0f08a12b7b/merged
shm                     2054171     2 2054169    1% /docker/containers/7ea48b27eb854e769886f3b662c2031cf74f3c6f77320a570d2bfa237aef9d2b/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/fad7f3b483bc48b83c3a729368124aaaf5fdd7751fe0a383171b8966959ac966/merged
shm                     2054171     1 2054170    1% /docker/containers/116ad8850bb1c74d1a33b6416e1b99775ef40aa13fc098790b7e4ea07e3e6075/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/456c40bc86852c9f9c9ac737741b57d30f2167882f15b32ac25f42048648d945/merged
shm                     2054171     1 2054170    1% /docker/containers/a411d09d7f98e1456a454a399fb68472f5129df6c3bd0b73f59236e6f1e55e74/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/3ee2b1b978b048f4d80302eec129e7163a025c7bb8e832a29567b64f5d15baa0/merged
shm                     2054171     1 2054170    1% /docker/containers/32e555609cd2c77a1a8efc45298d55224f15988197ef47411a90904cf3e13910/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/3e1cdabc2ae422a84b1d4106af1dde0cd670392bbe8a9d8f338909a926026b73/merged
shm                     2054171     1 2054170    1% /docker/containers/345eaab3b289794154af864e1d14b774cb8b8beac8864761ac84051416c7761b/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/6bfc33084abe688af9c1a704a0daba496bee7746052103ef975c76d2c74d6455/merged
shm                     2054171     1 2054170    1% /docker/containers/111ad12b877f4d4d8b3ab4b44b06f645acf89b983580e93d441305dcc7926671/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/0b454336447a39d06966adedf4dc4abed6405212107a2f8f326072ae5fb58b3d/merged
shm                     2054171     1 2054170    1% /docker/containers/43cfe7eae9cf310d64c6fe0f133152067d88f8d9242e48289148daebd9cb713d/shm
overlay                 1572864 72477 1500387    5% /docker/overlay2/0d8bba910f1f5e928a8c1e5d02cc55b6fe7bd7cd5c4d23d4abc6f361ff5043ac/merged
shm                     2054171     1 2054170    1% /docker/containers/3727b3e57e2f5c3b7879f23deb3b023d10c0b766fe83e21dd389c71021af371f/shm
tmpfs                   2054171     5 2054166    1% /run/user/0

無料-lmh

free -lmh
              total        used        free      shared  buff/cache   available
Mem:            15G        3.0G         10G         19M        2.7G         12G
Low:            15G        5.6G         10G
High:            0B          0B          0B
Swap:          1.2G          0B        1.2G

興味のある方のために、私たちTravis CIはUbuntu 14.04でv4.8.7ぞのアップグレヌドをUbuntu14.04でlinux-image-generic-lts-xenialを実行しおいたした。 近い将来、詳现を説明するブログ投皿を公開する予定です。


曎新このDockerスタックを実行しおいるこずを述べおおく必芁がありたす

Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64

曎新Ubuntu Trusty +カヌネルv4.8.7の本番環境でこの゚ラヌがただ発生しおいたす。 以前に゚ラヌを再珟したステヌゞング負荷テストでこれらの゚ラヌが消えた理由はただわかりたせんが、本番環境での゚ラヌ率は実質的に同じです。 前方および䞊方。 むンスタンスの回転率が高いため、この゚ラヌに基づいお「自動爆瞮」を無効にしたした。

CentOS7にもありたす

Message from syslogd@c31392666b98e49f6ace8ed65be337210-node1 at Nov 17 17:28:07 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd@c31392666b98e49f6ace8ed65be337210-node1 at Nov 17 17:32:47 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd@c31392666b98e49f6ace8ed65be337210-node1 at Nov 17 17:37:32 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd@c31392666b98e49f6ace8ed65be337210-node1 at Nov 17 17:37:42 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

[root@c31392666b98e49f6ace8ed65be337210-node1 ~]# docker info
Containers: 19
 Running: 15
 Paused: 0
 Stopped: 4
Images: 23
Server Version: 1.11.2.1
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local nas acd ossfs
 Network: vpc bridge null host
Kernel Version: 4.4.6-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.795 GiB
Name: c31392666b98e49f6ace8ed65be337210-node1
ID: WUWS:FDP5:TNR6:EE5B:I2KI:O4IT:TQWF:4U42:5327:7I5K:ATGT:73KM
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-ip6tables is disabled
Cluster store: etcd://test.com:2379
Cluster advertise: 192.168.0.2:2376

DebianテストでのDigitalOceanVP​​Sでも同じこずが起こりたす。


# journalctl -p0 | tail -15

Nov 19 12:02:55 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 12:03:05 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 12:17:44 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 12:48:15 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 13:33:08 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 14:03:04 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 14:03:14 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 14:17:59 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 15:03:02 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 15:18:13 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 15:32:44 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 16:03:13 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 16:47:43 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 17:17:46 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
Nov 19 17:17:56 hostname kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1


システム

$ apt list --installed 'linux-image*'
Listing... Done
linux-image-3.16.0-4-amd64/now 3.16.36-1+deb8u2 amd64 [installed,local]
linux-image-4.8.0-1-amd64/testing,now 4.8.5-1 amd64 [installed,automatic]
linux-image-amd64/testing,now 4.8+76 amd64 [installed]

$ apt list --installed 'docker*'
Listing... Done
docker-engine/debian-stretch,now 1.12.3-0~stretch amd64 [installed]
N: There are 22 additional versions. Please use the '-a' switch to see them.

$ uname -a
Linux hostname 4.8.0-1-amd64 #1 SMP Debian 4.8.5-1 (2016-10-28) x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux testing (stretch)
Release:    testing
Codename:   stretch


$ docker info

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 42
Server Version: 1.12.3
Storage Driver: devicemapper
 Pool Name: docker-254:1-132765-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: ext4
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 435 MB
 Data Space Total: 107.4 GB
 Data Space Available: 16.96 GB
 Metadata Space Used: 1.356 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.136 (2016-11-05)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.8.0-1-amd64
Operating System: Debian GNU/Linux stretch/sid
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.4 MiB
Name: hostname
ID: <redacted>
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Insecure Registries:
 127.0.0.0/8


$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                              NAMES
0b54ed86ba70        squid/production    "/usr/sbin/squid -N"   29 hours ago        Up 29 hours         0.0.0.0:8080-8081->8080-8081/tcp   squid


$ ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether de:ad:be:ff:ff:ff brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether de:ad:be:ff:ff:ff brd ff:ff:ff:ff:ff:ff
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default 
    link/ether de:ad:be:ff:ff:ff brd ff:ff:ff:ff:ff:ff
234: veth64d2a77<strong i="12">@if233</strong>: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default 
    link/ether de:ad:be:ff:ff:ff brd ff:ff:ff:ff:ff:ff link-netnsid 1


# ifconfig

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 dead::beef:dead:beef:ffff  prefixlen 64  scopeid 0x20<link>
        ether de:ad:be:ef:ff:ff  txqueuelen 0  (Ethernet)
        RX packets 3095526  bytes 1811946213 (1.6 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2642391  bytes 1886180372 (1.7 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.45.67.89  netmask 255.255.240.0  broadcast 123.45.67.89
        inet6 dead::beef:dead:beef:ffff  prefixlen 64  scopeid 0x0<global>
        inet6 dead::beef:dead:beef:ffff  prefixlen 64  scopeid 0x20<link>
        ether dead::beef:dead:beef:ffff  txqueuelen 1000  (Ethernet)
        RX packets 3014258  bytes 2087556505 (1.9 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3453430  bytes 1992544469 (1.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 178  bytes 15081 (14.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 178  bytes 15081 (14.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth64d2a77: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 dead::beef:dead:beef:ffff  prefixlen 64  scopeid 0x20<link>
        ether d2:00:ac:07:c8:45  txqueuelen 0  (Ethernet)
        RX packets 1259405  bytes 818486790 (780.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1103375  bytes 817423202 (779.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

私は過去4日間、 4.8.8をタむトルヌプでテストしおきたしたテストケヌスに぀いおは以前のコメントの[2]を参照。 ここたでは順調ですね。

事実

  • パッチ751eb6b6は、この問題の発生を倧幅に枛らしたすが、完党に排陀するわけではありたせん。

仮定
@meatballhatは、4.8.7の実行䞭に本番サヌバヌで問題が発生したこずを指摘したした。 これにより、2぀の可胜性が残りたす。

  • 私のテストテストケヌスに欠陥がありたす可胜性が高い
  • 4.8.8で修正が導入されたした。 4.8.8の倉曎ログを芋るず、コミット5086cadfず6fff1319はどちらも、解決されたnetdevの問題に蚀及しおいたす。 どちらもここで問題を明瀺的に指摘しおいたせんが、どちらも疑わしいほど近くにありたす。

䜕人かの人々に4.8.8を詊しおもらい、この問題を再珟できるかどうかを確認するこずはできたすか

@reshen 4.8.8に曎新し、報告したす+1調査しおいただきありがずうございたす。

@reshen優れた研究。 これたでのずころ、Xubuntu16.04でLinux4.8.8を䜿甚しお問題を再珟するこずもできたせんでした。

私はUbuntuメむンラむンカヌネルビルドを䜿甚しおい

Linux 4.8.8をテストするために私にずっお最も簡単なのは、メむンラむンのカヌネルビルドにaufsが含たれおいなかったため、ストレヌゞドラむバヌずしおaufsからoverlay2に切り替えるこずでした。 テストに圱響はないず思いたすが、泚意が必芁です。

過去に、DanStreetmanによっおバックポヌトされた751eb6b6を䜿甚しおLinux4.4.4をテストしたしたが、これによっお問題が軜枛されたようには芋えたせんでした。 あなたが指摘した2぀のパッチ5086cadfず6fff1319をバックポヌトしおも、4.4.8ず同じ結果が埗られるかどうかを確認するのは興味深いこずです。

4.4.0-47を搭茉したUbuntu16.04は匕き続き圱響を受けたした...今すぐ4.4.0-49を詊しおみるず、埌で報告されたす。

線集2016-11-28-49はdmesgでそのログ行を瀺すsitllです。

Fedora 25カヌネル4.8.8ずDocker1.12.3でこれを䜓隓したした

参考単䞀の本番ホストでLinux4.8.8をDockerv1.12.3ず組み合わせお実行しおいたす。 皌働時間は珟圚5。5日で、マシンは安定しおいたす。

Syslogに少数のunregister_netdevice: waiting for lo to become free. Usage count = 1メッセヌゞが衚瀺されるこずがありたすが、以前ずは異なり、カヌネルがクラッシュせず、メッセヌゞが消えたす。 カヌネルたたはDockerのいずれかに導入された他の倉曎のいずれかがこの状態を怜出し、珟圚は回埩しおいるず思われたす。 私たちにずっお、これはこのメッセヌゞを煩わしくしたすが、もはや重倧なバグではありたせん。

私は他の䜕人かの人々が圌らの生産艊隊で䞊蚘を確認できるこずを望んでいたす。

@ gtirloni -4.8.8 / 1.12.3マシンがクラッシュしたのか、それずもメッセヌゞを芋ただけなのかを明確にできたすか

このこずを䞉角枬量するために圹立぀情報の耇補/提䟛に取り組んでいるすべおの人に、事前に感謝したす。

dockerを起動した埌、vethむンタヌフェヌスの察応するものdocker0を削陀し、その埌、ansibleを䜿甚しおホストをプロビゞョニングするずきにdockerを再起動したす。 それ以来、問題は発生しおいたせん。

DockerでRaspbianを実行しおいるRaspberryPi2でも同じ゚ラヌが発生したす。

カヌネル情報
Linux rpi2 4.4.32-v7+ #924 SMP Tue Nov 15 18:11:28 GMT 2016 armv7l GNU/Linux

Docker情報

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 9
Server Version: 1.12.3
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 4.4.32-v7+
Operating System: Raspbian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 925.5 MiB
Name: rpi2
ID: 24DC:RFX7:D3GZ:YZXF:GYVY:NXX3:MXD3:EMLC:JPLN:7I6I:QVQ7:M3NX
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No cpuset support
Insecure Registries:
 127.0.0.0/8

これは、ダりンロヌドしたプログラムを玄50Mbむンストヌルする必芁があるコンテナヌを䜜成した埌に発生したした。

再起動するだけで、マシンを再び䜿甚できるようになりたす

私は実際にこれをECSクラスタヌのAmazonLinuxで芋おいたす-メッセヌゞは時々スロヌされたすが、reshenが今芋おいるようにロックされたせん。 Docker1.11.2。 Unameは、バヌゞョンずしお「4.4.14-24.50.amzn1.x86_64」を報告したす。

@reshen今週末、ラップトップで4.8.8をビルドしお、それがどうかを確認したす。
私のためにそれを修正したす
ᐧ

10:29の朚、2016幎12月1日には、アヌネスト・ミュヌラヌ[email protected]
曞きたした

私は実際にこれをECSクラスタヌのAmazonLinuxで芋おいたす-メッセヌゞ
時々スロヌしたすが、reshenが今芋おいるように、ロックされたせん。
Docker1.11.2。 Unameは、バヌゞョンずしお「4.4.14-24.50.amzn1.x86_64」を報告したす。

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-264220432 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AKklVRqoBUZDu3HMhGv3b6knnA6j6C_Qks5rDvXRgaJpZM4B4L4Z
。

-
ケむファヌ・ファヌズランド
http://kfrz.work

CoreOS Stable 1185.3.0を実行しおいるKubernetesワヌカヌノヌドでhttps://github.com/crosbymichael/docker-stressを䜿甚しお、この問題を再珟するこずもできたした。

docker_stress_linux_amd64 -k 3s -c 5 --containers 1000 コンテナを䜜成/削陀する5人の同時ワヌカヌ、コンテナの最倧有効期間= 3秒、AWSのm4.largeむンスタンスで最倧1000個のコンテナを䜜成するず、玄3分埌にDockerデヌモンが応答しなくなりたす。

CoreOS Beta 1235.1.0にアップグレヌドしたしたが、再珟できたせんでした応答がないか、カヌネルログのunregister_netdeviceメッセヌゞの䞡方。 5぀の同時docker_stressワヌカヌを実行するず、数分埌にCoreOS Stableが匷制終了されたすが、CoreOS Betaを䜿甚しおテストが完了するたで、10ず15の同時ワヌカヌで実行できたした。

CoreOSは「チャネル」でリリヌスされるため、カヌネルを個別にアップグレヌドするこずはできたせん。 安定版ずベヌタ版の䞻な違いは次のずおりです。

CoreOS Stable 1185.3.0

カヌネル4.7.3

docker1.11.2

CoreOS Beta 1235.1.0

カヌネル4.8.6

docker1.12.3

4.4.23-31.54.amzn1.x86_64を実行しおいるAmazonElasticBeanstalkでこの問題が発生する

CoreOS Stable 1185.5.0、Docker1.12.2で発生したす
再起動埌、すべおが正垞です

曎新Dockerv1.12.3およびLinuxカヌネルv4.8.6を搭茉したCoreOSBeta 1235.1.0を実行しおいるホストで、ハングしたDockerデヌモンの問題が再び発生したした。 😢

1.12.4および1.13は、理論的には、このカヌネルの問題が発生したずきにフリヌズしないようにする必芁がありたす。
dockerデヌモンでフリヌズが発生する理由は、デヌモンがコンテナヌオブゞェクトのロックを保持しおいる間、カヌネルからのネットリンクメッセヌゞこれは決しお来ないを埅機しおいるためです。

1.12.4および1.13は、このnetlink芁求にタむムアりトを蚭定しお、少なくずもコンテナヌロックを解攟したす。
これは問題を修正したせんが、少なくずもうたくいけばデヌモン党䜓をフリヌズしたせん。
この問題が発生するず、netlinkずのすべおの盞互䜜甚が停止するように芋えるため、新しいコンテナをスピンアップできず、同様にそれらを砎棄できない可胜性がありたす。

@ cpuguy83 FWIW、デヌモンがハングしおいる堎合、実行䞭のコンテナヌは問題なくAFAIKで実行を継続したす。 実際、目立぀のはコンテナヌの開始ず停止です特に、私たちのようにKubernetesで実行されおいたす。

これで問題が解決するわけではありたせんが、少なくずもうたくいけばデヌモン党䜓がフリヌズするこずはありたせん。

デヌモン党䜓がフリヌズするこずの1぀の利点は、簡単に理解できるこずです。 Kubernetesはノヌドを削陀でき、堎合によっおは自動的に再起動するこずもできたす。 デヌモンを実行し続ける必芁がありたすが、カヌネルの問題が発生したこずを簡単に芋぀けるこずは可胜ですか

@seanknoxパッチを適甚したDockerCoreOS Docker 1.12.3 +アップストリヌム1.12.4-rc1パッチを䜿甚したカスタムCoreOS 1248.1.0AMIを提䟛できたす。 CoreOS / K8sクラスタヌで数時間ごずにハングアップが修正されたした。 DeisSlackのAWSアカりントIDで私にpingを送信するだけです。

CoreOSクラスタヌでこの問題に倧きな苊痛を感じたした。 最終的にい぀修正されるか誰かに教えおもらえたすか 私たちは倜眠れるこの瞬間を倢芋おいたす。

@DenisIzmaylov --userland-proxy=false蚭定しない堎合、通垞、この問題に遭遇するこずはありたせん。

しかし、そうでなければ、これはカヌネルのバグであり、おそらく耇数のカヌネルのバグであり、4.8で解決されたず蚀う人もいれば、そうではないず蚀う人もいたす。 䞀郚の人にずっおは、ipv6を無効にするず修正されるように芋えたすが、そうでない人もいたすしたがっお、おそらく耇数の問題...たたは少なくずも耇数の原因です。

--userland-proxy=falseずない堎合の高負荷システムで、この問題が数時間以内に発生したした。

カヌネル4.8.12でただunregister_netdevice゚ラヌが発生しおいるこずを確認したした。 トリガヌには玄5日かかりたす。 システムを再起動するだけで問題が回埩するようです。 Dockerの停止は無期限にハングするようです。

カヌネルブヌトのipv6を無効にするトリックをただ詊しおいたせん。

Containers: 17
 Running: 14
 Paused: 0
 Stopped: 3
Images: 121
Server Version: 1.10.3
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 4.8.12-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.86 GiB
Name: **REDACTED***
ID: **REDACTED***
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

誰かが1.12.5でこれを詊すこずができれば玠晎らしいでしょう。これは、Dockerをハングさせるだけでなく、スタックしたnetlinkリク゚ストでタむムアりトするはずです。

@ cpuguy83ただし、その状態ではシステムはただ䜿甚でき

@ LK4D4ああ、完党に、それらのタむムアりトを芋たいだけです;

Cent OS 7でこの問題が発生する

kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

Linux foo 3.10.0-514.2.2.el7.x86_641 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

docker-engine-1.12.5-1.el7.centos.x86_64

これは、Dockerコンテナヌ内で実行されおいるCIビルドに圱響を及がしおおり、このコン゜ヌルメッセヌゞが衚瀺されおいる間に突然停止しおいるように芋えたす。 修正たたは回避策はありたすか ありがずう

@ cpuguy83この゚ラヌが発生しおもDockerはハングしたせんが、コンテナヌが䞭断されたす。

だから私は問題なくしばらくの間11ヶ月centos7マシンでdockerを実行しおいたす。 今日、私はtcpリスニングデヌモンを詊しおみるこずにしたした tcpリスニングアドレスを/ etc / sysconfig / dockerに远加したした、そしおちょうどこの゚ラヌが発生したした。

kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

だから私の䜿甚回数は3ではありたせん。

コンテナ4
実行䞭3
䞀時停止0
停止1
画像67
サヌバヌバヌゞョン1.10.3
ストレヌゞドラむバヌbtrfs
ビルドバヌゞョンBtrfs v4.4.1
ラむブラリバヌゞョン101
実行ドラむバヌネむティブ-0.2
ロギングドラむバヌjson-file
プラグむン
ボリュヌムロヌカル
ネットワヌクブリッゞヌルホスト
カヌネルバヌゞョン3.10.0-514.2.2.el7.x86_64
オペレヌティングシステムCentOS Linux 7コア
OSTypelinux
アヌキテクチャx86_64
Dockerフックの数2
CPU24
総メモリ39.12 GiB
名前aimes-web-encoder
IDQK5Q JCMAATGR ND6WYOT4PZ7GDBV5PR26 YZQLINRU  HAUCCQ6B
レゞストリdocker.ioセキュア

3.10.0-514.2.2.el7.x86_641 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

クラむアント
バヌゞョン1.10.3
APIバヌゞョン1.22
パッケヌゞバヌゞョンdocker-common-1.10.3-59.el7.centos.x86_64
Goバヌゞョンgo1.6.3
Gitコミット3999ccb-サポヌトされおいたせん
構築日2016幎12月15日朚曜日17:24:43
OS / Archlinux / amd64

サヌバ
バヌゞョン1.10.3
APIバヌゞョン1.22
パッケヌゞバヌゞョンdocker-common-1.10.3-59.el7.centos.x86_64
Goバヌゞョンgo1.6.3
Gitコミット3999ccb-サポヌトされおいたせん
構築日2016幎12月15日朚曜日17:24:43
OS / Archlinux / amd64

@aamerikを確認できたす。 同じカヌネルバヌゞョンで同じ問題が発生しおいたす。 システムに最近の倧きな倉曎はなく、今日からこの問題が発生しおいたす。

JenkinsのDockerむメヌゞを実行しおいるCentOS7マシンで同じkernel:unregister_netdevice: waiting for lo to become free. Usage count = 1メッセヌゞが衚瀺されたした。 私が䜿甚しおいたCentOS7マシンは、2016幎12月20日頃の時点ですべおの最新のCentOS7パッチを備えた最新のものでした。

ここでの最新の参照はCentOSベヌスのようですので、実行ホストをUbuntuたたはDebianマシンに切り替えたす。

そのCentOS7マシンでDocker version 1.12.5, build 7392c3bしおいたす。 Dockerはハングしたせんでしたが、Dockerで実行しおいたJenkinsプロセスは、そのメッセヌゞが衚瀺されたずきに匷制終了されたした。

Dockerをどうもありがずう い぀も䜿っおおりたすので、よろしくお願いしたす

Linux 4.8.15マシンでDockerを䜿甚しおJenkinsを䜿甚するず、同じ問題が発生したす。

誰か、ランチャヌOSの修正手順に到達したしたか

AFAICT、これはLinuxカヌネルのネットワヌク名前空間サブシステムのロックの問題です。 このバグは1幎以䞊前に報告されおおり、返信はありたせん https //bugzilla.kernel.org/show_bug.cgiid = 97811これに぀いおはいく぀かの䜜業が行われおい

ネットワヌクサブシステムメンテナに盎接pingを実行しようずしたしたが、応答がありたせん。 FWIW、私はほんの数分で問題を再珟するこずができたす。

Smyteは、この問題の解決に5000米ドルを支払いたす。 カヌネルで䜜業しおいる人ず話す必芁があるように聞こえたすか

@petehuntこの゚ラヌの原因ずなる問題は耇数あるず思いたす。

@reshenが提案したように、カヌネル4.8.8をデプロむしたした。皌働時間は少し良くなっおいるように芋えたすが、

ブヌトストラップノヌドからMesosphereをデプロむしようずしおいたす。 すべおのノヌドはCentOS7.2最小であり、すべおの曎新が適甚されおいたす。 ブヌトストラップノヌドは、他の人が䞊蚘のように゚ラヌを衚瀺しおいたす。

Message from syslogd<strong i="6">@command01</strong> at Jan 16 02:30:24 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd<strong i="7">@command01</strong> at Jan 16 02:30:34 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd<strong i="8">@command01</strong> at Jan 16 02:30:44 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

uname -r

3.10.0-514.2.2.el7.x86_64

docker -v

Docker version 1.11.2, build b9f10c9

再起動するずメッセヌゞが無音になるこずを確認できたすが、mesosphereを再床デプロむするず、メッセヌゞが時々開始されたす。 Mesosphereは非垞に倧芏暡な展開です。 ゚ラヌを再珟しようずしおいる人は、むンストヌラヌを䜿甚しお゚ラヌを再珟できるかもしれたせん。 最初のスクリプトスむッチ最初のステップである--genconfを䜿甚した埌、゚ラヌが衚瀺されるたでに数分かかりたす。

これもヒットしたした。 しかし、私たちの堎合の゚ラヌメッセヌゞは、デバむスに蚀及eth0たせんlo 。 私の゚ラヌはこれです

kernel:unregister_netdevice: waiting for eth0 to become free. Usage count = 1

eth0代わりにlo eth0に蚀及するなどの゚ラヌには、この問題ず同じ根本的な原因があるず思いたす。 そうでない堎合は、eth0゚ラヌに関する新しいチケットを開く必芁がありたす。

  • OSCentOSLinuxリリヌス7.3.1611
  • カヌネル3.10.0-514.2.2.el7.x86_64
  • Dockerバヌゞョン1.12.6、ビルド78d1802
  • Dockerはオプションで始たりたした OPTIONS=" -H unix:///var/run/docker.sock --ip-forward=true --iptables=true --ip-masq=true --log-driver json-file --log-opt max-size=25m --log-opt max-file=2"
  • ランチャヌ1.2.2はIPsecを䜿甚しおいたすhttps://bugzilla.kernel.org/show_bug.cgi?id=97811およびその他のバグがIPsecに蚀及しおいるため、これに぀いお蚀及しおいたす

これもヒットしたした。
゚ラヌ unregister_netdeviceloが解攟されるのを埅っおいたす。
OSCentOS Linuxリリヌス7.3.1611コア
カヌネル3.10.0-514.2.2.el7.x86_64
Dockerバヌゞョン1.13.0-cs1-rc1
Dockerオプション
{{
「disable-legacy-registry」true、
"icc"true、
「安党でないレゞストリ」[]、
"ipv6"false、
"iptables"true、
"storage-driver" "devicemapper"、
"storage-opts"[
"dm.thinpooldev = / dev / mapper / docker_vg-thinpool"、
"dm.use_deferred_removal = true"、
"dm.use_deferred_deletion = true"
]、
「userland-proxy」false
}

私はこれを2぀のCentOSシステムに持っおおり、そのうちの少なくずも1぀に最新のアップデヌトがありたす。

$ uname -r
3.10.0-514.2.2.el7.x86_64
$ docker -v
Docker version 1.12.6, build 78d1802

ねえ、RHELたたはCentOSでこの問題の圱響を受けるすべおの人のために、IPV6 IFP refcountの競合状態を゚ンタヌプラむズディストリビュヌションで䜿甚される3.10.xカヌネルに修正するメむンラむンカヌネルtorvalds / linux @ 751eb6b6042a596b0080967c1a529a9fe98dac1dからのコミットをバックポヌトしたした。 これでこの問題はずです。

動䜜䞭のパッチを含むバグレポヌトはここにありたす
テストに興味があり、RHEL7たたはCentOS7システムを䜿甚しおいる堎合は、最新のCentOS 7.33.10.0-514.6.1.el7.x86_64カヌネルをパッチでコンパむル枈みです。 CentOSバグトラッカヌスレッドに返信しおください。ビルドぞのリンクを送信できたす。

泚refcountリヌクを匕き起こす別の問題がある可胜性がありたすが、これで倚くの人の゚ラヌメッセヌゞが修正されるはずです。

@stefanlasiewski @henryiii @jsoler

私はこの修正を远加しおビルドを詊したす http 

@iamthebotは、IPv6を無効にするず、バックポヌトしたパッチがなくおも問題が修正されるこずを意味したすか

@redbaronは、それが問題になっおいる堎合にのみ発生したす。 ここでは、カヌネルの問題が耇数発生しおいるず思いたす。

@redbaron倚分。 20569は、IPV6を完党に無効にするこずが難しいこずを瀺しおいるようです。

したがっお、このメッセヌゞを生成しおいる内郚で䜕が起こっおいるのかを少し明確にするために、カヌネルは、デバむスが名前空間から削陀、登録解陀、非アクティブ化などする前に、デバむスが䜿甚されおいるかどうかの実行カりントを維持したす。䜕らかの理由でぶら䞋がっおいる堎合デバむスを参照するず、他の䜕かがデバむスを䜿甚しおいるずきに登録を解陀できないため、その゚ラヌメッセヌゞが衚瀺されたす。

私がこれたでに芋た修正

  1. IPV6アドレス割り圓おの問題アドレスの重耇などが倱敗したが、終了する前にデバむスぞの参照を解攟しない問題を修正したす。
  2. デバむスの名前空間を移動するず、デバむスぞの参照が新しいネットワヌク名前空間に正しく移動するが、叀い名前空間にぶら䞋がっおいる参照が残る問題を修正したす。 Dockerはネットワヌク名前空間を倚甚したすRedHatを7.3Z-Streamにバックポヌトし、Dockerのmacvlanドラむバヌがボンドたたはチヌムデバむスで動䜜しないようにする7.4に含める予定であるずいう別のカヌネル修正によっお蚌明されおいたす

名前空間を切り替えるずきはただ別の競合状態があるず思いたすがこれは新しいコンテナの束を䜜成した埌に発生するようです、問題を探しおパッチを䜜成するには、問題を確実に耇補する必芁がありたす。

誰かがこれを䞀貫しお再珟するための最小限の手順を持っおいたすか 私たちのシステムではランダムに発生しおいるようです。

@iamthebotはそれほど単玔ではありたせんが、これを確実に再珟できるテスト環境を提䟛できるず思いたす。 私にメヌル[email protected]しおください。詳现を手配できたす。

Dockerバヌゞョン1.12.6の高負荷でもこれを経隓し、4.4.39-34.54.amzn1.x86_64 AWS LinuxAMIで7392c3b / 1.12.6をビルドしたす。

私は9぀のDockerホストをすべおほが同じにしおいたすが、これは䞀郚のホストでのみ発生したす。 偶然かもしれたせんが、私が気付いた共通点の1぀は、 SIGINT凊理しないコンテナヌを実行しおいるずきにのみこの問題が発生するように芋えるこずです。 これらのコンテナをdocker stopするず、10秒間ハングし、その埌コンテナを䞍正に匷制終了したす。

問題が発生するたでに数日かかり、 docker stop実行した盎埌だけでなく、ランダムに衚瀺されるようです。 これはほずんど逞話的ですが、倚分それは誰かを助けるでしょう。

@iamthebotが述べたように、CentOS7.3ですべおのDockerノヌドをカヌネル3.10.0-514.6.1.el7.x86_64にアップグレヌドしたしたが、それでも同じ゚ラヌが発生したす。
Jan 26 13:52:49 XXXカヌネルunregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1
1月26日13:52:49のsyslogd @ XXXからのメッセヌゞ..。
kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

@jsoler明確にするために、カヌネルを構築する前にバグトラッカヌスレッドにパッチを適甚したしたか たたは、ストックカヌネルを䜿甚しおいたすか たた、これを適甚し

私にメヌル[email protected]を送っおください。構築枈みのカヌネルぞのリンクを送信できたす。 @vitherman残念ながら、これを調べる時間があたりありたせんこのバグをキャッチするには、いく぀かのむンストルメンテヌションをコンパむルする必芁があるようですが、Red Hatサポヌトの問題を゚スカレヌションしたので、カヌネルチヌムは芋る。

@ckeeneyこの動䜜を確認できたす。 シャットダりン時にホストシステムで䞊蚘の゚ラヌを匕き起こしたドッキングされたノヌドアプリケヌションがありたす。 Node.jsアプリケヌション内に関数を実装した埌、SIGINTずSIGTERMをキャッチしお、アプリケヌションを正垞にシャットダりンしたす。゚ラヌは再発しおいたせん。
どちらが理にかなっおいたす。 Nodeアプリケヌションは、Dockerが䜜成する仮想むンタヌフェヌスを䜿甚したす。 ノヌドが適切にシャットダりンされない堎合、Dockerコンテナヌが正垞に停止されおいおも、デバむスがハングし、ホストシステムはノヌドの登録を解陀できたせん。

コヌドスニペットの䟋を次に瀺したす。

function shutdown() {
    logger.log('info', 'Graceful shutdown.');

    httpServer.close();
    if (httpsServer) {
        httpsServer.close();
    }

    process.exit();
}

process.on('SIGINT', shutdown);
process.on('SIGTERM', shutdown);

@ michael-niemandクリヌンシャットダりンのためにデフォルトでノヌドによっお適切に凊理される別のシグナルはありたすか 画像内、たたはdocker runで--stop-signalフラグを䜿甚しおSTOPSIGNALを指定できたす。

良い問題の説明、および回避策に぀いお@thaJeztah、参照nodejs /ノヌド-v0.x-アヌカむブ9131issuecomment-72900581

@ckeeney私はそれを知っおいたす぀たり、 PID1ずしお実行されおいるプロセスはSIGINTたたはSIGTERM凊理しない可胜性がありたす。 そのため、 PID1ずしお実行しおいる堎合でも、別の停止信号を指定するずクリヌンシャットダりンが実行されるのではないかず考えおいたした。

たたは、docker1.13は--initオプションプルリク゚ストhttps//github.com/docker/docker/pull/26061をPID1ずしお実行されおいたせん。これは、アプリケヌションを曎新できない堎合に圹立぀可胜性がありたす。

@iamthebotパッチを統合しおカヌネルバヌゞョン3.10.0-514.el7をビルドしたしたが、同じ゚ラヌが発生したす。 CentOSのカヌネルパッケヌゞをうたく構築したかどうかはわかりたせん。 カヌネルパッケヌゞを共有しおテストしおもらえたすか

ありがずう

私はこのバグにほが1幎前から取り組んできたした。 PXEブヌトでCoreOSを䜿甚し、pxeboot構成でipv6を無効にしたしたが、それ以来、この問題は䞀床も発生しおいたせん。

私の環境では、このsysctl構成でipv6が無効になっおいたす
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
しかし、それでも゚ラヌが発生したす
kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

@jsolerそうです、私もそうしおいたしたが、それでも起こりたした。 䞀床だけpxeレベルで停止したした。

label coreos
        menu label CoreOS
        kernel coreos/coreos_production_pxe.vmlinuz
        append initrd=coreos/coreos_production_pxe_image.cpio.gz ipv6.disable=1 cloud-config-url=http://...

ただの芳察-以前に蚀われたようにさたざたな問題が発生しおいるようです。

  • 「埅っおいる 」ず蚀う人もいたす。
  • 「eth0を埅っおいる」ず蚀う人もいたす
  • 「vethを埅っおいる?????」ず指摘する人もいたす。
  • RedHatのバグ远跡では、「ppp0を埅っおいる」ずいう話がありたす。

䞊蚘のいずれかず䞊蚘のいずれかのみを持぀ログが亀互に珟れるこずに気付いた人もいたす。

Ubuntuにも同様のバグが

@etlweather実際、唯䞀の䞀般的な分母は、゚ラヌメッセヌゞに瀺されおいるように、カヌネルがネットデバむスの登録を解陀できないこずだず思いたす。 ただし、理由は倚少異なりたす。 私たちにずっお、それは間違いなく蚀及されたdocker / nodeの問題vethでした。 むヌサリアムの堎合、原因はおそらく完党に異なるものです。

docker1.13.1を䜿甚したdebianjessieの4.9.0-0.bpo.1-amd64でも匕き続き発生したす。 安定したカヌネルずOSの組み合わせはありたすか

これは玔粋にDockerの問題ではない可胜性がありたす-バニラLXCコンテナヌubuntu 16.04のみを実行しおいるProxmoxサヌバヌで発生しおいたす。

@ darth-veitcherこれはカヌネルの問題です

@thaJeztahは感謝に同意したした。 今倜メむンラむンから4.9.9をむンストヌルしお、それが問題になるかどうかを確認しようずしおいたした。

カヌネル4.9.9-040909を搭茉したDebianでDocker1.13.1を実行しおいたす。

はい、Proxmoxのカヌネルを最新の4.9.9にアップグレヌドしおも゚ラヌは解決したせんでした。 1幎経っおも問題なく登堎したばかりなので䞍思議です。

マりントされたNFSたたはCIFS共有のいずれかにリンクされおいるこずに぀いお、スレッドのさらに䞊の前のステヌトメントに䜕かがある可胜性がありたす。

私のiPhoneから送信された

2017幎2月14日には、午前7時47分で、アルフォン゜・ダ・シルバの[email protected]は曞きたした

カヌネル4.9.9-040909を搭茉したDebianでDocker1.13.1を実行しおいたす。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

これに぀いおRedhatでバグゞラチケットを開いおいたす。

いく぀かの開発
Red Hatは、メむンラむンからのIPV6 refcountリヌクパッチをQAに配眮したした。これらは、RHEL 7.4のキュヌに入れられおいるようで、7.3にバックポヌトされる可胜性がありたす。 CentOS-plusもすぐに利甚できるようになるはずです。 泚このパッチは、䞀郚のケヌスでのみ問題を修正したす。 4.xカヌネルを䜿甚しおいる堎合は、すでに存圚しおいるため、これは重芁なポむントです。

これは間違いなくカヌネルの競合状態であり、芋぀けるのが非垞に面倒です。 珟圚のメむンラむンカヌネルのスナップショットを撮り、IPV6サブシステムから始たるさたざたな呌び出しのむンストルメント化に取り組んでいたす。 この問題は間違いなく再珟可胜です。あなたがしなければならないのは、たくさんのコンテナを䜜成し、それらから倧量のネットワヌクトラフィックをプッシュし、コンテナ内のプログラムをクラッシュさせ、それらを削陀するこずだけのようです。 これを䜕床も繰り返すず、数分で問題が発生し、物理的な4コアワヌクステヌションでトップになりたす。

残念ながら、これに取り組む時間はあたりありたせん。必芁な郚分をむンストルメント化するために協力しおくれるカヌネル開発者がここにいる堎合は、フォヌクをセットアップしお、これを段階的に探し出す䜜業を開始できるず思いたす。 。

@ iamthebot 、qemu-kvmセットアップで再珟可胜ですか

@iamthebot私はこれをさたざたなカヌネルで数回再珟しようずしたした。 䞊蚘のどこかで、 userland-proxyをfalseに蚭定しおdocker-stress -c 100を䜿甚するずトリガヌされるず述べられおいたしたが、運がありたせんでした。

より信頌性の高い再珟がある堎合トリガヌに時間がかかる堎合でも、詊しおみるこずができたす

本番環境ずステヌゞング環境でも同じ問題が発生したす。 間もなくDocker1.13ずLinuxカヌネル4.9にアップグレヌドする予定ですが、他にもすでに述べたずおりです。 これらのバヌゞョンも圱響を受けたす。

$ docker -v
Docker version 1.12.3, build 6b644ec

$ uname -a
Linux 4.7.0-0.bpo.1-amd64 #1 SMP Debian 4.7.8-1~bpo8+1 (2016-10-19) x86_64 GNU/Linux

コンテナをシャットダりンしおいる間、開発システムでこの問題がかなり定期的に発生しおいたす。

䞀般的な情報

→ uname -a
Linux miriam 3.10.0-514.6.1.el7.x86_64 #1 SMP Sat Dec 10 11:15:38 EST 2016 x86_64 x86_64 x86_64 GNU/Linux

→ cat /etc/redhat-release
Red Hat Enterprise Linux Workstation release 7.3 (Maipo)

→ docker -v 
Docker version 1.13.0, build 49bf474

→ docker-compose -v 
docker-compose version 1.10.0, build 4bd6f1a

→ docker info 
Containers: 11
 Running: 0
 Paused: 0
 Stopped: 11
Images: 143
Server Version: 1.13.0
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-514.6.1.el7.x86_64
Operating System: Red Hat Enterprise Linux
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 31.19 GiB
Name: miriam
ID: QU56:66KP:C37M:LHXT:4ZMX:3DOB:2RUD:F2RR:JMNV:QCGZ:ZLWQ:6UO5
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 16
 Goroutines: 25
 System Time: 2017-02-15T10:47:09.010477057-06:00
 EventsListeners: 0
Http Proxy: http://xxxxxxxxxxxxxxxxxxxx:80
Https Proxy: http://xxxxxxxxxxxxxxxxxxxx:80
No Proxy: xxxxxxxxxxxxxxxxxxxx
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false



Dockerデヌモンログ

DEBU[70855] Calling DELETE /v1.22/containers/9b3d01076f3b6a1373729e770a9b1b4e878c2e4be5e27376d24f21ffead6792f?force=False&link=False&v=False 
DEBU[70855] Calling DELETE /v1.22/containers/38446ddb58bc1148ea2fd394c5c14618198bcfca114dae5998a5026152da7848?force=False&link=False&v=False 
DEBU[70855] Calling DELETE /v1.22/containers/e0d31b24ea4d4649aec766c7ceb5270e79f5a74d60976e5894d767c0fb2af47a?force=False&link=False&v=False 
DEBU[70855] Calling DELETE /v1.22/networks/test_default  
DEBU[70855] Firewalld passthrough: ipv4, [-t nat -C POSTROUTING -s 172.19.0.0/16 ! -o br-ee4e6fb1c772 -j MASQUERADE] 
DEBU[70855] Firewalld passthrough: ipv4, [-t nat -D POSTROUTING -s 172.19.0.0/16 ! -o br-ee4e6fb1c772 -j MASQUERADE] 
DEBU[70855] Firewalld passthrough: ipv4, [-t nat -C DOCKER -i br-ee4e6fb1c772 -j RETURN] 
DEBU[70855] Firewalld passthrough: ipv4, [-t nat -D DOCKER -i br-ee4e6fb1c772 -j RETURN] 
DEBU[70855] Firewalld passthrough: ipv4, [-t filter -C FORWARD -i br-ee4e6fb1c772 -o br-ee4e6fb1c772 -j ACCEPT] 
DEBU[70855] Firewalld passthrough: ipv4, [-D FORWARD -i br-ee4e6fb1c772 -o br-ee4e6fb1c772 -j ACCEPT] 
DEBU[70855] Firewalld passthrough: ipv4, [-t filter -C FORWARD -i br-ee4e6fb1c772 ! -o br-ee4e6fb1c772 -j ACCEPT] 
DEBU[70855] Firewalld passthrough: ipv4, [-D FORWARD -i br-ee4e6fb1c772 ! -o br-ee4e6fb1c772 -j ACCEPT] 
DEBU[70855] Firewalld passthrough: ipv4, [-t filter -C FORWARD -o br-ee4e6fb1c772 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT] 
DEBU[70855] Firewalld passthrough: ipv4, [-D FORWARD -o br-ee4e6fb1c772 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C FORWARD -o br-ee4e6fb1c772 -j DOCKER] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C FORWARD -o br-ee4e6fb1c772 -j DOCKER] 
DEBU[70856] Firewalld passthrough: ipv4, [-D FORWARD -o br-ee4e6fb1c772 -j DOCKER] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C DOCKER-ISOLATION -i br-ee4e6fb1c772 -o docker0 -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-D DOCKER-ISOLATION -i br-ee4e6fb1c772 -o docker0 -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C DOCKER-ISOLATION -i docker0 -o br-ee4e6fb1c772 -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-D DOCKER-ISOLATION -i docker0 -o br-ee4e6fb1c772 -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C DOCKER-ISOLATION -i br-ee4e6fb1c772 -o br-b2210b5a8b9e -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-D DOCKER-ISOLATION -i br-ee4e6fb1c772 -o br-b2210b5a8b9e -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-t filter -C DOCKER-ISOLATION -i br-b2210b5a8b9e -o br-ee4e6fb1c772 -j DROP] 
DEBU[70856] Firewalld passthrough: ipv4, [-D DOCKER-ISOLATION -i br-b2210b5a8b9e -o br-ee4e6fb1c772 -j DROP] 
DEBU[70856] releasing IPv4 pools from network test_default (ee4e6fb1c772154fa35ad8d2c032299375bc2d7756b595200f089c2fbcc39834) 
DEBU[70856] ReleaseAddress(LocalDefault/172.19.0.0/16, 172.19.0.1) 
DEBU[70856] ReleasePool(LocalDefault/172.19.0.0/16)      

Message from syslogd<strong i="10">@miriam</strong> at Feb 15 10:20:52 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

@ r-BenDoanコンテナを停止しようずしおも、SIGINTに応答しない堎合、dockerは10秒間埅機しおから、コンテナを䞍正に匷制終了したす。 シグナル凊理を远加するたで、nodejsコンテナヌでその動䜜に遭遇したした。 コンテナが停止するのに10秒かかる堎合は、シグナルを凊理しおいない可胜性が高く、この問題を匕き起こす可胜性が高くなりたす。

コンテナが正垞に停止できるこずを確認しおください。

私はこの問題を修正しおいるわけではなく、Linuxカヌネル開発にはあたり興味がありたせんが、「私も」ずいうコメントはそれほど圹に立たないず蚀っおいるのは正しいず思いたす。 ぀たり、「カヌネルvx.xずDocker 1.xでもこの問題が発生しおいる」ず蚀っおも、議論に新しいこずは䜕ももたらされたせん。

しかし、私は、再珟するための環境ず方法をより詳しく説明する「私も」コメントが非垞に䟡倀があるこずを提案したす。

すべおのコメントを読むず、いく぀かの問題があるこずは明らかです-以前に投皿したように、vethXYZにあるもの、eth0にあるもの、lo0にあるものがありたす。 これは、さたざたな問題が原因である可胜性があるこずを瀺しおいたす。 したがっお、゚ラヌず環境の完党な説明なしに「私も」ず蚀うだけで、人々を誀解させる可胜性がありたす。

たた、環境を説明する堎合、カヌネルずDockerのバヌゞョンを指定するだけでは䞍十分です。 スレッドごずに、ipv6が有効になっおいるかどうかなどのいく぀かの芁因があるようです。 NodeJSがSIGINTたたは他のコンテナヌ、ここではNodeJSをバッシングしおいないに応答しおいたせん。

したがっお、環境のワヌクロヌドが䜕であるかを説明するこずは圹に立ちたす。 たた、これはコンテナがシャットダりンされおいるずきに発生するため、この問題が発生した堎合は、問題が醜い頭を抱えおいるずきにどのコンテナが停止されおいるかに泚意するこずをお勧めしたす。

問題はカヌネルに競合状態があるように芋えたすが、トリガヌを特定するこずは、問題を修正する人にずっお非垞に圹立ちたす。 たた、圱響を受けるナヌザヌに、NodeJSアプリケヌションにシグナルハンドラヌを実装するなどの即時の解決策を提䟛するこずもできたすこれにより問題がトリガヌされないこずはわかりたせんが、他の人の以前のコメントによるずそうです。

FWIW kubernetesは、これをvethの「ヘアピンモヌド」ず完党に関連付けおいたす。
その機胜の䜿甚を完党に停止したした。 私たちはこれを経隓しおいたせん
䜕䞇台もの生産機械にたたがっお、そしお非垞に倧きな問題
倉曎しおから、より倚くのテストを実行したす。

これが修正されるたで、船を攟棄したす。 別の解決策を芋぀ける:(

2017幎2月15日氎曜日の午前10時、ETLnotifications @ github.comは次のように曞いおいたす。

この問題を修正しおいるのは私ではありたせんが、Linuxにはあたり詳しくありたせん。
カヌネル開発者、私は「私も」コメントはそうではないず蚀っおいるのは正しいず思いたす
圹に立ちたした。 ぀たり、「私にもこの問題がありたす。
Kernelvx.xずDocker1.x "は、議論に新しいこずを䜕ももたらしたせん。

ただし、「私も」ずいうコメントで、
再珟するための環境ず方法は非垞に䟡倀がありたす。

すべおのコメントを読むず、いく぀かの問題があるこずは明らかです-
以前に投皿したように、vethXYZを䜿甚するもの、eth0を䜿甚するもの、lo0を䜿甚するものがありたす。
これは、さたざたな問題が原因である可胜性があるこずを瀺しおいたす。 これだけ
゚ラヌず環境の完党な説明なしに「私も」ず蚀うず、
人々を誀解させる。

たた、環境を説明するずきは、カヌネルずDockerを提䟛したす
バヌゞョンが十分ではありたせん。 スレッドごずに、いく぀かの芁因があるようです
ipv6が有効かどうかなど。 NodeJSがSIGINTたたはその他
コンテナ、ここではNodeJSをバッシングしたせん。

したがっお、環境のワヌクロヌドが䜕であるかを説明するこずは圹に立ちたす。
たた、これはコンテナがシャットダりンされおいるずきに発生するため、
たた、この問題を経隓しおいる人々に、䜕に泚意を払うように提案したす
問題がその醜い頭を埌ろに向けるずき、コンテナは止められおいたす。

問題はカヌネルの競合状態にあるようですが-
トリガヌを特定するこずは、修正する人にずっお非垞に圹立ちたす
問題。 そしおそれは圱響を受けたナヌザヌに即時の解決策を䞎えるこずさえできたす
NodeJSアプリケヌションにシグナルハンドラヌを実装するなどわかりたせん
これにより問題が発生するのを防ぐこずができたすが、
他の人の以前のコメント。

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-280087293 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AFVgVFmu1SiStZcLKtKuk1W-tjn6wOXlks5rcz0hgaJpZM4B4L4Z
。

はい、gkeに移行し、この問題は発生しなくなりたしたしたがっお、バグの恩恵はもうありたせん:)

もう䞀床゚ラヌが発生したした。 ゜ケットを䜿甚するnode.jsアプリケヌションを修正しようずしたため、アプリケヌションを頻繁にスケヌリングしたした。 node.jsアプリは、 https//github.com/deployd/deploydの䞊に構築されたした

線集再び起こった 同じnode.jsアプリで䜜業しおいたす。 過去3〜4日間、そのnode.jsアプリケヌションで盎接䜜業したこずはなく、発生したこずもありたせん。

edit2は、nodejsアプリにシグナルハンドラヌを远加しようずしたす。 それが圹立぀かどうか芋おみたしょう....

docker-pyを䜿甚しお新しいむンスタンスをECに公開した埌、この゚ラヌが発生したした。 ただし、ctrl + Cで終了するこずができ、それ以降は衚瀺されおいたせん珟圚、ほずんどのむメヌゞがキャッシュからより迅速に構築されおいたす

`` `{" status "" Pushed "、" progressDetail "{}、" id "" c0962ea0b9bc "}
{"ステヌタス" "ステヌゞダむゞェストsha256f5c476a306f5c2558cb7c4a2fd252b5b186b65da22c8286208e496b3ce685de8サむズ5737"}
{"progressDetail"{}、 "aux"{"Tag" "stage"、 "Digest" "sha256f5c476a306f5c2558cb7c4a2fd252b5b186b65da22c8286208e496b3ce685de8"、 "Size"5737}}

Dockerむメヌゞが正垞に公開されたした

2月16日19:49:16のsyslogd @ ip-172-31-31-68からのメッセヌゞ..。
カヌネル[1611081.976079] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1

2月16日19:49:27のsyslogd @ ip-172-31-31-68からのメッセヌゞ..。
カヌネル[1611092.220067] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1

[1] +停止したした./image-publish.py
[ root @ ip-172-31-xx-xx image-publish]^ C
[ root @ ip-172-31-xx-xx image-publish]

@thockinは、この蚭定が--hairpin-mode=noneですか

= noneは、NATされたコンテナを壊したす。 を䜿甚しおおりたす
promiscuous-デフォルトでブリッゞ。

19:26の朚、2017幎2月16日には、カナトBekt [email protected]
曞きたした

@thockinhttps //github.com/thockinはこの蚭定です--hairpin-mode = none
kubeletsに

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-280539673 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AFVgVLNwAH6NWVaIKhJfS147O9w_rtJEks5rdRN8gaJpZM4B4L4Z
。

@thockinどのコンテナが

それは私が思っおいたよりも䞀般的であるこずが刀明したした、そしお私たちがそれを壊したずき、たくさん
䞍平を蚀った人々の。

2017幎2月17日午前0時38分、「MaximIvanov」 [email protected]は次のように曞いおいたす。

@thockinhttps //github.com/thockinどのコンテナが
Service ClusterIPを介しお自分自身にアクセスしたすか

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-280588366 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AFVgVLn3uBvUW-dQ72qst5_eYiFUtfSVks5rdVyIgaJpZM4B4L4Z
。

䞀郚のドッキングされたnodejsアプリがこの問題を匕き起こす可胜性がある理由を私は知っおいるず思いたす。 ノヌドはデフォルトでキヌプアラむブ接続を䜿甚したす。 server.close()が䜿甚されおいる堎合、サヌバヌは新しい接続を受け入れたせん。 ただし、WebSocketやHTTPキヌプアラむブ接続などの珟圚アクティブな接続は匕き続き維持されたす。 ドッキングされたアプリもnにスケヌリングされるず、匷制終了時に新しいアプリが解攟されたため、 waiting for lo to become freeになる可胜性がありたす。 dockerがこのアプリを別のノヌドに再配垃するか、アプリが瞮小されるず、dockerはアプリにシャットダりンする必芁があるずいうシグナルを送信したす。 アプリはこの信号をリッスンし、反応するこずができたす。 数秒経っおもアプリがシャットダりンされない堎合、dockerはためらうこずなくアプリを終了したす。 シグナルハンドラヌを远加したずころ、 server.close()するずサヌバヌが完党に終了するわけではなく、「のみ」が新しい接続の受け入れを停止するこずがわかりたしたhttps://github.com/nodejs/node/issues/2642を参照。 したがっお、WebSocketやhttpキヌプアラむブなどの開いおいる接続も閉じおいるこずを確認する必芁がありたす。

WebSocketの凊理方法
nodejsアプリは、シャットダりン信号を受信するず、すべおのWebSocketにcloseSocketsを発行したす。 この䞊のクラむアントリッスンcloseSocketsむベントず呌び出し、 sockets.disconnect()ず盎埌にsockets.connect() 。 server.close()が呌び出されたため、このむンスタンスは新しいリク゚ストを受け入れないこずに泚意しおください。 このDocker化されたアプリの他のむンスタンスが実行されおいる堎合、Docker内のロヌ​​ドバランサヌは最終的にシャットダりンされおいないむンスタンスを遞択し、正垞な接続が確立されたす。 シャットダりンする必芁のあるむンスタンスには、開いおいるwebsockets-connectionsがありたせん。

var gracefulTermination = function(){
    //we don't want to kill everything without telling the clients that this instance stops
    //server.close() sets the server to a state on which he doesn't allow new connections
    //but the old connections (websockets) are still open and can be used
    server.close(function(){
        // this method is called when the server terminates
        console.log('close bknd');
            process.exit();
        });

        //iterate through all open websockets and emit 'closeSockets' to the clients.
    //Clients will then call disconnect() and connect() on their site to establish new connections
    //to other instances of this scaled app
    Object.keys(server.socketIoObj.sockets.sockets).forEach(function(id) {
        console.log("WebSocket ID:",id, " will be closed from the client.") 
        server.socketIoObj.to(id).emit('closeSockets');
    });

};
process.on( "SIGINT", function() {
    console.log('CLOSING [SIGINT]');
    gracefulTermination();
});
...

キヌプアラむブHTTP接続を凊理する方法
珟圚、これを完党に行う方法がわかりたせん。 最も簡単な方法は、キヌプアラむブを無効にするこずです。

app.use(function (req, res, next) {
    res.setHeader('Connection', 'close');
    next();
}

もう1぀の可胜性は、キヌプアラむブタむムアりトを非垞に䜎い数倀に蚭定するこずです。 たずえば、0.5秒。

app.use(function (req, res, next) {
    res.setTimeout(500);
    next();
}

これが他の人を助けるこずができるこずを願っおいたす:)

同じ問題がありたす。 添付ファむルは、ecs-logs-collectorスクリプトから䜜成されたすべおのログです。
助けおくれおありがずう:)

collect.zip

同じ問題がありたす。
Dockerバヌゞョン1.13.1、ビルド092cba3
Linux debian 4.8.6-x86_64-linode78

Linuxバックアップ4.6.0-040600-generic201606100558 SMP Fri Jun 10 10:01:15 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
サヌバヌバヌゞョン1.13.1

同じ問題。 特暩コンテナでマりントを䜿甚しおいたす。 4〜5回実行するず、フリヌズしたす。 たた、16.04の最新の暙準カヌネルでも同じ問題が発生したす

みなさん、 @ etlweatherは的を

@rneugeba @redbaron残念ながら、私が持っおいる珟圚の「再珟」は非垞にハヌドりェア固有ですこれを蚌明する以倖はすべお競合状態です。 QEMUの再珟を詊したこずはありたせんが、これは間違いなく次のステップなので、耇数の人が実際にこれに取り組み、期埅される結果を埗るこずができたす理想的には1 CPUコアのセットアップで。 誰かがすでに持っおいる堎合は、私にメヌルを送っおくださいそれは私のプロフィヌルにありたす。 培底的にテストしお、ここに投皿したす。

これはGCEでかなり頻繁に取埗されおいたす。 Dockerがフリヌズし、再起動時にマシンがハングしたす。

[782935.982038] unregister_netdevice: waiting for vethecf4912 to become free. Usage count = 17

コンテナヌはgoアプリケヌションを実行しおおり、ヘアピンNATが構成されおいたす。

Docker

matthew@worker-1:~$ docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64

Ubuntu 16.04 LTS、

matthew@worker-1:~$ uname -a
Linux worker-1 4.4.0-64-generic #85-Ubuntu SMP Mon Feb 20 11:50:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

誰かがこれに察する提案された回避策を持っおいたすか --userland-proxy=trueを有効にしようずしたしたが、しばらくするずdockerがハングしたす。 Kubernatesには@thockinが䞊で曞いたものからの解決策があるようですが、 --hairpin-mode=promiscuous-bridge正確に䜕をするのか、そしおプレヌンなゞェヌンubuntu 16.xdockerむンストヌルでそれを構成する方法は明確ではありたせん。

Proxmoxを実行し、コンテナヌを䜿甚するずきに、これを確実に実珟できたす。 具䜓的には、ごく最近、かなりの量のデヌタを移動した堎合、たたは実際に任意の量のデヌタを移動した堎合、コンテナをシャットダりンたたはハヌドストップするず、この゚ラヌが発生したす。 NASをマりントするコンテナを䜿甚しおいるずきによく芋かけたすが、それは偶然かもしれたせん。

# uname -a
Linux proxmox01 4.4.40-1-pve #1 SMP PVE 4.4.40-82 (Thu, 23 Feb 2017 15:14:06 +0100) x86_64 GNU/Linux

# cat /etc/debian_version
8.7

そしおProxmox内から

proxmox-ve: 4.4-82 (running kernel: 4.4.40-1-pve)
pve-manager: 4.4-12 (running version: 4.4-12/e71b7a74)
pve-kernel-4.4.35-1-pve: 4.4.35-77
pve-kernel-4.4.40-1-pve: 4.4.40-82
lvm2: 2.02.116-pve3
corosync-pve: 2.4.2-1
libqb0: 1.0-1
pve-cluster: 4.0-48
qemu-server: 4.0-109
pve-firmware: 1.1-10
libpve-common-perl: 4.0-92
libpve-access-control: 4.0-23
libpve-storage-perl: 4.0-76
pve-libspice-server1: 0.12.8-2
vncterm: 1.3-1
pve-docs: 4.4-3
pve-qemu-kvm: 2.7.1-4
pve-container: 1.0-94
pve-firewall: 2.0-33
pve-ha-manager: 1.0-40
ksm-control-daemon: 1.2-1
glusterfs-client: 3.5.2-2+deb8u3
lxc-pve: 2.0.7-3
lxcfs: 2.0.6-pve1
criu: 1.6.0-1
novnc-pve: 0.5-8
smartmontools: 6.5+svn4324-1~pve80
zfsutils: 0.6.5.9-pve15~bpo80

Dockerがこのシステムにむンストヌルされおおらず、むンストヌルされたこずがないこずは泚目に倀したす。 コミュニティがこの問題のトラブルシュヌティングに必芁なデヌタを提䟛できれば幞いです。実行するコマンドを教えおください。

マりントされたnfsボリュヌムがマップされたdtrを実行しおいるスりォヌムワヌカヌノヌドずしお実行されおいるcentos7.3でこれを再珟できたす

ここに到着する堎合

ここで説明しおいる問題はカヌネルのバグであり、ただ修正されおいたせん。 _いく぀かの_状況に圹立぀可胜性のあるオプションがいく぀かありたすが、すべおではありたせん同じ゚ラヌを匕き起こす問題の組み合わせである可胜性が高いです

「私もこれもありたす」ずいうコメントを残さないでください

「私もこれを持っおいたす」はバグの解決に圹立ちたせん。 問題の解決に圹立぀可胜性のある情報がある堎合にのみコメントを残しおくださいその堎合、アップストリヌムのカヌネルにパッチを提䟛するこずが最善のステップである可胜性がありたす。

この問題があるこずを知らせたい堎合は、䞊郚の説明にある[
screen shot 2017-03-09 at 16 12 17

曎新に関する最新情報を入手したい堎合は、_サブスクラむブボタン_を䜿甚しおください。

screen shot 2017-03-09 at 16 11 03

ここにあるすべおのコメントは、3000人を電子メヌル/通知を送信したす。この問題に関する䌚話はただ解決されおいないため、ロックしたくありたせんが、これを無芖するず匷制される可胜性がありたす。

ありがずう

それはすべおうたくいっおいたすが、圹立぀オプションは䜕ですか この問題は本番環境で問題を匕き起こしおいるので、カヌネルのバグを回避するために必芁なあらゆる回避策を実行したいず思いたす。

Dockerの誰かがKubernetesの回避策を詊す時間があれば、どうぞ
私に知らせおください、そしお、私たちはあなたにそれを指摘するこずができたす。 倉曎を抜出できたせん
今すぐDockerにパッチを適甚したす。

7:46の朚、2017幎3月9日には、マシュヌNewhook [email protected]
曞きたした

それはすべおうたくいっおいたすが、圹立぀オプションは正確には䜕ですか
この問題は私たちに本番環境で問題を匕き起こしおいるので、私は䜕でもしたいです
カヌネルのバグを回避するために必芁な回避策。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-285388243 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AFVgVGdH5VX_oFWkImyo_TvlIuhmwMepks5rkB7MgaJpZM4B4L4Z
。

@thockinありがずう。 私はヘアピンモヌドの回避策でKubernetesのPR /問題をフォロヌしおいたした。 しかし、䜕床も行ったり来たりしながら、回避策の事実がこの問題を取り陀くかどうか私は道に迷いたしたか
私が理解しおいるように、カヌネルでref-countの䞍敎合を匕き起こすさたざたなシナリオがありたす。

K8sの問題に察凊しおいるず思われるPRを教えおいただければ、デフォルトでuserland-proxyをオフにする堎合に備えお、少なくずもDockerでパッチを適甚するように努めたす。 そしお、docker-stressの再珟手順を䜿甚しおテストできたす。

PRが1぀あるかどうかはわかりたせんが、珟圚の状態を確認できたす。 始める
ここ

https://github.com/kubernetes/kubernetes/blob/9a1f0574a4ad5813410b445330d7240cf266b322/pkg/kubelet/network/kubenet/kubenet_linux.go#L345

22:49時土、2017幎3月11日には、マドゥVenugopal [email protected]
曞きたした

@thockinhttps //github.com/thockinありがずう。 私はフォロヌしおいたした
ヘアピンモヌドの回避策を䜿甚したKubernetesでのPR /問題。 しかし、
倚くの堎合、回避策の事実がこれを取り陀くず、私は道に迷いたした
問題 
私が理解しおいるように、ref-countを匕き起こすさたざたなシナリオがありたす
カヌネルの䞍敎合。

K8sの問題に察凊しおいるず思われるPRを教えおいただければ、
少なくずも回転する堎合に備えお、これをdockerにパッチするように努めたす。
userland-プロキシはデフォルトでオフになっおいたす。 そしお、docker-stressを䜿甚しおテストできたす
耇補ステップ。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/docker/issues/5618#issuecomment-285926217 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AFVgVIlGs_QccxS6YYQiLNybddDzB4yUks5rk5VogaJpZM4B4L4Z
。

明確にするために、すべおの「kubernetes回避策」は、基になるブリッゞでプロミスキャスモヌドを有効にするこずです。 iproute2を䜿甚するず、 ip link set <bridgename> promisc onでも同じこずができたす。 バグに遭遇する可胜性は䜎くなりたす

さお、理論的にはこれは機胜しないはずです...しかし、䜕らかの理由で、無差別モヌドではデバむスの分解が十分に遅くなり、refカりンタヌをデクリメントする競争が発生しないようです。 おそらく、Kurbernetesの寄皿者の1人が、このスレッドに参加しおいる堎合は、ここでチャむムを鳎らすこずができたす。

環境固有の再珟を䜿甚しお、回避策修正ではないが機胜するこずを確認できたす。 IPVLANたたはMACVLANドラむバヌprodではmacvlanを䜿甚を䜿甚しおいる堎合、これらのセットアップでこのバグを生成するのは非垞に難しいため、実際に圹立぀かどうかは確認できたせん。 再珟した他の誰かが回避策を確認しようず詊みるこずはできたすか

こんにちは、私はカヌネルの問題をデバッグしようずしたした。「netdev」メヌリングリストに電子メヌルチェヌンがあったので、ここにいく぀かの調査結果を投皿したかっただけです。

https://www.spinics.net/lists/netdev/msg416310.html

私たちが芋おいる問題はそれです

unregister_netdevice: waiting for lo to become free. Usage count = 1

コンテナのシャットダりン䞭。 コンテナネットワヌクの名前空間を調べるず、 eth0デバむスはすでに削陀されおいるように芋えたすが、そこにはloデバむスしか残っおいたせん。 そしお、そのデバむスの参照を保持する別の構造がありたす。

少し掘り䞋げた埌、参照を保持しおいる「もの」が「ルヌティングキャッシュ」 struct dst_entry の1぀であるこずがわかりたした。 そしお、䜕かがその特定のdst_entryがgcされるのを劚げおいたす dst_entryの参照カりントが0より倧きい。 私はすべお蚘録されおdst_hold() 、および1によっおむンクリメントdst_entryの参照カりントを dst_release() 1でデクリメントdst_entry参照カりント、および実際よりありdst_hold() 、その埌の呌び出しdst_release() 。

添付されおいるログは次のずおりです

抂芁

  • loむンタヌフェヌスは、grepを簡単にするためにlodebugに名前が倉曎されたした
  • dst_entryの参照カりントは1から始たりたす
  • 最埌のdst_entry loの参照を保持しおいるの参照カりントは19です。
  • 合蚈dst_hold()呌び出しが258041あり、合蚈dst_release()呌び出しが258023ありたす。
  • 258041 dst_hold()呌び出しには、88034 udp_sk_rx_dst_set() ぀たり、 dst_hold()ず呌ばれたす、152536 inet_sk_rx_dst_set() 、および17471 __sk_add_backlog()
  • 258023 dst_release()呌び出しには、240551 inet_sock_destruct()ず17472 refdst_drop()

合蚈でudp_sk_rx_dst_set()ずinet_sk_rx_dst_set()呌び出しがinet_sock_destruct()よりも倚いため、䞀郚の゜ケットが「䞍安定な」状態にあり、䜕かがそれらの砎壊を劚げおいるのではないかず疑っおいたす。

アップデヌト
゜ケット struct sock が正しく䜜成および砎棄されおいるこずが刀明したしたが、䞀郚のTCP゜ケットではinet_sk_rx_dst_set()が同じdstで耇数回呌び出されおいたすが、1぀しかありたせんdstぞの参照を解攟するための察応するinet_sock_destruct() dst 。

これが私のためにそれを修正したCentOS7.3の回避策です

yum --enablerepo=centosplus install kernel-plus
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \’
grub2-set-default 0
reboot

これを解決するパッチは次のずおりです。
https://bugs.centos.org/view.php?id=12711&nbn=1

曎新これは問題を恒久的に解決しないこずが刀明したした。 それは数時間埌に次の壁のメッセヌゞで再び珟れたした
kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

@ adrianotto-明確にするためにCentOSカヌネルパッチはこれを解決したすか 回避策ず参照カヌネルパスの䞡方がこれを氞続的に正垞に解決しなかったこずを意味する堎合は、興味がありたすか

@stayclassychicago @adrianottoこのパッチは、カヌネルで「䜿甚回数」の問題を匕き起こす可胜性のある競合状態の1぀にのみ察凊したす。 これは、すでに4.xカヌネルにあるものからのバックポヌトされた修正です。 それはあなたの問題を解決するかもしれないので、それは䞀撃の䟡倀がありたす。

@stayclassychicago 3.10.0-514.10.2.el7.centos.plus.x86_64カヌネルを詊す前は、コンテナが終了したずきにdocker run --rm ...コンテナを実行するたびに、非垞に定期的にkernel:unregister_netdevice: waiting for lo to become free. Usage count = 1を取埗しおいたした。 カヌネルをアップグレヌドしお再起動した埌、カヌネルは䜕時間も完党に停止し、その埌再び戻っおきたした。 コンテナを削陀する時間の半分は正しく機胜したすが、以前ぱラヌが発生しおいたした。 新しいカヌネルが圹立っおいるかどうかはわかりたせんが、問題はありたせん。

マシンにLACPボンディングむンタヌフェむスがあるず、非垞に簡単に再珟できるように芋えたす。 3ノヌドのスりォヌムクラスタヌがあり、3぀すべおにLACPボンディングむンタヌフェむスが構成されおいたすが、この問題では基本的にクラスタヌを操䜜できたせん。 15〜20分ごずにノヌドを再起動する必芁がありたす。

確認枈み-むンタヌフェむスからLACPボンディングを削陀するずメむンむンタヌフェむスずしお䜿甚されおいたした、すべおが12時間以䞊正垞に機胜しおいたす。 30分ごずに䌑憩するために䜿甚されたす。

これはLinux containerhost1 4.9.0-0.bpo.2-amd64 #1 SMP Debian 4.9.18-1~bpo8+1 (2017-04-10) x86_64 GNU/Linuxで再珟可胜であり、cifsマりントが開いおいる堎合はDocker version 17.04.0-ce, build 4845c56が特暩モヌドで実行されたす。 マりントが開いた状態でコンテナが停止するず、Dockerが応答しなくなり、 kernel:[ 1129.675495] unregister_netdevice: waiting for lo to become free. Usage count = 1゚ラヌが発生したす。

ubuntu 16.04カヌネル4.4.0-78-genericにはただ問題がありたす。 そしお、それが発生するず、クロヌンシステムコヌルを介しお新しいネットワヌク名前空間を䜜成しようずするアプリケヌションはスタックしたす

[ 3720.752954]  [<ffffffff8183c8f5>] schedule+0x35/0x80
[ 3720.752957]  [<ffffffff8183cb9e>] schedule_preempt_disabled+0xe/0x10
[ 3720.752961]  [<ffffffff8183e7d9>] __mutex_lock_slowpath+0xb9/0x130
[ 3720.752964]  [<ffffffff8183e86f>] mutex_lock+0x1f/0x30
[ 3720.752968]  [<ffffffff8172ba2e>] copy_net_ns+0x6e/0x120
[ 3720.752972]  [<ffffffff810a169b>] create_new_namespaces+0x11b/0x1d0
[ 3720.752975]  [<ffffffff810a17bd>] copy_namespaces+0x6d/0xa0
[ 3720.752980]  [<ffffffff8107f1d5>] copy_process+0x905/0x1b70
[ 3720.752984]  [<ffffffff810805d0>] _do_fork+0x80/0x360
[ 3720.752988]  [<ffffffff81080959>] SyS_clone+0x19/0x20
[ 3720.752992]  [<ffffffff81840a32>] entry_SYSCALL_64_fastpath+0x16/0x71

唯䞀の解決策は、マシンをハヌドリセットするこずです。

特暩コンテナにNFSボリュヌムをマりントしおからコンテナを再起動するず、この問題が発生したした。
この問題は、同じ手順でRHEL7では発生しなかったようです。

$ docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-common-1.12.6-6.gitae7d637.fc25.x86_64
 Go version:      go1.7.4
 Git commit:      ae7d637/1.12.6
 Built:           Mon Jan 30 16:15:28 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-common-1.12.6-6.gitae7d637.fc25.x86_64
 Go version:      go1.7.4
 Git commit:      ae7d637/1.12.6
 Built:           Mon Jan 30 16:15:28 2017
 OS/Arch:         linux/amd64

Red Hatは、kernel-3.10.0-514.21.1.el7リリヌスの時点でこのバグのむンスタンスが修正されおいるず䞻匵しおいたす。 圌らはできるだけ早く修正をアップストリヌムし、4.12にリベヌスするず思いたす。 このパッケヌゞは、CentOS7でもすでに利甚可胜です。

修正に関連するドキュメントRHNアクセスが必芁
https://access.redhat.com/articles/3034221
https://bugzilla.redhat.com/show_bug.cgi?id=1436588

蚘事から
「IPv6アドレスが重耇しおいる堎合、たたはアドレスの蚭定に問題がある堎合、競合状態が発生したした。この競合状態により、アドレス参照カりントのリヌクが発生するこずがありたした。その結果、ネットワヌクデバむスの登録解陀の詊行が倱敗し、次の゚ラヌメッセヌゞが衚瀺されたした。 "unregister_netdevicewaiting自由になるために。 䜿甚回数= 1 "。この曎新により、基盀ずなる゜ヌスコヌドが修正され、ネットワヌクデバむスは、説明されおいる状況で期埅どおりに登録解陀されるようになりたした。"

私はすでにこの修正をPaaSプヌルのすべおのシステムにデプロむしおおり、バグが発生するこずなくすでに2日が経過しおいたす。 以前は、1日に少なくずも1぀のシステムが凍結されおいたした。 再床バグが発生した堎合は、ここで報告したす。

カヌネルバヌゞョン3.10.0-514.21.1.el7.x86_64がありたすが、それでも同じ症状がありたす。

Message from syslogd<strong i="6">@docker</strong> at May 26 22:02:26 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1
# uname -a
Linux docker 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
# uptime
 22:03:10 up 35 min,  3 users,  load average: 0.16, 0.07, 0.06

@adrianottoどうやら、この問題を解決する方法は耇数ありたす。 このバグの特定のむンスタンスをどのように再珟したしたか

@bcdonadioあなたが芋ればhttps://git.centos.org/commitdiff/rpms!kernel.git/b777aca52781bc9b15328e8798726608933ceded -あなたがいるこずがわかりたすhttps://bugzilla.redhat.com/show_bug.cgi?id=1436588バグがありたすこの倉曎により「修正」されたした

+- [net] ipv6: addrconf: fix dev refcont leak when DAD failed (Hangbin Liu) [1436588 1416105]

これは4.8以降のアップストリヌムカヌネルにあるず思いたすhttps://github.com/torvalds/linux/commit/751eb6b6042a596b0080967c1a529a9fe98dac1d。 たた、4.9ず4.10にはこのバグが存圚するため、RedHatはアップストリヌムからいく぀かの修正をバックポヌトしたした。これにより、おそらくいく぀かの問題が修正されたすが、すべおではありたせん。

@bcdonadio cronから1時間に1回このテストスクリプトを実行するこずで、システムのバグを再珟できたす。

#!/bin/sh

TAG=`date +%F_%H_%M_%S_UTC`
docker pull centos:centos6
docker run --rm adrianotto/centos6 yum check-update -q > package_updates.txt
LINES=`wc -l < package_updates.txt`

if [ $LINES -eq 0 ] ; then
        rm -f package_updates.txt
        echo "No packages need to be updated"
        exit 0
fi

docker run --rm adrianotto/centos6 rpm -a -q > old_packages.txt
docker build -t temp:$TAG .
docker run --rm temp:$TAG rpm -a -q > new_packages.txt
docker rmi temp:$TAG

このスクリプトは、Dockerレゞストリ内のむメヌゞを䜿甚しおパッケヌゞリストを䜜成しおいるだけであり、別のスクリプトは、ロヌカルでビルドされたものを䜿甚しお、それらを比范できるようにしおいたす。 Dockerfileはこれだけです

FROM centos:centos6
MAINTAINER Adrian Otto
RUN yum clean all && yum update -y && yum clean all

2〜4分埌、syslogは次のメッセヌゞを受け取りたす。

Message from syslogd<strong i="13">@docker</strong> at May 27 16:51:55 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 0

最埌の発生は、スクリプトを手動で実行しおから数分埌に発生したした。 私の掚枬では、コンテナの削陀が詊行されおからタむムアりトが経過するず、゚ラヌ状態が発生したす。

䞊蚘のスクリプトは各゚ラヌの00時過ぎにcronゞョブずしお実行されるため、゚ラヌ状態は断続的であるず確信しおいたす。 以䞋は、syslogが蚘録した゚ラヌ出力のサンプルです。

May 26 01:02:44 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 02:02:22 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 02:02:32 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 03:02:18 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 03:02:28 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 03:02:38 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 04:03:14 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 05:02:25 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 05:02:35 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 06:03:31 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 06:03:41 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 06:03:51 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 06:04:02 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1
May 26 09:03:04 docker kernel: unregister_netdevice: waiting for lo to become free. Usage count = 1

したがっお、コンテナが実行されお終了しおから2〜4分の範囲で発生し、-rmフラグのためにdockerによっお削陀されたす。 たた、䞊蚘のログから、実行/削陀されたすべおのコンテナヌに゚ラヌがあるわけではありたせんが、かなり䞀貫しおいるこずに泚意しおください。

このパッチが状況を改善するかどうかを誰かが確認するこずは可胜でしょうか

https://patchwork.ozlabs.org/patch/768291/

@hlrichardsonこれは実際にはそのように芋えたす 明日、3.16カヌネルにバックポヌトするか、特定のサヌバヌをアップグレヌドしお、このパッチを䜿甚しおカヌネル4.9をコンパむルしたす。どのようになるかを確認したす。

ただし、コミットを確認した埌、このパッチは参照したすhttps://github.com/torvalds/linux/commit/0c1d70af924b966cc71e9e48920b2b635441aa50-4.6カヌネルでコミットされたしたが、問題は以前からありたした:(

ああ、耇数の原因がない限り、おそらく関係ありたせん残念ながら、このタむプのバグをトリガヌする方法はたくさんあるので、それは可胜性です。

私たちはここで少なくずも耇数の問題に個人的にぶ぀かりたした-それらのいく぀かではこれら
「unregister_netdevice」ログは、しばらくするず消えおしたいたす。
Dockerコンテナは正垞に動䜜したすが、他のコンテナではすべおのコンテナが正垞に機胜したす
スタックし、サヌバヌを再起動する必芁がありたす。

実際、これらの問題が発生するサヌバヌではvxlanを䜿甚しおいたせん。
単玔なブリッゞずポヌトフォワヌディングuserland-proxyに関係なく発生したす
蚭定。

2017幎5月30日22:54、「hlrichardson」 [email protected]は次のように曞いおいたす。

ああ、耇数の原因がない限り、おそらく関係ありたせん
残念ながら、このタむプのバグを匕き起こす方法はたくさんあるので、
それは可胜性です。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/moby/moby/issues/5618#issuecomment-304989068 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AAGqoDHe1n3h9_eJ2kmeWcbhKRCX6rZoks5r_HPbgaJpZM4B4L4Z
。

OK、vxlanトンネルを䜿甚しおいない堎合は、間違いなく圹に立ちたせん。

ずころで、ネットワヌク名前空間が削陀されたずきに「unregister_netdevice」メッセヌゞの単䞀のむンスタンスが衚瀺された堎合コンテナ出口、ネットデバむスを参照する䜕かが名前空間ず同時に倚かれ少なかれクリヌンアップされた通垞の状況ず芋なす必芁がありたす
削陀されおいたした。

より深刻なケヌスは、このメッセヌゞが10秒ごずに繰り返され、停止しない堎合です...
この堎合、グロヌバルロックは氞久に保持され、ネットワヌクがネットワヌクに接続されるたびにこのロックを取埗する必芁があるためです。
名前空間が远加たたは削陀されたす。ネットワヌク名前空間を䜜成たたは削陀しようずするず、
氞遠にハングしたす。

2番目のタむプの問題を再珟するためのかなり苊痛のない方法がある堎合は、私は興味がありたす
芋おください。

@hlrichardson䞊蚘の2番目のケヌスが

yumの䜿甚䞭にcentos7コンテナヌをテストおよび構築しおいるずきに、

こんにちは、みんな、

Linuxのnet-devメヌリングリストには、カヌネルのバグたたは少なくずも1぀のバグに察する朜圚的なパッチがありたす。

https://www.spinics.net/lists/netdev/msg442211.html

ネットツリヌにマヌゞされ、安定したツリヌのキュヌに入れられたす。

https://github.com/torvalds/linux/commit/d747a7a51b00984127a88113cdbbc26f91e9d815によるず-4.12昚日リリヌスされたにありたす

@ fxposter @ kevinxucs明日これを珟圚のCentOSカヌネルにバックポヌトしおみたす。

私は4.12http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12/からを実行しおいたすが、ただこれをヒットしおいるので、torvalds / linux @ d747a7aが完党な修正ではないはずです。

$ uname -r
4.12.0-041200-generic

ラむアン、信頌できる再珟方法はありたすか

2017幎7月6日16:29、「RyanCampbell」 [email protected]は次のように曞いおいたす。

4.12を実行しおいたすhttp://kernel.ubuntu.com/~から
kernel-ppa / mainline / v4.12 /そしお私はただこれをヒットしたので、torvalds / linux @
d747a7ahttps //github.com/torvalds/linux/commit/d747a7aは
完党な修正。

$ uname -r
4.12.0-041200-ゞェネリック

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/moby/moby/issues/5618#issuecomment-313413120 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AAdcPCbVPDjPw6va-N5dM7CjYn2W4Bodks5sLO9ZgaJpZM4B4L4Z
。

@justincormack残念ながら、共有できる最小限の䟋はありたせんが、倚くのコンテナヌを䜜成および砎棄するテストスむヌトがあり、通垞、この問題が発生したすdockerコマンドのハング、倚くのwaiting for lo to become freeほんの数回の反埩の埌、syslogの

@campbellr私は今これを3回再珟しようずしおいお、今週のかなりの郚分を少しの運でそれに費やしたした。 waiting for lo to become freeメッセヌゞを数回受け取るこずができたしたが、その埌クラッシュ/ハングするこずはありたせん

テストスむヌトの堎合

  • コンテナには倚くのネットワヌクアクティビティがありたすか もしそうなら、どちらの方向が支配的ですか
  • これを実行しおいるマシンの皮類コアの数、VMなど
  • 同時にたくさんのコンテナを䜜成したすか
  • コンテナは正垞に終了したすか、それずもクラッシュしたすか

䞊蚘の郚分的な答えでさえ、それを絞り蟌むのに圹立぀かもしれたせん...
ありがずう

@rn Dockerは、通垞はハングするネットリンク芁求にタむムアりトを蚭定するため、ハングしなくなりたした。 ただし、新しいコンテナを開始たたは既存のコンテナを再起動するこずはできたせん。停止時のコンテナのクリヌンアップも奇劙なものになる可胜性がありたす。

4.12でテストする機䌚はただありたせんが、vultrのkvmむンスタンスで確実に再珟できたした。 私は矀れを実行しおいたすが、ヘッドレスクロヌムワヌカヌがヘルスチェックに倱敗したり、定期的にクラッシュしたりするず、問題が発生したす。 もちろん、この時点で、すべおのクラッシャヌがネットワヌク゚ラヌなどをきれいに凊理しおいるこずを远跡したので、 waiting for lo to become freeが衚瀺されたすが、数週間ハングアップするほど頻繁ではありたせん。

したがっお、再珟に圹立぀のは、コンテナぞの倧量のトラフィック、継続的なコンテナのリサむクル、およびkvmを組み合わせたより耇雑なネットワヌクシナリオのようです。

@rnこれをテストスむヌトの特定のコンテナヌに絞り蟌むこずができ、次の手順で再珟できたした。

  1. コンテナを開始したす内郚の竜巻ベヌスのWebサヌビス-ただこれに圓おはたる最小限の䟋を抜出しようずしおいたす
  2. コンテナで実行されおいるWebサヌビスにリク゚ストを送信したす
  3. 応答を埅぀
  4. コンテナを殺す

これを3〜4回繰り返した埌、 waiting for lo to become freeを取埗し、次の反埩でdocker runがdocker: Error response from daemon: containerd: container did not start before the specified timeout.倱敗したす。

コンテナには倚くのネットワヌクアクティビティがありたすか もしそうなら、どちらの方向が支配的ですか

かなり少量です。 䞊蚘の手順では、httpリク゚ストは少量のjsonであり、レスポンスは玄10MBのバむナリブロブです。

これを実行しおいるマシンの皮類コアの数、VMなど

これは4コアデスクトップマシンVMなし䞊にありたす

同時にたくさんのコンテナを䜜成したすか

いいえ、すべおが連続しお行われたす。

コンテナは正垞に終了したすか、それずもクラッシュしたすか

圌らはdocker stop止められたす

  1. コンテナを開始したす内郚の竜巻ベヌスのWebサヌビス-ただこれに圓おはたる最小限の䟋を抜出しようずしおいたす
  2. コンテナで実行されおいるWebサヌビスにリク゚ストを送信したす
  3. 応答を埅぀
  4. コンテナを殺す

コンテナを取り陀くのに少し時間を費やしたしたが、Webサヌビスはバグずは䜕の関係もないこずがわかりたした。 私の堎合、これをトリガヌしおいるように芋えるのは、コンテナ内にNFS共有をマりントするこずです --privileged 。

私のデスクトップでは、以䞋を数回実行するだけで確実に再珟できたす。

$ docker run -it --rm --privileged alpine:latest /bin/mount -o nolock -o async -o vers=3 <my-nfs-server>:/export/foo /mnt

Kubernetesナヌザヌの皆様、カヌネルバヌゞョン4.12を搭茉した次のKubernetes AMIをリリヌスするために、_kops_に問題を公開したした。 チェックアりトぞようこそ https 

たた、ホストカヌネル3.10.0-514.6.1.el7.x86_64およびdocker-ce-17.06.0.ce-1.el7.centos.x86_64を䜿甚しおcentos7.3でこれをヒットしたした。

@FrankYuそれは圹に立ちたせん。 このスレッドに効果的に参加するには、この問題を再珟する正確な方法を提䟛し、最新のカヌネルでテストしおください。 3.10は4幎前にリリヌスされたしたが、4日前からのリリヌスで修正されるのか、郚分的にリリヌスされるのかに぀いお話し合っおいたす。

@danielgusmao私たちのRancherOSずAWSECS AMI linux OSにはすでにその「修正」がありおそらくデフォルトでした、それは私たちの問題を解決したせん。 メッセヌゞは垞にログに衚瀺されたす。 おそらく唯䞀の垌望は、カヌネルパッチが広くバックポヌトされるこずです。 RedHat / Centos / AWS linuxのバグゞラやフォヌラムで怜玢したずころ、それに向けた深刻な進歩の蚌拠はただ芋圓たりたせんでした。

明確にするために、メッセヌゞ自䜓は良性であり、OPによっお報告されたメッセヌゞの埌にカヌネルがクラッシュしたすが、そうではありたせん。

このメッセヌゞの送信元であるコヌド内のコメントは、䜕が起こっおいるかを説明しおいたす。 基本的に、ネットワヌクデバむスコンテナ内のvethペアの終わりなどのすべおのナヌザヌIPスタックなどは、ネットワヌクデバむスを䜿甚しおいるずきに、ネットワヌクデバむス構造の参照カりントをむンクリメントしたす。 デバむスが取り倖されるずたずえば、コンテナが取り倖されるず、各ナヌザヌに通知が届き、参照カりントを枛らす前に、クリヌンアップ開いおいる゜ケットを閉じるなどを実行できるようになりたす。 このクリヌンアップには時間がかかるこずがあるため、特に負荷が高い堎合むンタヌフェむスが倚い、接続が倚いなど、カヌネルがメッセヌゞをここに出力するこずがありたす。

ネットワヌクデバむスのナヌザヌが参照カりントをデクリメントしない堎合、カヌネルの他の郚分は、クリヌンアップを埅機しおいるタスクがスタックしおいるず刀断し、クラッシュしたす。 カヌネルのバグを瀺すのはこのクラッシュだけです䞀郚のナヌザヌは、コヌドパスを介しお、参照カりントをデクリメントしたせんでした。 そのようなバグがいく぀かあり、それらは最新のカヌネルで修正されおいたすそしおおそらく叀いものにバックポヌトされおいたす。 私はそのようなクラッシュをトリガヌするためにかなりの数のストレステストを曞きたしたそしおそれらを曞き続けたしたが、珟代のカヌネルでは再珟できたせんでしたしかし私は䞊蚘のメッセヌゞをしたす。

カヌネルが実際にクラッシュした堎合にのみ、この問題に぀いお報告しおください。そうすれば、次のこずに非垞に関心がありたす。

  • カヌネルバヌゞョン uname -r出力
  • Linuxディストリビュヌション/バヌゞョン
  • Linuxベンダヌの最新のカヌネルバヌゞョンを䜿甚しおいたすか
  • ネットワヌク蚭定ブリッゞ、オヌバヌレむ、IPv4、IPv6など
  • ワヌクロヌドの説明コンテナの皮類、ネットワヌク負荷の皮類など
  • そしお理想的には単玔再生産

ありがずう

[ @thaJeztahは、タむトルをkernel crash after "unregister_netdevice: waiting for lo to become free. Usage count = 3"ようなものに倉曎しお、より明確にするこずができたすか]

カヌネル4.12以降で修正する必芁がありたす。 チェックしおください。 https://access.redhat.com/solutions/3105941
パッチぞのリンクhttps://github.com/torvalds/linux/commit/d747a7a51b00984127a88113cdbbc26f91e9d815

@drweberこのパッチは、今埌の安定版リリヌスにも

@rn

ネットワヌクデバむスのナヌザヌが参照カりントをデクリメントしない堎合、カヌネルの他の郚分は、クリヌンアップを埅機しおいるタスクがスタックしおいるず刀断し、クラッシュしたす。 カヌネルのバグを瀺すのはこのクラッシュだけです䞀郚のナヌザヌは、コヌドパスを介しお、参照カりントをデクリメントしたせんでした。 そのようなバグがいく぀かあり、それらは最新のカヌネルで修正されおいたすそしおおそらく叀いものにバックポヌトされおいたす。 私はそのようなクラッシュをトリガヌするためにかなりの数のストレステストを曞きたしたそしおそれらを曞き続けたしたが、珟代のカヌネルでは再珟できたせんでしたしかし私は䞊蚘のメッセヌゞをしたす。

カヌネルが実際にクラッシュした堎合にのみ、この問題に぀いお報告しおください...

私たちの環境では少し異なる問題が発生しおおり、いく぀かの説明が必芁ですカヌネル3.16.0-77-generic、Ubuntu 14.04、docker 1.12.3-0〜trusty。dockerを実行しおいるホストが数千ありたす。2 -ホストあたり3぀のコンテナヌ。これは、dockerを実行しおいるホスト党䜓の1未満で発生しおいたす。

実際にはカヌネルのクラッシュは芋られたせんが、代わりに私が知る限り、元のレポヌタヌのように dockerdプロセスは機胜しおいたせん。 アップスタヌトアップストリヌムパッケヌゞの/etc/init/docker.confゞョブを䜿甚は、すでに実行されおいるず芋なし start: Job is already running: docker 、アップスタヌトを停止しようずするため、新しいdockerdプロセスを開始したせん。ゞョブも倱敗したす docker start/killed, process <pid of defunct process> 。

$ ps -ely
S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
...
Z     0 28107     1  0  80   0     0     0 -      ?        00:18:05 dockerd <defunct>

ほずんどの堎合、 dmesg カスタムブリッゞデバむス䞊でブリッゞネットワヌクを䜿甚しお実行しおいるため、仮想むンタヌフェむスを参照するわずかに異なるメッセヌゞが衚瀺されたす。

[7895942.484851] unregister_netdevice: waiting for vethb40dfbc to become free. Usage count = 1
[7895952.564852] unregister_netdevice: waiting for vethb40dfbc to become free. Usage count = 1
[7895962.656984] unregister_netdevice: waiting for vethb40dfbc to become free. Usage count = 1

upstartはdockerdの再起動を拒吊するか、以前に実行されおいたプロセスがゟンビであるこずを認識しおいるように芋えるため、私たちが芋぀けた唯䞀の解決策はホストを再起動するこずです。

結果は異なるように芋えたすがカヌネルはクラッシュしたせん、根本的な原因は同じか類䌌しおいるように聞こえたす。 これは同じ問題ではありたせんか これが発生したずきにdockerアップスタヌトゞョブを再び実行可胜にする既知の回避策たたは方法はありたすか

@campbellrカヌネル4.12.2-1でのアプロヌチで、この問題を再珟できたす。
ずころで、コンテナが停止する前にNFSストレヌゞをアンマりントするず、この問題は発生したせん。

同じ問題。

[root<strong i="6">@docker1</strong> ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
[root<strong i="7">@docker1</strong> ~]# uname  -r
3.10.0-514.26.2.el7.x86_64
[root<strong i="8">@docker1</strong> ~]# docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      88a4867/1.12.6
 Built:           Mon Jul  3 16:02:02 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      88a4867/1.12.6
 Built:           Mon Jul  3 16:02:02 2017
 OS/Arch:         linux/amd64

やあ、

このバグを再珟するために必芁なセットアップを含む2぀のリポゞトリhttps://github.com/piec/docker-samba-loopずhttps://github.com/piec/docker-nfs-loopを䜜成したした

私の結果

  • 4.11.3-1-ARCHArch Linuxカヌネル数回の反埩<10でdocker-samba-loopのバグを生成したす。 docker-nfs-loopでは再珟できたせん
  • 4.11.9-1-ARCHず同じ結果バヌゞョン
  • 4.12.3-1-ARCHテストリポゞトリず同じ結果
  • 4.11.11-coreos docker-samba-loopで同じ結果、 docker-nfs-loop詊したせん

お圹に立おれば
也杯

回避策は、私の堎合は--net=hostを䜿甚するこずです。 しかし、それは垞に受け入れられる解決策ではありたせん

@piec 、詳现に感謝したす。 この非垞に長いコメントの最埌に、もう少し質問がありたす。

SMBセットアップを䜿甚しお、さたざたなカヌネルでさたざたなものを䜜成するこずができたした。 NFSセットアップでもこれを詊したしたが、サむコロはありたせん。

すべおのテストは、2぀のvCPUず2GBのメモリで構成されたVMを備えたHyperKitのdocker 17.06.1-ceで実行されたすMac甚のDocker経由ですが、それは問題ではありたせん。 LinuxKitカヌネルを䜿甚しおいるのは、それらを簡単に亀換できるからです。

私はあなたの倉曎Dockerfile私はぞの呌び出しを远加こずでdateに最初のコマンドを実行しおも、远加ずしお呌び出しをdateの前にandeafter docker runに぀いおクラむアント。

実隓14.9.39カヌネル

4.9.39最新の4.9.x安定カヌネルでは、カヌネルがクラッシュしたす。

# while true; do  date;    docker run -it --rm --name client-smb --cap-add=SYS_ADMIN --cap-add DAC_READ_SEARCH --link samba:samba client-smb:1;  date;   sleep 1; done
Thu 27 Jul 2017 14:12:51 BST
+ date
Thu Jul 27 13:12:52 UTC 2017
+ mount.cifs //172.17.0.2/public /mnt/ -o vers=3.0,user=nobody,password=
+ date
Thu Jul 27 13:12:52 UTC 2017
+ ls -la /mnt
total 1028
drwxr-xr-x    2 root     root             0 Jul 27 10:11 .
drwxr-xr-x    1 root     root          4096 Jul 27 13:12 ..
-rwxr-xr-x    1 root     root             3 Jul 27 10:11 bla
+ umount /mnt
+ echo umount ok
umount ok
Thu 27 Jul 2017 14:12:52 BST
Thu 27 Jul 2017 14:12:53 BST

---> First iteration suceeds and then hangs on the docker run

そしおdmesg 

[  268.347598] BUG: unable to handle kernel paging request at 0000000100000015
[  268.348072] IP: [<ffffffff8c64ea95>] sk_filter_uncharge+0x5/0x31
[  268.348411] PGD 0 [  268.348517]
[  268.348614] Oops: 0000 [#1] SMP
[  268.348789] Modules linked in:
[  268.348971] CPU: 1 PID: 2221 Comm: vsudd Not tainted 4.9.39-linuxkit #1
[  268.349330] Hardware name:   BHYVE, BIOS 1.00 03/14/2014
[  268.349620] task: ffff8b6ab8eb5100 task.stack: ffffa015c113c000
[  268.349995] RIP: 0010:[<ffffffff8c64ea95>]  [<ffffffff8c64ea95>] sk_filter_uncharge+0x5/0x31
[  268.350509] RSP: 0018:ffffa015c113fe10  EFLAGS: 00010202
[  268.350818] RAX: 0000000000000000 RBX: ffff8b6ab7eee6a8 RCX: 0000000000000006
[  268.351231] RDX: 00000000ffffffff RSI: 00000000fffffffd RDI: ffff8b6ab7eee400
[  268.351636] RBP: ffff8b6ab7eee400 R08: 0000000000000000 R09: 0000000000000000
[  268.352022] R10: ffffa015c101fcb0 R11: 0000000000000000 R12: 0000000000000000
[  268.352409] R13: ffff8b6ab7eee4a8 R14: ffff8b6ab7f8e340 R15: 0000000000000000
[  268.352796] FS:  00007f03f62e3eb0(0000) GS:ffff8b6abc700000(0000) knlGS:0000000000000000
[  268.353234] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  268.353546] CR2: 0000000100000015 CR3: 00000000782d2000 CR4: 00000000000406a0
[  268.353961] Stack:
[  268.354106]  ffffffff8c625054 ffff8b6ab7eee400 ffffa015c113fe88 0000000000000000
[  268.354526]  ffffffff8c74ed96 01000008bc718980 0000000000000000 0000000000000000
[  268.354965]  de66927a28223151 ffff8b6ab4443a40 ffffa015c101fcb0 ffff8b6ab4443a70
[  268.355384] Call Trace:
[  268.355523]  [<ffffffff8c625054>] ? __sk_destruct+0x35/0x133
[  268.355822]  [<ffffffff8c74ed96>] ? unix_release_sock+0x1df/0x212
[  268.356164]  [<ffffffff8c74ede2>] ? unix_release+0x19/0x25
[  268.356454]  [<ffffffff8c62034c>] ? sock_release+0x1a/0x6c
[  268.356742]  [<ffffffff8c6203ac>] ? sock_close+0xe/0x11
[  268.357019]  [<ffffffff8c1f8710>] ? __fput+0xdd/0x17b
[  268.357288]  [<ffffffff8c0f604d>] ? task_work_run+0x64/0x7a
[  268.357583]  [<ffffffff8c003285>] ? prepare_exit_to_usermode+0x7d/0xa4
[  268.357925]  [<ffffffff8c7d2884>] ? entry_SYSCALL_64_fastpath+0xa7/0xa9
[  268.358268] Code: 08 4c 89 e7 e8 fb f8 ff ff 48 3d 00 f0 ff ff 77 06 48 89 45 00 31 c0 48 83 c4 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 44 00 00 <48> 8b 46 18 8b 40 04 48 8d 04 c5 28 00 00 00 f0 29 87 24 01 00
[  268.359776] RIP  [<ffffffff8c64ea95>] sk_filter_uncharge+0x5/0x31
[  268.360118]  RSP <ffffa015c113fe10>
[  268.360311] CR2: 0000000100000015
[  268.360550] ---[ end trace 4a7830b42d5acfb3 ]---
[  268.360861] Kernel panic - not syncing: Fatal exception
[  268.361217] Kernel Offset: 0xb000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[  268.361789] Rebooting in 120 seconds..

unregister_netdeviceメッセヌゞ以䞋を参照を含む、4.11.12カヌネルが行うこずのいく぀かの反埩を時々芋た埌、䞊蚘のカヌネルクラッシュが発生したす。 次のように、クラッシュのわずかな倉化が芋られるこずがありたす。

[  715.926694] BUG: unable to handle kernel paging request at 00000000fffffdc9
[  715.927380] IP: [<ffffffff8664ea95>] sk_filter_uncharge+0x5/0x31
[  715.927868] PGD 0 [  715.928022]
[  715.928174] Oops: 0000 [#1] SMP
[  715.928424] Modules linked in:
[  715.928703] CPU: 0 PID: 2665 Comm: runc:[0:PARENT] Not tainted 4.9.39-linuxkit #1
[  715.929321] Hardware name:   BHYVE, BIOS 1.00 03/14/2014
[  715.929765] task: ffff931538ef4140 task.stack: ffffbcbbc0214000
[  715.930279] RIP: 0010:[<ffffffff8664ea95>]  [<ffffffff8664ea95>] sk_filter_uncharge+0x5/0x31
[  715.931043] RSP: 0018:ffffbcbbc0217be0  EFLAGS: 00010206
[  715.931487] RAX: 0000000000000000 RBX: ffff931532a662a8 RCX: 0000000000000006
[  715.932043] RDX: 00000000ffffffff RSI: 00000000fffffdb1 RDI: ffff931532a66000
[  715.932612] RBP: ffff931532a66000 R08: 0000000000000000 R09: 0000000000000000
[  715.933181] R10: ffff9315394f2990 R11: 000000000001bb68 R12: ffff931532a66000
[  715.933725] R13: ffff9315328060a8 R14: ffff931532a66340 R15: 0000000000000000
[  715.934258] FS:  0000000000000000(0000) GS:ffff93153c600000(0000) knlGS:0000000000000000
[  715.934857] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  715.935286] CR2: 00000000fffffdc9 CR3: 0000000052c09000 CR4: 00000000000406b0
[  715.935822] Stack:
[  715.935974]  ffffffff86625054 ffff931532806000 ffffbcbbc0217c58 ffff931532a66000
[  715.936560]  ffffffff8674ed37 0100000800000282 0000000000000000 0000000000000000
[  715.937173]  5de0b9a3a313c00b ffff9315346f5080 ffff9315394f2990 ffff9315346f50b0
[  715.937751] Call Trace:
[  715.937982]  [<ffffffff86625054>] ? __sk_destruct+0x35/0x133
[  715.938608]  [<ffffffff8674ed37>] ? unix_release_sock+0x180/0x212
[  715.939130]  [<ffffffff8674ede2>] ? unix_release+0x19/0x25
[  715.939517]  [<ffffffff8662034c>] ? sock_release+0x1a/0x6c
[  715.939907]  [<ffffffff866203ac>] ? sock_close+0xe/0x11
[  715.940277]  [<ffffffff861f8710>] ? __fput+0xdd/0x17b
[  715.940635]  [<ffffffff860f604d>] ? task_work_run+0x64/0x7a
[  715.941072]  [<ffffffff860e148a>] ? do_exit+0x42a/0x8e0
[  715.941472]  [<ffffffff8674edfa>] ? scm_destroy+0xc/0x25
[  715.941880]  [<ffffffff867504e0>] ? unix_stream_sendmsg+0x2dd/0x30b
[  715.942357]  [<ffffffff860e19aa>] ? do_group_exit+0x3c/0x9d
[  715.942780]  [<ffffffff860eac41>] ? get_signal+0x45d/0x4e2
[  715.943210]  [<ffffffff86621640>] ? sock_sendmsg+0x2d/0x3c
[  715.943618]  [<ffffffff8602055a>] ? do_signal+0x36/0x4c9
[  715.944017]  [<ffffffff861f64c7>] ? __vfs_write+0x8f/0xcc
[  715.944416]  [<ffffffff861f7100>] ? vfs_write+0xbb/0xc7
[  715.944809]  [<ffffffff8600326c>] ? prepare_exit_to_usermode+0x64/0xa4
[  715.945295]  [<ffffffff867d2884>] ? entry_SYSCALL_64_fastpath+0xa7/0xa9
[  715.945789] Code: 08 4c 89 e7 e8 fb f8 ff ff 48 3d 00 f0 ff ff 77 06 48 89 45 00 31 c0 48 83 c4 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 44 00 00 <48> 8b 46 18 8b 40 04 48 8d 04 c5 28 00 00 00 f0 29 87 24 01 00
[  715.947701] RIP  [<ffffffff8664ea95>] sk_filter_uncharge+0x5/0x31
[  715.948112]  RSP <ffffbcbbc0217be0>
[  715.948292] CR2: 00000000fffffdc9
[  715.948467] ---[ end trace 2d69bea56725fd5f ]---
[  715.948722] Kernel panic - not syncing: Fatal exception
[  715.949059] Kernel Offset: 0x5000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[  715.949595] Rebooting in 120 seconds..

クラッシュはunixドメむン゜ケットコヌドにあり、
ここで報告されおい

実隓24.11.12カヌネル

私はクラッシュを芋おいない4.11シリヌズの最新安定しおいる、それは本圓に遅いむンラむンでの泚釈である4.11.12 ---> 

# while true; do  date;    docker run -it --rm --name client-smb --cap-add=SYS_ADMIN --cap-add DAC_READ_SEARCH --link samba:samba client-smb:1;  date;   sleep 1; done
Thu 27 Jul 2017 13:48:04 BST
+ date
Thu Jul 27 12:48:05 UTC 2017
+ mount.cifs //172.17.0.2/public /mnt/ -o vers=3.0,user=nobody,password=
+ date
Thu Jul 27 12:48:05 UTC 2017
+ ls -la /mnt
total 1028
drwxr-xr-x    2 root     root             0 Jul 27 10:11 .
drwxr-xr-x    1 root     root          4096 Jul 27 12:48 ..
-rwxr-xr-x    1 root     root             3 Jul 27 10:11 bla
+ umount /mnt
+ echo umount ok
umount ok
Thu 27 Jul 2017 13:48:05 BST

---> First iteration takes one second

Thu 27 Jul 2017 13:48:06 BST
docker: Error response from daemon: containerd: container did not start before the specified timeout.
Thu 27 Jul 2017 13:50:07 BST

---> Second iteration fails after 2 minutes with dockerd unable to start the container

Thu 27 Jul 2017 13:50:08 BST
+ date
Thu Jul 27 12:51:52 UTC 2017
+ mount.cifs //172.17.0.2/public /mnt/ -o vers=3.0,user=nobody,password=
+ date
Thu Jul 27 12:51:53 UTC 2017
+ ls -la /mnt
total 1028
drwxr-xr-x    2 root     root             0 Jul 27 10:11 .
drwxr-xr-x    1 root     root          4096 Jul 27 12:50 ..
-rwxr-xr-x    1 root     root             3 Jul 27 10:11 bla
+ umount /mnt
+ echo umount ok
umount ok
Thu 27 Jul 2017 13:51:53 BST

---> Third iterations succeeds, BUT it takes almost 2 minutes between docker run and the container running

Thu 27 Jul 2017 13:51:54 BST
docker: Error response from daemon: containerd: container did not start before the specified timeout.
Thu 27 Jul 2017 13:53:55 BST

---> Fourth iteration fails after two minutes

Thu 27 Jul 2017 13:53:56 BST
+ date
Thu Jul 27 12:55:37 UTC 2017
+ mount.cifs //172.17.0.2/public /mnt/ -o vers=3.0,user=nobody,password=
+ date
Thu Jul 27 12:55:37 UTC 2017
+ ls -la /mnt
total 1028
drwxr-xr-x    2 root     root             0 Jul 27 10:11 .
drwxr-xr-x    1 root     root          4096 Jul 27 12:53 ..
-rwxr-xr-x    1 root     root             3 Jul 27 10:11 bla
+ umount /mnt
+ echo umount ok
umount ok
Thu 27 Jul 2017 13:55:38 BST

---> Fifth iteration succeeds, but almost 2 minutes between docker run and the container executing

これを1時間ほど実行し、同じパタヌンを繰り返したしたが、カヌネルのクラッシュはありたせんでした。

私が芋るカヌネルログには、次のものがたくさんありたす。

[   84.940380] unregister_netdevice: waiting for lo to become free. Usage count = 1
[   95.082151] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  105.253289] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  115.477095] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  125.627059] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  135.789298] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  145.969455] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  156.101126] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  166.303333] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  176.445791] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  186.675958] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  196.870265] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  206.998238] unregister_netdevice: waiting for lo to become free. Usage count = 1
[...]

それは10秒ごずのメッセヌゞです。

これにより、1時間経っおもハングしたタスクの怜出が開始されないため、4.11.12では、参照カりントが最終的に枛少し、デバむスが解攟されるず思われたすが、コンテナヌを実行できる間隔から刀断するず、時間がかかる堎合がありたす。最倧4分

実隓34.11.12カヌネル

OPでのカヌネルのクラッシュは、ハングしたタスクが怜出されたためにカヌネルがクラッシュしたこずを瀺しおいたす。 テストでこのクラッシュは芋られなかったので、ハングしたタスクの怜出に関連するsysctl蚭定を倉曎したした。

# sysctl -a | grep kernel.hung_task
kernel.hung_task_check_count = 4194304
kernel.hung_task_panic = 0
kernel.hung_task_timeout_secs = 120
kernel.hung_task_warnings = 10
# sysctl -w kernel.hung_task_timeout_secs = 60
# sysctl -w kernel.hung_task_panic=1

これにより、タむムアりトが60秒に短瞮され、ハングしたタスクが怜出された堎合にカヌネルがパニックになりたす。 dockerdがcontainerdが開始されないず文句を蚀うたでに玄2分かかるため、ハングしたタスクの怜出を60秒に枛らすず、単䞀のタスクがハングした堎合にカヌネルパニックが発生するはずです。 残念ながら、ログにクラッシュはありたせんでした

実隓44.11.12カヌネル

次に、私は増加sleep埌の各docker runメッセヌゞが連続しおいるかどうかを確認するために5分。 この堎合、すべおのdocker runが機胜しおいるように芋えたす。これは、前の実隓からdocker runが4分ごずに機胜するためです。

---> This is after the first run
[  281.406660] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  291.455945] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  301.721340] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  311.988572] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  322.258805] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  332.527383] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  342.796511] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  353.059499] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  363.327472] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  373.365562] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  383.635923] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  393.684949] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  403.950186] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  414.221779] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  424.490110] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  434.754925] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  445.022243] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  455.292106] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  465.557462] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  475.826946] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  486.097833] unregister_netdevice: waiting for lo to become free. Usage count = 1

---> 200+ seconds of messages and then nothing for almost 400 seconds

[  883.924399] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  893.975810] unregister_netdevice: waiting for lo to become free. Usage count = 1
...
[ 1088.624065] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1098.891297] unregister_netdevice: waiting for lo to become free. Usage count = 1

---> 200+ seconds of messages and then a gap of 90 seconds

[ 1185.119327] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1195.387962] unregister_netdevice: waiting for lo to become free. Usage count = 1
...
[ 1390.040035] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1400.307359] unregister_netdevice: waiting for lo to become free. Usage count = 1

---> 200+ seconds of messages and then a gap of 80+ seconds

[ 1486.325724] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1496.591715] unregister_netdevice: waiting for lo to become free. Usage count = 1
...
[ 1680.987216] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1691.255068] unregister_netdevice: waiting for lo to become free. Usage count = 1

---> 200+ seconds of messages and then a gap of 90+ seconds

[ 1787.547334] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 1797.819703] unregister_netdevice: waiting for lo to become free. Usage count = 1

ほがすべおのdocker run箄200秒盞圓のunregister_netdeviceを取埗しおいるようです2番目のものを陀く。 その間、新しいコンテナヌを開始できないず思われたす実隓2で瀺されおいるように。おそらくタスクがハングしおいないために、ハングしたタスクの怜出が開始されないのは䞍思議です。

実隓54.11.12 / 4.9.39、カヌネルで远加のデバッグを有効にする

これはdocker run間に1秒のスリヌプに戻りたす

たくさんの远加のデバッグを可胜にする別のカヌネルがありたす
LOCKDEP 、 RCU_TRACE 、 LOCKUP_DETECTORなどのオプション
もっず。

これらのデバッグオプションを有効にしおrepro4.11.12カヌネルを実行しおも、䜕もトリガヌされたせんでした。

通垞のカヌネルがクラッシュする4.9.39カヌネルに぀いおも同様です。 デバッグオプションはタむミングをわずかに倉曎するため、これは、UNIXドメむン゜ケットコヌドのクラッシュが瀺す远加の手がかりは、競合によるものである可胜性がありたす。

もう少し深く掘る

さたざたなcontainerdプロセスのstraceは圹に立ちたせん
通垞、Goで曞かれおいるからではありたせん。 たくさんの長い屋台
futex(...FUTEX_WAIT...)ず、堎所/理由に関する情報。

sysrq突っ぀いおいる人もいたす

冗長性を高める

echo 9 > /proc/sysrq-trigger

すべおのCPUからのスタックトレヌス

echo l > /proc/sysrq-trigger
[ 1034.298202] sysrq: SysRq : Show backtrace of all active CPUs
[ 1034.298738] NMI backtrace for cpu 1
[ 1034.299073] CPU: 1 PID: 2235 Comm: sh Tainted: G    B           4.11.12-linuxkit #1
[ 1034.299818] Hardware name:   BHYVE, BIOS 1.00 03/14/2014
[ 1034.300286] Call Trace:
[ 1034.300517]  dump_stack+0x82/0xb8
[ 1034.300827]  nmi_cpu_backtrace+0x75/0x87
[ 1034.301200]  ? irq_force_complete_move+0xf1/0xf1
[ 1034.301633]  nmi_trigger_cpumask_backtrace+0x6e/0xfd
[ 1034.302097]  arch_trigger_cpumask_backtrace+0x19/0x1b
[ 1034.302560]  ? arch_trigger_cpumask_backtrace+0x19/0x1b
[ 1034.302989]  sysrq_handle_showallcpus+0x17/0x19
[ 1034.303438]  __handle_sysrq+0xe4/0x172
[ 1034.303826]  write_sysrq_trigger+0x47/0x4f
[ 1034.304210]  proc_reg_write+0x5d/0x76
[ 1034.304507]  __vfs_write+0x35/0xc8
[ 1034.304773]  ? rcu_sync_lockdep_assert+0x12/0x52
[ 1034.305132]  ? __sb_start_write+0x152/0x189
[ 1034.305458]  ? file_start_write+0x27/0x29
[ 1034.305770]  vfs_write+0xda/0x100
[ 1034.306029]  SyS_write+0x5f/0xa3
[ 1034.306283]  entry_SYSCALL_64_fastpath+0x1f/0xc2
[ 1034.306638] RIP: 0033:0x7fa4810488a9
[ 1034.306976] RSP: 002b:00007fffd3a29828 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 1034.307567] RAX: ffffffffffffffda RBX: 000000c6b523a020 RCX: 00007fa4810488a9
[ 1034.308101] RDX: 0000000000000002 RSI: 000000c6b5239d00 RDI: 0000000000000001
[ 1034.308635] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 1034.309169] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[ 1034.309700] R13: 0000000000000000 R14: 00007fffd3a29988 R15: 00007fa481280ee0
[ 1034.310334] Sending NMI from CPU 1 to CPUs 0:
[ 1034.310710] NMI backtrace for cpu 0 skipped: idling at pc 0xffffffffa0922756

ここには䜕もありたせん。CPU1はアむドル状態で、CPU0はsysrqを凊理しおいたす。

ブロックされたタスクを衚瀺する2回

echo w > /proc/sysrq-trigger
[  467.167062] sysrq: SysRq : Show Blocked State
[  467.167731]   task                        PC stack   pid father
[  467.168580] kworker/u4:6    D    0   293      2 0x00000000
[  467.169096] Workqueue: netns cleanup_net
[  467.169487] Call Trace:
[  467.169732]  __schedule+0x582/0x701
[  467.170073]  schedule+0x89/0x9a
[  467.170338]  schedule_timeout+0xbf/0xff
[  467.170666]  ? del_timer_sync+0xc1/0xc1
[  467.171011]  schedule_timeout_uninterruptible+0x2a/0x2c
[  467.171422]  ? schedule_timeout_uninterruptible+0x2a/0x2c
[  467.171866]  msleep+0x1e/0x22
[  467.172155]  netdev_run_todo+0x173/0x2c4
[  467.172499]  rtnl_unlock+0xe/0x10
[  467.172770]  default_device_exit_batch+0x13c/0x15f
[  467.173226]  ? __wake_up_sync+0x12/0x12
[  467.173550]  ops_exit_list+0x29/0x53
[  467.173850]  cleanup_net+0x1a8/0x261
[  467.174153]  process_one_work+0x276/0x4fb
[  467.174487]  worker_thread+0x1eb/0x2ca
[  467.174800]  ? rescuer_thread+0x2d9/0x2d9
[  467.175136]  kthread+0x106/0x10e
[  467.175406]  ? __list_del_entry+0x22/0x22
[  467.175737]  ret_from_fork+0x2a/0x40
[  467.176167] runc:[1:CHILD]  D    0  2609   2606 0x00000000
[  467.176636] Call Trace:
[  467.176849]  __schedule+0x582/0x701
[  467.177152]  schedule+0x89/0x9a
[  467.177451]  schedule_preempt_disabled+0x15/0x1e
[  467.177827]  __mutex_lock+0x2a0/0x3ef
[  467.178133]  ? copy_net_ns+0xbb/0x17c
[  467.178456]  mutex_lock_killable_nested+0x1b/0x1d
[  467.179068]  ? mutex_lock_killable_nested+0x1b/0x1d
[  467.179489]  copy_net_ns+0xbb/0x17c
[  467.179798]  create_new_namespaces+0x12b/0x19b
[  467.180151]  unshare_nsproxy_namespaces+0x8f/0xaf
[  467.180569]  SyS_unshare+0x17b/0x302
[  467.180925]  entry_SYSCALL_64_fastpath+0x1f/0xc2
[  467.181303] RIP: 0033:0x737b97
[  467.181559] RSP: 002b:00007fff1965ab18 EFLAGS: 00000246 ORIG_RAX: 0000000000000110
[  467.182182] RAX: ffffffffffffffda RBX: 0000000002277bd8 RCX: 0000000000737b97
[  467.182805] RDX: 0000000000000000 RSI: 0000000000867a0f RDI: 000000006c020000
[  467.183368] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  467.184014] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  467.184639] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[  477.286653] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  487.457828] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  497.659654] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  507.831614] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  518.030241] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  528.232963] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  538.412263] unregister_netdevice: waiting for lo to become free. Usage count = 1
[  548.583610] unregister_netdevice: waiting for lo to become free. Usage count = 1
echo w > /proc/sysrq-trigger
[  553.969592] sysrq: SysRq : Show Blocked State
[  553.970411]   task                        PC stack   pid father
[  553.971208] kworker/u4:6    D    0   293      2 0x00000000
[  553.971686] Workqueue: netns cleanup_net
[  553.972058] Call Trace:
[  553.972305]  __schedule+0x582/0x701
[  553.972690]  schedule+0x89/0x9a
[  553.973039]  schedule_timeout+0xbf/0xff
[  553.973462]  ? del_timer_sync+0xc1/0xc1
[  553.973890]  schedule_timeout_uninterruptible+0x2a/0x2c
[  553.974706]  ? schedule_timeout_uninterruptible+0x2a/0x2c
[  553.975244]  msleep+0x1e/0x22
[  553.975539]  netdev_run_todo+0x173/0x2c4
[  553.975950]  rtnl_unlock+0xe/0x10
[  553.976303]  default_device_exit_batch+0x13c/0x15f
[  553.976725]  ? __wake_up_sync+0x12/0x12
[  553.977121]  ops_exit_list+0x29/0x53
[  553.977501]  cleanup_net+0x1a8/0x261
[  553.977869]  process_one_work+0x276/0x4fb
[  553.978245]  worker_thread+0x1eb/0x2ca
[  553.978578]  ? rescuer_thread+0x2d9/0x2d9
[  553.978933]  kthread+0x106/0x10e
[  553.979283]  ? __list_del_entry+0x22/0x22
[  553.979774]  ret_from_fork+0x2a/0x40
[  553.980244] runc:[1:CHILD]  D    0  2609   2606 0x00000000
[  553.980728] Call Trace:
[  553.980949]  __schedule+0x582/0x701
[  553.981254]  schedule+0x89/0x9a
[  553.981533]  schedule_preempt_disabled+0x15/0x1e
[  553.981917]  __mutex_lock+0x2a0/0x3ef
[  553.982220]  ? copy_net_ns+0xbb/0x17c
[  553.982524]  mutex_lock_killable_nested+0x1b/0x1d
[  553.982909]  ? mutex_lock_killable_nested+0x1b/0x1d
[  553.983311]  copy_net_ns+0xbb/0x17c
[  553.983606]  create_new_namespaces+0x12b/0x19b
[  553.983977]  unshare_nsproxy_namespaces+0x8f/0xaf
[  553.984363]  SyS_unshare+0x17b/0x302
[  553.984663]  entry_SYSCALL_64_fastpath+0x1f/0xc2
[  553.985080] RIP: 0033:0x737b97
[  553.985306] RSP: 002b:00007fff1965ab18 EFLAGS: 00000246 ORIG_RAX: 0000000000000110
[  553.985861] RAX: ffffffffffffffda RBX: 0000000002277bd8 RCX: 0000000000737b97
[  553.986383] RDX: 0000000000000000 RSI: 0000000000867a0f RDI: 000000006c020000
[  553.986811] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  553.987182] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  553.987551] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
/ # [  558.844761] unregister_netdevice: waiting for lo to become free. Usage count = 1

これは、 netnsずcleanup_net䞡方のワヌクキュヌがビゞヌであるこずを瀺しおいたす。 ここでかなり前に関連する問題を芋぀けたしたが、今回はcleanup_netワヌクキュヌが別の状態になっおいたす。

抂芁

  • 4.9.xカヌネルでのクラッシュは無関係だず思いたすが、4.11.xで修正されおいるようです。 これにはもう少しトリアヌゞが必芁です。
  • 以前のいく぀かのレポヌトずは異なり、ハングしたタスクは報告されたせんが、この問題に関するスタックトレヌスが非垞に少ないため、芋分けるのは困難です。
  • 䜕かが非垞に長い時間2〜4分ブロックされおいたす。 ワヌクキュヌの状態に関連しおいる可胜性がありたす
  • ワヌクキュヌのダンプには、特にワヌクキュヌがその状態に長く留たる理由に぀いお、さらに分析する必芁がありたす。
  • unregister_netdevメッセヌゞは、最近の修正4.9.39ず4.11.12の䞡方にありたすずは無関係のようです。 これは、 cleanup_net䜜業キュヌが進行しおおらず、メッセヌゞが出力されおいるこずが原因である可胜性がありたす。
  • SMBがこれをトリガヌする方法/理由は完党に䞍明です。 ネットワヌク名前空間ずさたざたなワヌクロヌドに察しお玄60の奇劙なストレステストを䜜成したしたが、問題を匕き起こすこずができたせんでした。 テストはruncに基づいおいたので、 containerdを詊しおみる必芁があるかもしれたせん。

もう少し掘り䞋げお、芁玄をnetdev送信したす。

@piecコン゜ヌルにアクセスでき、クラッシュダンプに関しお䜕かあるかどうかを確認できたすか、それずも私が芋おいるように倧幅な遅延が発生するだけですか あなたがクラッシュダンプを持っおいるなら、私はそれを芋るこずに非垞に興味がありたす。 たた、ベアメタルで実行しおいたすか、それずもVMで実行しおいたすか CPUずメモリの芳点からあなたの構成は䜕ですか

@rn調査に感謝したす

ベアメタルデスクトップPCで実行しおいるので、すべおにアクセスできたす。 それはi7-4790K + 32GiBです。
珟圚、テストリポゞトリ4.12.3-1-ARCHの最新のArch Linux +カヌネルで実行しおいたす。

私の堎合、実隓24.11.12カヌネルで説明したようにすべおが動䜜したす。

  • client-smbコンテナヌが存圚した埌、新しいコンテナヌを実行するこずは4分以䞊䞍可胜です。
  • カヌネルがクラッシュするこずはありたせん
  • client-smbが終了しおから4分以䞊の遅延で新しいコンテナヌを実行しようずするず、 unregister_netdevice: waiting for lo to become free. Usage count = 1メッセヌゞが繰り返し衚瀺されたす。 そしお、その4分の時間経過内に新しいコンテナを実行した堎合にのみ衚瀺されたす。 この4分埌に新しいコンテナを実行するのは「正垞」です

したがっお、ネットワヌクむンタヌフェむスに関連するsmb-clientコンテナのクリヌンアッププロセスのどこかに問題があるず思いたす

実際には、この問題のはるかに単玔な再珟がありたすずころで、元の問題ではありたせん。

このスクリプトは、ホスト䞊でSMBサヌバヌを起動し、 vethペアでネットワヌク名前空間を䜜成し、ネットワヌク名前空間でmount; ls; unmountを実行しおから、ネットワヌク名前空間を削陀したす。

apk add --no-cache iproute2 samba samba-common-tools cifs-utils

# SMB server setup
cat <<EOF > /etc/samba/smb.conf
[global]
    workgroup = WORKGROUP
    netbios name = FOO
    passdb backend = tdbsam
    security = user
    guest account = nobody
    strict locking = no
    min protocol = SMB2
[public]
    path = /share
    browsable = yes
    read only = no
    guest ok = yes
    browseable = yes
    create mask = 777
EOF
adduser -D -G nobody nobody && smbpasswd -a -n nobody
mkdir /share && chmod ugo+rwx /share && touch /share/foo
chown -R nobody.nobody /share

# Bring up a veth pair
ip link add hdev type veth peer name nsdev
ip addr add 10.0.0.1/24 dev hdev
ip link set hdev up

# Start SMB server and sleep for it to serve
smbd -D; sleep 5

# Client setup
ip netns add client-ns
ip link set nsdev netns client-ns
ip netns exec client-ns ip addr add 10.0.0.2/24 dev nsdev
ip netns exec client-ns ip link set lo up
ip netns exec client-ns ip link set nsdev up
sleep 1 # wait for the devices to come up

# Execute (mount, ls, unmount) in the network namespace and a new mount namespace
ip netns exec client-ns unshare --mount \
    /bin/sh -c 'mount.cifs //10.0.0.1/public /mnt -o vers=3.0,guest; ls /mnt; umount /mnt'

# Delete the client network namespace.
ip netns del client-ns

# Create a new network namespace
# This will stall for up to 200s
ip netns add new-netns

名前空間で実行するずき、たたはネットワヌク名前空間を削陀する前に、アンマりント埌に単玔なsleep 1远加するず、新しい名前空間を䜜成するずきにたったく停止するこずなく機胜するこずに泚意しおください。 叀い名前空間が削陀された埌のスリヌプは、ストヌルを枛らしたせん。

@piecたた、アンマりント埌にDockerfileでリプロずsleep 1しおこれをテストしたした。すべおが期埅どおりに機胜し、ストヌルやunregister_netdevメッセヌゞはありたせん。

これを今すぐ曞いおnetdev@vger送りたす

優秀な
アンマりント埌のsleepで、セットアップのストヌルずunregister_netdevメッセヌゞが修正されるこずを確認したした

umountは、そのnetnsに察しお非同期アクションを生成し、そのアクションが終了する前にnetnsが削陀されるず、ブロックされ、最終的にタむムアりトになるず思いたせんか マりント埌のスリヌプは、ネットが削陀される前にこのようなものを終了させたす。
しかし、それは単なる仮説です

私はアンマりントなしで、同じ違いを詊したした。 これは、ネットワヌク名前空間の削陀です。 その9ずマりント名前空間の削陀は、ずにかくアンマりントをトリガヌしたす。

ああ、わかりたした。

ちなみに、smbを䜿甚しお別のマシンで開発䞭に誀っお問題を再珟したした。 これはUbuntu16.04 PC、Linux4.4.0-77-genericです。 そしお、興味深いかもしれないハングしたタスクのバックトレヌスがありたす。 クラッシュはなく、同じ最倧4分の遅延。

[6409720.564230] device vethff6396b entered promiscuous mode
[6409720.564415] IPv6: ADDRCONF(NETDEV_UP): vethff6396b: link is not ready
[6409723.844595] unregister_netdevice: waiting for lo to become free. Usage count = 1
[6409726.812872] INFO: task exe:17732 blocked for more than 120 seconds.
[6409726.812918]       Tainted: P           O    4.4.0-77-generic #98-Ubuntu
[6409726.812959] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[6409726.813007] exe             D ffff8809952bbcb8     0 17732      1 0x00000000
[6409726.813013]  ffff8809952bbcb8 ffffffff821d9a20 ffff88103856c600 ffff880ffae2d400
[6409726.813018]  ffff8809952bc000 ffffffff81ef7724 ffff880ffae2d400 00000000ffffffff
[6409726.813021]  ffffffff81ef7728 ffff8809952bbcd0 ffffffff81837845 ffffffff81ef7720
[6409726.813025] Call Trace:
[6409726.813036]  [<ffffffff81837845>] schedule+0x35/0x80
[6409726.813040]  [<ffffffff81837aee>] schedule_preempt_disabled+0xe/0x10
[6409726.813044]  [<ffffffff81839729>] __mutex_lock_slowpath+0xb9/0x130
[6409726.813048]  [<ffffffff818397bf>] mutex_lock+0x1f/0x30
[6409726.813053]  [<ffffffff81726a2e>] copy_net_ns+0x6e/0x120
[6409726.813059]  [<ffffffff810a168b>] create_new_namespaces+0x11b/0x1d0
[6409726.813062]  [<ffffffff810a17ad>] copy_namespaces+0x6d/0xa0
[6409726.813068]  [<ffffffff8107f1d5>] copy_process+0x905/0x1b70
[6409726.813073]  [<ffffffff810805d0>] _do_fork+0x80/0x360
[6409726.813077]  [<ffffffff81080959>] SyS_clone+0x19/0x20
[6409726.813081]  [<ffffffff8183b972>] entry_SYSCALL_64_fastpath+0x16/0x71
[6409733.941041] unregister_netdevice: waiting for lo to become free. Usage count = 1
[6409744.021494] unregister_netdevice: waiting for lo to become free. Usage count = 1

netdev @ vgerスレッドは、進行状況を远跡したい堎合は、 https //www.mail-archive.com/[email protected]/msg179703.htmlにありたす。

@piecはい、それは予想されたす。

私もこのバグに遭遇し、Ubuntuカヌネルむメヌゞでdocker -samba-loopメ゜ッドをOopsesを再珟するこずができたした。

  • linux-image-4.4.0-93-generic
  • linux-image-4.10.0-1004-gcp
  • linux-image-4.10.0-32-generic
  • linux-image-4.11.0-14-generic
  • linux-image-4.12.10-041210-generic = 4.12.10-041210.20170830

調査結果をUbuntuのバグレポヌトに远加したした https  https://github.com/fho/docker-samba-loop

@fhoありがずう。 実際には、再珟するためにDockerはたったく必芁ありたせん。ネットワヌク名前空間でsambaクラむアントを実行するだけで、 https //github.com/moby/moby/issues/5618#issuecomment-316881443のようにトリックが実行され

@rn情報をありがずう。 私はただその方法を詊しおいたせん。

ここずnetdevメヌリングリストぞの最近の投皿は、カヌネルストヌルに関するものにすぎないようです。
カヌネル4.11ず4.12でもカヌネルがクラッシュしたす。

これず非垞によく䌌た問題が発生しおいたす35068で詳しく説明されおいたす。 基本的に2ノヌドの矀れを実行したす。これは、スプレッド配眮戊略を䜿甚しお4぀のレプリカで単䞀のサヌビスを実行したす。

これらの各サヌビスコンテナヌで、ホストdocker.sockをボリュヌムずしおマりントし、コンテナヌ内からdocker runコマンドを実行したす。コンテナヌあたりの最倧同時実行数は4です。 これにより、最倧4぀のコンテナが同時に䜜成され、 -rm介しおすぐに削陀されたす。

䞊蚘のリファレンスに瀺されおいるARMv7の远加のカヌネルログず䟋。

ip6_route_dev_notifyパニックは私たちにずっお深刻な問題です。

これをもう少し芋おみるず、これは間違いなく次ず同じバグではないず思いたす。

これは、ipv6レむダヌを䜿甚したカヌネルのアップストリヌムの問題だず思いたす。

この情報は関連しおいる可胜性がありたす。

_unregister_netdeviceの問題を再珟するこずができたすloが解攟されるのを埅っおいたす。 䜿甚回数= 1_4.14.0の堎合-rc3カヌネル_CONFIG_PREEMPT_NONE = y_で、次のブヌトカヌネルオプションを䜿甚しお1぀のCPUでのみ実行されたす。

BOOT_IMAGE = / boot / vmlinuz-4.14.0-rc3 root = / dev / mapper / vg0-root ro quiet vsyscall = emulate nosmp

この状態になるず、この状態のたたになり、再起動が必芁になりたす。 これ以䞊コンテナをスポヌンするこずはできたせん。 ipsec / openvpn接続を実行するむメヌゞを実行し、トンネル内に小さなファむルをダりンロヌドするこずで、それを再珟したす。 次に、むンスタンスが存圚したす通垞、実行時間は10秒未満です。 このようなコンテナを1台のマシンで1分間に数十回実行したす。 䞊蚘の蚭定1cpuのみを䜿甚するず、マシンは玄2時間でヒットしたす。

同じカヌネルを䜿甚しおいるが、CPUの数を制限しない別の再生装眮は、コンテナヌ内で3秒間UDPモヌドでiperfを実行するこずですしたがっお、TCP通信はたったくありたせん。 このようなコンテナを10個䞊列で実行し、すべおが完了するのを埅っおから再床実行するず、10分以内に問題が発生したす40コアマシンの堎合。

䞡方のリプロデュヌサヌで、「ip route flush table all; ifconfig」を远加したした䞋; コンテナから存圚する前に10むンチ寝たす。効果はないようです。

やあ、

火事に加えお、ここで芁求されおいるように、この問題も発生しおいたす...

カヌネルバヌゞョン Linux exe-v3-worker 4.9.0-3-amd641 SMP Debian 4.9.30-2 + deb9u52017-09-19x86_64 GNU / Linux

Linuxディストリビュヌション/バヌゞョン Debian 9.1すべおのパッケヌゞが最新

Linuxベンダヌの最新のカヌネルバヌゞョンを䜿甚しおいたすか はい

ネットワヌク蚭定ブリッゞ、オヌバヌレむ、IPv4、IPv6など IPv4のみ、デフォルトのDocker蚭定に埓っおNAT

ワヌクロヌドの説明コンテナヌのタむプ、ネットワヌク負荷のタむプなど終了する前にスクリプトを実行する非垞に短呜のコンテナヌ数秒から数分。

そしお理想的には単玔再生産

** kernel[617624.412100] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1

圱響を受けるノヌドで叀いコンテナを匷制終了したり、新しいコンテナを起動したりできたせんでした。機胜を埩元するには再起動する必芁がありたした。**

うたくいけば、根本的な原因/パッチがすぐに芋぀かりたす。

よろしくお願いしたす、

robputt796

@campbellr
ネットワヌクストレヌゞず関係があるようだずいうこずに同意した。 kubernetesの氞続ボリュヌムずしおcephkrbdを䜿甚しおいたす。
そしお、コンテナのクラッシュを長時間実行した埌の状況を再珟できたす。

この問題は10日前に割り圓おられ、進行䞭の䜜業です。ここで䜕が起こっおいるかに぀いおの詳现を確認できたす

うたくいけば、ダンストリヌトマンはそれを修正する方法を芋぀けたす

Oopsは、コミット76da0704507bbc51875013f6557877ab308cfd0aによっお修正されたカヌネルバグが原因であるこずが刀明したした。

ipv6NETDEV_UNREGISTERに察しおip6_route_dev_notifyを1回だけ呌び出したす

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76da0704507bbc51875013f6557877ab308cfd0a
これは、「kernelunregister_netdeviceloが解攟されるのを埅っおいたす。Usagecount= 2」の問題ではなく、カヌネルパニックを修正するだけです。

GitHubが叀いコメントを非衚瀺にしおいるため、ここでこれを繰り返したす

ここに到着する堎合

ここで説明しおいる問題はカヌネルのバグであり、ただ完党には修正されおいたせん。 この問題の発生を修正するパッチがカヌネルに組み蟌たれたしたが、他のパッチはただ解決されおいたせん。

_いく぀かの_状況に圹立぀可胜性のあるオプションがいく぀かありたすが、すべおではありたせん繰り返したすが、同じ゚ラヌを匕き起こす問題の組み合わせである可胜性が高いです

「私もこれもありたす」ずいうコメントを残さないでください

「私もこれを持っおいたす」はバグの解決に圹立ちたせん。 問題の解決に圹立぀可胜性のある情報がある堎合にのみコメントを残しおくださいその堎合、アップストリヌムのカヌネルにパッチを提䟛するこずが最善のステップである可胜性がありたす。

この問題があるこずを知らせたい堎合は、䞊郚の説明にある[
screen shot 2017-03-09 at 16 12 17

曎新に関する最新情報を入手したい堎合は、_サブスクラむブボタン_を䜿甚しおください。

screen shot 2017-03-09 at 16 11 03

ここにあるすべおのコメントは、3000人を電子メヌル/通知を送信したす。この問題に関する䌚話はただ解決されおいないため、ロックしたくありたせんが、これを無芖するず匷制される可胜性がありたす。

スレッドをわずかに短瞮するために、有甚な情報を远加しないコメントを削陀したす

この問題の解決を支揎したい堎合

  • スレッド党䜓を読んでください。 それは長く、githubはコメントを非衚瀺にしたすしたがっお、コメントを再び衚瀺するにはクリックする必芁がありたす。 このスレッドにすでに存圚する情報があなたを助ける可胜性がある堎合はたくさんありたす
  • 圹立぀情報に぀いおは、このコメントhttps://github.com/moby/moby/issues/5618#issuecomment -316297818およびその頃のコメントをお読み

ありがずう

少なくずもカヌネルTCP゜ケット接続が原因の堎合は、この問題を修正したず思いたす。 Ubuntu甚のテストカヌネルが利甚可胜であり、ここにいる誰かのためにこれを助け/修正するこずができればフィヌドバックが欲しいです。 パッチはアップストリヌムで送信されたす。 詳现はLPバグにありたす
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1711407/comments/46

お祝いを台無しにしお申し蚳ありたせんが、問題を再珟するこずができたした。 珟圚、 https //bugs.launchpad.net/ubuntu/+source/linux/+bug/1711407/でたす。

回避策はありたせんか

ホストネットワヌクを䜿甚したすこれにより、コンテナヌの䟡倀の倚くが砎壊されたすが、そこに行きたす。

@ pumba-ltこの問題は玄1。5幎前に発生し、玄1幎前にカヌネルレベルsysctlではないでipv6を無効にしたしたが、䞀床も問題が発生しおいたせん。 48ブレヌドのクラスタヌを実行しおいたす。

通垞 /etc/default/grub
GRUB_CMDLINE_LINUX="xxxxx ipv6.disable=1"

ただし、PXEブヌトを䜿甚しおいるため、PXE構成には次のものがありたす。

      DEFAULT menu.c32
      prompt 0
      timeout 50
      MENU TITLE PXE Boot
      label coreos
              menu label CoreOS
              kernel mykernel
              append initrd=myimage ipv6.disable=1 elevator=deadline cloud-config-url=myurl

確かに、この問題は二床ず発生したせん。

これは倚くの原因がある䞀般的な症状であるこずを誰もが理解しおください。 これを回避するためにあなたのために働いたこずは、他の誰かのために働かないかもしれたせん。

起動時にIPv6を無効にした埌fron grubの蚭定ファむル、問題が解決したこずを確認できたす。 7ノヌドクラスタヌで倚数の問題が発生したしたが、珟圚はスムヌズに実行されたす。

私はどこで解決策を芋぀けたか芚えおいたせん、たたはずにかく、私はそれを自分で芋぀けたした、他の人にこれを提案しおくれた@qrpikeに感謝したす:) !!

https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.114

edaafa805e0f9d09560a4892790b8e19cab8bf09をコミットしたす
著者Dan Streetman [email protected]
日付2018幎1月18日朚曜日16:14:26 -0500

net: tcp: close sock if net namespace is exiting


[ Upstream commit 4ee806d51176ba7b8ff1efd81f271d7252e03a1d ]

When a tcp socket is closed, if it detects that its net namespace is
exiting, close immediately and do not wait for FIN sequence.

For normal sockets, a reference is taken to their net namespace, so it will
never exit while the socket is open.  However, kernel sockets do not take a
reference to their net namespace, so it may begin exiting while the kernel
socket is still open.  In this case if the kernel socket is a tcp socket,
it will stay open trying to complete its close sequence.  The sock's dst(s)
hold a reference to their interface, which are all transferred to the
namespace's loopback interface when the real interfaces are taken down.
When the namespace tries to take down its loopback interface, it hangs
waiting for all references to the loopback interface to release, which
results in messages like:

unregister_netdevice: waiting for lo to become free. Usage count = 1

These messages continue until the socket finally times out and closes.
Since the net namespace cleanup holds the net_mutex while calling its
registered pernet callbacks, any new net namespace initialization is
blocked until the current net namespace finishes exiting.

After this change, the tcp socket notices the exiting net namespace, and
closes immediately, releasing its dst(s) and their reference to the
loopback interface, which lets the net namespace continue exiting.

Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1711407
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=97811
Signed-off-by: Dan Streetman <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

netnsでSCTPを䜿甚するず、これがトリガヌされる可胜性がありたす。4.16-rc1で修正されおいたす。
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4a31a6b19f9ddf498c81f5c9b089742b7472a6f8
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=957d761cf91cdbb175ad7d8f5472336a4d54dbf2

カヌネルバヌゞョンを4.4.118にアップグレヌドし、Dockerバヌゞョンを17.09.1-ceにアップグレヌドしたしたが、「unregister_netdeviceeth0が解攟されるのを埅っおいたす。䜿甚回数= 1」が発生したした。カヌネルレベルでipv6を無効にしおみおください。 クラりドが機胜するこずを願っおいたす。

@ wuming5569そのバヌゞョンのLinuxで問題が解決したかどうか

@ wuming5569たぶん、カヌネル4.4.114をアップグレヌドしお、「unregister_netdeviceloが解攟されるのを埅っおいたす。Usagecount= 1」を修正し、「unregister_netdeviceeth0が解攟されるのを埅っおいたす。Usagecount= 1」を修正したす。
私は本番環境でテストしたした。
@ddstreetこれはフィヌドバックです、䜕か助けはありたすか

@ wuming5569䞊蚘のように、メッセヌゞ可胜性がありたす。 カヌネルがハングしたすかハングしおいる堎合、ネットワヌクパタヌンは䜕ですか぀たり、コンテナはどのタむプのネットワヌクを実行したすか

CentOSで同じ問題が発生したした。 私のカヌネルは3.10.0-693.17.1.el7.x86_64です。 しかし、syslogで同様のスタックトレヌスを取埗できたせんでした。

Centos7カヌネル3.10.0-514.21.1.el7.x86_64およびdocker18.03.0-ceでも同じ

@danielefranceschi最新のCentOSカヌネル少なくずも3.10.0-693にアップグレヌドするこずをお勧めしたす。 それは問題を解決したせんが、それははるかに少ない頻床のようです。 カヌネル3.10.0-327および3.10.0-514では、スタックトレヌスが衚瀺されおいたしたが、私の蚘憶では、3.10.0-693ではスタックトレヌスは衚瀺されおいないず思いたす。

@alexhexabeam 3.10.0-693は

CentOS7カヌネル4.16.0-1.el7.elrepo.x86_64およびdocker18.03.0-ceでも同じ

クラッシュする前の数週間は機胜したしたが、起動しようずするず完党にスタックしたした。

この問題はカヌネル3.10.0-693.21.1.el7でも発生したした

私はそれがたた起こるこずを確認するこずができたす

Linux 3.10.0-693.17.1.el7.x86_64
Red Hat Enterprise Linux Serverリリヌス7.4Maipo

ある皋床の負荷をかけながら「servicedockerrestart」を行うこずで再珟できたす。

@ wuming5569この問題を修正したしたかネットワヌクタむプは䜕ですか 私たちはこの問題に䜕週間も混乱しおきたした。
wechatアカりントをお持ちですか

4admin2root、あなたが蚀及した修正を前提ずしお、 https //cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.114、

適切な最近のカヌネルがむンストヌルされおいる堎合、dockerデヌモンのナヌザヌランドプロキシを無効にしおも安党ですか それがからであるかどうかはあたり明確ではありたせん

https://github.com/moby/moby/issues/8356
https://github.com/moby/moby/issues/11185

どちらもカヌネル修正より叀いため

ありがずうございたした

私たちはこの問題に䜕週間も混乱しおきたした。
Linux 3.10.0-693.17.1.el7.x86_64
CentOS Linuxリリヌス7.4.1708コア

最新の4.14カヌネルにこの問題があるかどうかを誰かが確認できたすか そうではないようです。 むンタヌネットの呚りの誰も4.14カヌネルでこの問題に盎面しおいたせんでした。

これは4.15.15-1カヌネル、Centos7で芋られたす

倉曎ログを芋るず、 https//cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.15.8にはSCTPの修正がありたすが、TCPには修正がありたせん。 したがっお、最新の4.14を詊しおみるこずをお勧めしたす。

  • 4.15.18でさえこのバグを助けたせん
  • ipv6を無効にしおも効果はありたせん

4.16.13にアップグレヌドしたした。 芳察。 このバグは、1぀のノヌドで週に1回皋床しか発生したせんでした。

grub boot paramsたたはsysctlでipv6を無効にしたしたか ブヌトパラメヌタのみが機胜したす。 Sysctlはそれを修正したせん。

2018幎6月4日12:09:53 PMに、Sergey Pronin [email protected] mailto[email protected]は次のように曞いおいたす。

4.15.18でさえこのバグを助けたせん
ipv6を無効にしおも効果はありたせん

4.16.13にアップグレヌドしたした。 芳察。 このバグは、1぀のノヌドで週に1回皋床しか発生したせんでした。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubhttps://github.com/moby/moby/issues/5618#issuecomment-394410321で衚瀺するか、スレッドをミュヌトしたすhttps://github.com/notifications/unsubscribe-auth / AAo3HLYI_jnwjgtQ0ce-E4mc6Em5yeISks5t5VvRgaJpZM4B4L4Z。

私にずっお、ほずんどの堎合、同じプロゞェクト/ネットワヌクを再デプロむした埌にバグが発生したす

@qrpikeあなたが正しいです、私たちはsysctlだけを詊したした。 幌虫を詊しおみたしょう。 ありがずう

4.9.88Debianカヌネル。 再珟可胜。

@qrpikeあなたが正しいです、私たちはsysctlだけを詊したした。 幌虫を詊しおみたしょう。 ありがずう

私の堎合、ipv6を無効にしおも違いはありたせんでした。

@ spronin-aureaブヌトロヌダヌでipv6を無効にするこずは圹に立ちたしたか

@qrpikeで、ipv6を無効にするず、䜿甚しおいるノヌドに぀いお教えおください。 カヌネルバヌゞョン、k8sバヌゞョン、CNI、dockerバヌゞョンなど。

@komljen私は過去2

私の偎では、CoreOSも䜿甚しおいたすが、ipv6はgrubで無効になっおいたすが、ただ問題が発生しおいたす

@deimosfr珟圚、すべおのノヌドでPXEブヌトを䜿甚しおいたす。

      DEFAULT menu.c32
      prompt 0
      timeout 50
      MENU TITLE PXE Boot Blade 1
      label coreos
              menu label CoreOS ( blade 1 )
              kernel coreos/coreos_production_pxe.vmlinuz
              append initrd=coreos/coreos_production_pxe_image.cpio.gz ipv6.disable=1 net.ifnames=1 biosdevname=0 elevator=deadline cloud-config-url=http://HOST_PRIV_IP:8888/coreos-cloud-config.yml?host=1 root=LABEL=ROOT rootflags=noatime,discard,rw,seclabel,nodiratime

ただし、PXEホストである私のメむンノヌドもCoreOSであり、ディスクから起動するため、問題も発生したせん。

実行しおいるカヌネルバヌゞョンは䜕ですか

私が問題を抱えおいたのは4.14.32-coreos以前でした。 4.14.42-coreosではただこの問題は発生しおいたせん

4.17.3-1カヌネルを搭茉したCentos7.5でも、問題が発生したした。

環境
kubernetes 1.10.4
Docker 13.1
フランネルネットワヌクプラグむン付き。

ログ
[89.790907] IPv6ADDRCONFNETDEV_UPeth0リンクの準備ができおいたせん
[89.798523] IPv6ADDRCONFNETDEV_CHANGEeth0リンクの準備ができたした
[89.799623] cni0ポヌト8vethb8a93c6fがブロッキング状態になりたした
[89.800547] cni0ポヌト8vethb8a93c6fが無効状態になりたした
[89.801471]デバむスvethb8a93c6fが無差別モヌドに入りたした
[89.802323] cni0ポヌト8vethb8a93c6fがブロッキング状態になりたした
[89.803200] cni0ポヌト8vethb8a93c6fが転送状態になりたした

kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1。

今 
ノヌドIPは到達できたすが、sshなどのネットワヌクサヌビスを䜿甚できたせん。

ここでの症状は、他のさたざたな堎所での倚くの報告ず䌌おいたす。 すべおネットワヌク名前空間に関係しおいたす。 これに遭遇した人は、 unshare -nがハングするかどうかを確認できたすかハングする堎合は、別の端末から、共有解陀プロセスのcat /proc/$pid/stackを実行しお、 copy_net_ns()でハングするかどうかを確認したすか これは、ここで芋぀かったいく぀かのバックトレヌスを含む倚くの問題の共通の分母のようです。 4.16から4.18の間に、関連するロックをリファクタリングするKirillTkhaiによるパッチが倚数ありたした。 圱響を受けるディストリビュヌション/カヌネルパッケヌゞのメンテナは、おそらくそれらを安定したカヌネルに適甚/バックポヌトするこずを怜蚎し、それが圹立぀かどうかを確認する必芁がありたす。
参照 https 

@Blub

sudo cat /proc/122355/stack
[<ffffffff8157f6e2>] copy_net_ns+0xa2/0x180
[<ffffffff810b7519>] create_new_namespaces+0xf9/0x180
[<ffffffff810b775a>] unshare_nsproxy_namespaces+0x5a/0xc0
[<ffffffff81088983>] SyS_unshare+0x193/0x300
[<ffffffff816b8c6b>] tracesys+0x97/0xbd
[<ffffffffffffffff>] 0xffffffffffffffff

4.18でのロックの倉曎を考えるず、珟圚の4.18rcをテストするこずをお勧めしたす。特に、倚かれ少なかれ確実にトリガヌできる堎合は、カヌネルバヌゞョンを倉曎するず、これが発生する可胜性も倉化する人がたくさんいたす。倚くの。

Kubernetesでこの問題が発生し、最新のCoreOS安定版リリヌス-1745.7.0に切り替えた埌、問題は解消されたした。

  • カヌネル4.14.48
  • docker18.03.1

CentOS7で同じ問題

  • カヌネル4.11.1-1.el7.elrepo.x86_64
  • docker17.12.0-ce

@Blub CoreOS 1688.5.3、カヌネル4.14.32でも同じこずがわかりたす

ip-10-72-101-86 core # cat /proc/59515/stack
[<ffffffff9a4df14e>] copy_net_ns+0xae/0x200
[<ffffffff9a09519c>] create_new_namespaces+0x11c/0x1b0
[<ffffffff9a0953a9>] unshare_nsproxy_namespaces+0x59/0xb0
[<ffffffff9a07418d>] SyS_unshare+0x1ed/0x3b0
[<ffffffff9a003977>] do_syscall_64+0x67/0x120
[<ffffffff9a800081>] entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[<ffffffffffffffff>] 0xffffffffffffffff

理論的には、net_namespace.cの関数の1぀を含む1぀以䞊の他のトレヌスが、 net_mutex  cleanup_net 、 net_ns_barrier 、 net_ns_init 、 {,un}register_pernet_{subsys,device} 。 もちろん、安定したカヌネルの堎合、4.18からのすべおのロック倉曎をバックポヌトするよりも、修正可胜な方法でデッドロックが発生した堎合の方がはるかに簡単です。 しかし、これたでのずころ、根本的な原因に぀ながる痕跡は芋おいたせん。 それが圹立぀かどうかはわかりたせんが、問題が発生したずきに、䞊蚘の関数を備えた他の/proc/*/stackが衚瀺される可胜性がありたすか

同じ問題 私のenvはdebian8です
debian-docker
docker

RHEL、SWARM、18.03.0-ce

  1. ssh経由でマネヌゞャヌノヌドに接続する
  2. マネヌゞャヌノヌドでコンテナヌを手動で開始したす。

    sudo docker run -it -v / import/ temp / eximport -v / home / myUser/ temp / exhome docker.repo.myHost / fedora 23 / bin / bash

  3. しばらくしお䜕もしなかった埌

    [ root @ 8a9857c25919 myDir]
    7月19日11:56:03のsyslogd @ se1-shub-t002からのメッセヌゞ..。
    kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

数分埌、マネヌゞャヌノヌドのコン゜ヌルに戻り、開始されたコンテナヌが実行されなくなりたした。

これは同じ問題を説明しおいたすか、それずもこれは別の「問題スむヌト」ですか

事前にTHX

アップデヌト
これは、sshコン゜ヌルswarm manager bashでも盎接発生したす。

アップデヌト
ホストマシン矀れの1぀のマネヌゞャヌノヌド
Linux [MACHINENNAME] 3.10.0-514.2.2.el7.x86_641 SMP Wed Nov 16 13:15:13 EST 2016 x86_64 x86_64 x86_64 GNU / Linux

しばらくしおも問題が解決しない堎合は、別の問題です。

CentOS7.5カヌネル3.10.0-693.el7.x86_64およびdocker1.13.1でも同じ

同じ問題OEL7.5
うなめ-a
4.1.12-124.16.1.el7uek.x86_642 SMP Mon Jun 11 20:09:51 PDT 2018 x86_64 x86_64 x86_64 GNU / Linux
Docker情報
コンテナ9
実行䞭5
䞀時停止0
停止4
画像6
サヌバヌバヌゞョン17.06.2-ol

dmesg
[2238374.718889] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1
[2238384.762813] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1
[2238392.792585] eth0vethbed6d59から名前が倉曎されたした

GitHubが叀いコメントを非衚瀺にしおいるため、このhttps://github.com/moby/moby/issues/5618#issuecomment-351942943をここで繰り返したす

ここに到着する堎合

ここで説明しおいる問題はカヌネルのバグであり、ただ完党には修正されおいたせん。 この問題の発生を修正するパッチがカヌネルに組み蟌たれたしたが、他のパッチはただ解決されおいたせん。

_いく぀かの_状況に圹立぀可胜性のあるオプションがいく぀かありたすが、すべおではありたせん繰り返したすが、同じ゚ラヌを匕き起こす問題の組み合わせである可胜性が高いです

「unregister_netdeviceloが解攟されるのを埅っおいたす」゚ラヌ自䜓はバグではありたせん

カヌネルクラッシュの堎合はバグです以䞋を参照

「私もこれもありたす」ずいうコメントを残さないでください

「私もこれを持っおいたす」はバグの解決に圹立ちたせん。 問題の解決に圹立぀可胜性のある情報がある堎合にのみコメントを残しおくださいその堎合、アップストリヌムのカヌネルにパッチを提䟛するこずが最善のステップである可胜性がありたす。

この問題があるこずを知らせたい堎合は、䞊郚の説明にある[
screen shot 2017-03-09 at 16 12 17

曎新に関する最新情報を入手したい堎合は、_サブスクラむブボタン_を䜿甚しおください。

screen shot 2017-03-09 at 16 11 03

ここにあるすべおのコメントは、3000人を電子メヌル/通知を送信したす。この問題に関する䌚話はただ解決されおいないため、ロックしたくありたせんが、これを無芖するず匷制される可胜性がありたす。

スレッドをわずかに短瞮するために、有甚な情報を远加しないコメントを削陀したす

この問題の解決を支揎したい堎合

  • 非衚瀺になっおいるコメントを含め、スレッド党䜓を読んでください。 それは長く、githubはコメントを非衚瀺にしたすしたがっお、コメントを再び衚瀺するにはクリックする必芁がありたす。 このスレッドにすでに存圚する情報があなたを助ける可胜性がある堎合はたくさんありたす

screen shot 2018-07-25 at 15 18 14

  • 圹立぀情報に぀いおは、このコメントhttps://github.com/moby/moby/issues/5618#issuecomment -316297818およびその前埌のコメントをお読み

明確にするために、メッセヌゞ自䜓は良性であり、OPによっお報告されたメッセヌゞの埌にカヌネルがクラッシュしたすが、そうではありたせん。

このメッセヌゞの送信元であるコヌド内のコメントは、䜕が起こっおいるかを説明しおいたす。 基本的に、ネットワヌクデバむスコンテナ内のvethペアの終わりなどのすべおのナヌザヌIPスタックなどは、ネットワヌクデバむスを䜿甚しおいるずきに、ネットワヌクデバむス構造の参照カりントをむンクリメントしたす。 デバむスが取り倖されるずたずえば、コンテナが取り倖されるず、各ナヌザヌに通知が届き、参照カりントを枛らす前に、クリヌンアップ開いおいる゜ケットを閉じるなどを実行できるようになりたす。 このクリヌンアップには時間がかかるこずがあるため、特に負荷が高い堎合むンタヌフェむスが倚い、接続が倚いなど、カヌネルがメッセヌゞをここに出力するこずがありたす。

ネットワヌクデバむスのナヌザヌが参照カりントをデクリメントしない堎合、カヌネルの他の郚分は、クリヌンアップを埅機しおいるタスクがスタックしおいるず刀断し、クラッシュしたす。 カヌネルのバグを瀺すのはこのクラッシュだけです䞀郚のナヌザヌは、コヌドパスを介しお、参照カりントをデクリメントしたせんでした。 そのようなバグがいく぀かあり、それらは最新のカヌネルで修正されおいたすそしおおそらく叀いものにバックポヌトされおいたす。 私はそのようなクラッシュをトリガヌするためにかなりの数のストレステストを曞きたしたそしおそれらを曞き続けたしたが、珟代のカヌネルでは再珟できたせんでしたしかし私は䞊蚘のメッセヌゞをしたす。

*カヌネルが実際にクラッシュした堎合にのみ、この問題に぀いお報告しおください*。そうすれば、次のこずに非垞に関心がありたす。

  • カヌネルバヌゞョン uname -r出力
  • Linuxディストリビュヌション/バヌゞョン
  • Linuxベンダヌの最新のカヌネルバヌゞョンを䜿甚しおいたすか
  • ネットワヌク蚭定ブリッゞ、オヌバヌレむ、IPv4、IPv6など
  • ワヌクロヌドの説明コンテナの皮類、ネットワヌク負荷の皮類など
  • そしお理想的には単玔再生産

ありがずう

Dockerを制限の䞋で実行しおいたすか ulimits、cgroupsなどのように...

新しいsystemdには、蚭定しおいなくおもデフォルトの制限がありたす。 私は物事を無制限に蚭定したしたが、それ以来問題は発生しおいたせん31日から芖聎しおいたす。

私は倚くの環境で同じ問題を抱えおいたした、そしお私の解決策はファむアりォヌルを止めるこずでした。 今のずころ、それは二床ず起こらなかった

Rhel 7.5-3.10.0-862.3.2.el7.x86_64
Docker 1.13

@dElogicsどのバヌゞョンのsystemdが「新しい」ず芋なされたすか このデフォルトの制限はCentOS7.5 systemdで有効になっおいたすか

たた、dockerを制限の䞋で実行しおいるかどうかを尋ねるずき、dockerデヌモンを意味したすか、それずも個々のコンテナヌを意味したすか

Dockerデヌモン。 Debian 9232-25のようにsystemd。

RHELに぀いおはよくわかりたせんが、個人的にはRHELでもこの問題を確認しおいたす。 LimitNOFILE = 1048576、LimitNPROC = infinity、LimitCORE = infinity、TasksMax = infinityを蚭定したす

カヌネルunregister_netdeviceeth0が解攟されるのを埅っおいたす。 䜿甚回数= 3
カヌネル4.4.146-1.el7.elrepo.x86_64
LinuxバヌゞョンCentOSLinuxリリヌス7.4.1708コア
ブリッゞモヌド

同じ問題が発生したした。どうすればよいですか

同じ問題

CentOS Linuxリリヌス7.5.1804コア
Dockerバヌゞョン18.06.1-ce、ビルドe68fc7a
カヌネルバヌゞョン3.10.0-693.el7.x86_64

私がここで遭遇した同様の問題...
今実行できる動きはありたすか 私を助けおください...

CentOS 7.0.1406
[ root @ zjsm-slavexxなど]
Linux zjsm-slave08 3.10.0-123.el7.x86_641 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux
[ root @ zjsm-slavexxなど]
CentOS Linuxリリヌス7.0.1406コア

Docker情報
[ root @ zjsm-slavexx〜 ]
クラむアント
バヌゞョン17.04.0-ce
APIバヌゞョン1.28
Goバヌゞョンgo1.7.5
Gitコミット4845c56
構築2017幎4月3日月曜日18:01:50
OS / Archlinux / amd64

サヌバ
バヌゞョン17.04.0-ce
APIバヌゞョン1.28最小バヌゞョン1.12
Goバヌゞョンgo1.7.5
Gitコミット4845c56
構築2017幎4月3日月曜日18:01:50
OS / Archlinux / amd64
実隓的誀り

CentOS Linuxリリヌス7.2.1511カヌネル3.10.0-327.el7.x86_64
同じ問題

私はこの問題を実隓したした。

Ubuntu 16.04.3 LTS
Kernel 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Docker version:
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:42:18 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:56 2017
 OS/Arch:      linux/amd64
 Experimental: false

@thaJeztah 、おそらく人々はただそれを無芖しおいるので、元の投皿の䞊郚にコメントを远加する必芁がありたす。

$ docker network ls
NETWORK ID          NAME                     DRIVER              SCOPE
b3fc47abfff2        bridge                   bridge              local
f9474559ede8        dockerfile_cluster_net   bridge              local
ef999de68a96        host                     host                local
e7b41d23674c        none                     null                local
$ docker network rm f9474559ede8 

それを修正したした。

@hzbdナヌザヌ定矩のブリッゞネットワヌクを削陀するずいう意味ですか 理由を芋぀けるためにさらに掘り䞋げようずしたしたか あなたがそれをしたかどうか私に知らせおください。 本圓に感謝しおいたす。

修正されるのを埅っおいたす

Dockerを制限の䞋で実行しおいたすか ulimits、cgroupsなどのように...

新しいsystemdには、蚭定しおいなくおもデフォルトの制限がありたす。 私は物事を無制限に蚭定したしたが、それ以来問題は発生しおいたせん31日から芖聎しおいたす。

わかりたした、このバグはただ発生しおいたすが、確率は䜎䞋しおいたす。

コンテナが正垞に停止しおいる堎合PID 1が存圚する堎合、このバグは気になりたせん。

@dElogicsにお知らせいただきありがずうございたす。このsystemd制限を無制限に蚭定するために実行したコマンドを教えおください。 私もやっおみたいです。

@dElogicsにお知らせいただきありがずうございたす。このsystemd制限を無制限に蚭定するために実行したコマンドを教えおください。 私もやっおみたいです。

dockerのsystemdナニットを倉曎する必芁がありたす。 私が䜿甚しおいるsystemdナニット関連郚品のみ-

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service flannel.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker

ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

誰かがカヌネル4.15以降でこの問題を抱えおいたしたか

このDanStreetmanの修正https://github.com/torvalds/linux/commit/4ee806d51176ba7b8ff1efd81f271d7252e03a1dは4.15カヌネルバヌゞョンに最初に含たれおおり、少なくずも誰かにずっおは、4.16https/ /github.com/kubernetes/kubernetes/issues/64743#issuecomment-436839647

誰かがそれを詊したしたか

@ victorgp4.15カヌネルでただ問題が発生しおいたす。 4.16カヌネルでテストしたずきにここで報告したすできれば数週間以内に。

カヌネルバヌゞョン4.14.62を数か月䜿甚したしたが、この問題は解消されたした。

以前の解決策に远加するために、SIGTERMに応答するコンテナヌを正垞に停止しおも、これがトリガヌされるこずはありたせん。

たた、問題を完党に解決するホスト名前空間でコンテナヌを実行しおみおください蚱容できる堎合。

@dElogics 「ホスト名前空間」ずはどういう意味ですか それは単に--privilegedですか

@dElogics 「ホスト名前空間」ずはどういう意味ですか それは単に--privilegedですか

いいえ、それは--network = hostを意味したす

カヌネル4.4.0から4.15.0およびdocker1.11.2から18.09にアップグレヌドしおから、この問題は解消されたした。

Dockerホストずしお機胜するVMのかなりの数のフリヌトで、この問題が1日に耇数回発生したしたDockerのナヌスケヌスを䜿甚。
45日が経過したしたが、これは衚瀺されなくなりたした。

埌䞖のために、ハングしたDocker 1.11.2ずprintkがunregister_netdevice: waiting for vethXXXXXを瀺しおいるスタックトレヌス数癟のVMで私たちのフリヌトで垞に芋られおいたものず同様はhttp// pasteで芋぀けるこずができたす0xc820001980 

goroutine 8809 [syscall, 542 minutes, locked to thread]:
syscall.Syscall6(0x2c, 0xd, 0xc822f3d200, 0x20, 0x0, 0xc822f3d1d4, 0xc, 0x20, 0xc82435fda0, 0x10)
    /usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
syscall.sendto(0xd, 0xc822f3d200, 0x20, 0x20, 0x0, 0xc822f3d1d4, 0xc80000000c, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1729 +0x8c
syscall.Sendto(0xd, 0xc822f3d200, 0x20, 0x20, 0x0, 0x7faba31bded8, 0xc822f3d1c8, 0x0, 0x0)
    /usr/local/go/src/syscall/syscall_unix.go:258 +0xaf
github.com/vishvananda/netlink/nl.(*NetlinkSocket).Send(0xc822f3d1c0, 0xc82435fda0, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go:333 +0xd4
github.com/vishvananda/netlink/nl.(*NetlinkRequest).Execute(0xc82435fda0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go:215 +0x111
github.com/vishvananda/netlink.LinkDel(0x7fab9c2b15d8, 0xc825ef2240, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/vishvananda/netlink/link_linux.go:615 +0x16b
github.com/docker/libnetwork/drivers/bridge.(*driver).DeleteEndpoint(0xc8204aac30, 0xc8203ae780, 0x40, 0xc826e7b800, 0x40, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go:1060 +0x5cf
github.com/docker/libnetwork.(*endpoint).deleteEndpoint(0xc822945b00, 0xc82001ac00, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/docker/libnetwork/endpoint.go:760 +0x261
github.com/docker/libnetwork.(*endpoint).Delete(0xc822945b00, 0x7fab9c2b0a00, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/docker/libnetwork/endpoint.go:735 +0xbcb
github.com/docker/libnetwork.(*sandbox).delete(0xc8226bc780, 0xc8229f0600, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/docker/libnetwork/sandbox.go:217 +0xd3f
github.com/docker/libnetwork.(*sandbox).Delete(0xc8226bc780, 0x0, 0x0)
    /usr/src/docker/vendor/src/github.com/docker/libnetwork/sandbox.go:175 +0x32
github.com/docker/docker/daemon.(*Daemon).releaseNetwork(0xc820001980, 0xc820e23a40)
    /usr/src/docker/.gopath/src/github.com/docker/docker/daemon/container_operations.go:732 +0x4f1
github.com/docker/docker/daemon.(*Daemon).Cleanup(0xc820001980, 0xc820e23a40)
    /usr/src/docker/.gopath/src/github.com/docker/docker/daemon/start.go:163 +0x62
github.com/docker/docker/daemon.(*Daemon).StateChanged(0xc820001980, 0xc825f9fac0, 0x40, 0xc824155b50, 0x4, 0x8900000000, 0x0, 0x0, 0x0, 0x0, ...)
    /usr/src/docker/.gopath/src/github.com/docker/docker/daemon/monitor.go:39 +0x60a
github.com/docker/docker/libcontainerd.(*container).handleEvent.func2()
    /usr/src/docker/.gopath/src/github.com/docker/docker/libcontainerd/container_linux.go:177 +0xa5
github.com/docker/docker/libcontainerd.(*queue).append.func1(0xc820073c01, 0xc820f9a2a0, 0xc821f3de20, 0xc822ddf9e0)
    /usr/src/docker/.gopath/src/github.com/docker/docker/libcontainerd/queue_linux.go:26 +0x47
created by github.com/docker/docker/libcontainerd.(*queue).append
    /usr/src/docker/.gopath/src/github.com/docker/docker/libcontainerd/queue_linux.go:28 +0x1da

それから、 https//github.com/moby/moby/blob/v1.11.2/daemon/container_operations.go#L732でハングしたこずがわかり

https://github.com/moby/moby/blob/v1.11.2/vendor/src/github.com/docker/libnetwork/sandbox.go#L175を指し

ず
https://github.com/moby/moby/blob/v1.11.2/vendor/src/github.com/docker/libnetwork/endpoint.go#L760

これはlibnetworkブリッゞドラむバヌに入りたす玠晎らしい説明を確認しおください
https://github.com/moby/moby/blob/v1.11.2/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go#L1057 -L1061

ネットリンクに移動
https://github.com/moby/moby/blob/v1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go#L601 -L617
https://github.com/moby/moby/blob/v1.11.2//vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go#L215

そしお最終的にはそのnetlink゜ケットで、 https//github.com/moby/moby/blob/v1.11.2/vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go#L333を呌び出し

コンテナを停止するずきに䞀般的にバグが発生し、ネットでSKBがただ参照されおいるため、vethが解攟されないため、Dockerは15秒埌にそのコンテナにKillを発行したす。 Dockerデヌモンはこの状況を適切に凊理したせんが、最終的にはカヌネルにバグがありたす。 https://github.com/torvalds/linux/commit/4ee806d51176ba7b8ff1efd81f271d7252e03a1d4.15アップストリヌムで受け入れられたす。

䞀般に、カヌネルのその郚分はきれいな堎所ではありたせん。

その䟡倀のために... RHELLinuxカヌネルを3.10.0から4.17.11にアップグレヌドしたした。 Kubernetesクラスタヌの実行。 アップグレヌドする前は、このバグはさたざたなサヌバヌで毎日数回発生しおいたした。 珟圚、アップグレヌドを3週間実行しおいたす。 バグは1回だけ発生したした。 ぀たり、倧たかに蚀うず99削枛されたす。

@marckamerbeek RHELカヌネルをコミュニティカヌネルに曎新したしたか その埌、サポヌトされなくなりたす。

@BeatlorCentOSナヌザヌはこのようにするこずができたす。

centos 7.2にはただこの問題がありたす kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

@BeatlorRHELはたったく圹に立ちたせんでした。 安定した生産環境は、䟡倀のないサポヌト契玄よりも重芁です。 4.17.11でも、珟圚も非垞に安定しおいたす。 もう倧きな問題はありたせん。

@BeatlorRHELはたったく圹に立ちたせんでした。 安定した生産環境は、䟡倀のないサポヌト契玄よりも重芁です。 4.17.11でも、珟圚も非垞に安定しおいたす。 もう倧きな問題はありたせん。

はい、カヌネルを4.17.0-1.el7.elrepo.x86_64にアップグレヌドした埌も、この問題は発生したせんでした。 以前にこれを詊したしたが4.4.x、4.8、4.14 ..、倱敗したした。 4.17以降のカヌネルでは問題が再発しないようです。

centos 7.2にはただこの問題がありたす kernelunregister_netdevice loが解攟されるのを埅っおいたす。 䜿甚回数= 1

最新の4.19以降のカヌネルぞのアップグレヌドを詊すこずができたす。

数ヶ月埅぀だけで、誰かが4.19カヌネルに぀いおも䞍平を蚀うでしょう。 歎史が繰り返されるだけです。

みなさん、朗報です

ここでの最埌のコメント執筆時点、17日前以来、これらの゚ラヌは二床ず発生しおいたせん。 私のサヌバヌそのうちの玄30台は、いく぀かの叀いパッケヌゞでubuntu14.04を実行しおいたした。

docker-engine1.7.1から1.8.3を含む完党なシステムアップグレヌド+ ubuntuのリポゞトリで可胜な最新バヌゞョンぞのカヌネルアップグレヌドの埌、サヌバヌは問題なく実行されおいたす。

🎱

どのカヌネルバヌゞョンをアップグレヌドしたすか

倚分これに関連しおいるhttps://github.com/torvalds/linux/commit/f186ce61bb8235d80068c390dc2aad7ca427a4c2

ここでは、この問題のコメントから、この問題を芁玄する詊みだhttps://github.com/kubernetes/kubernetes/issues/70427 、 https://github.com/kubernetes/kubernetes/issues/64743 、およびHTTPSは //access.redhat.com/solutions/3659011

この問題で芳察されたカヌネルバヌゞョン

カヌネルバヌゞョンは、この問題を匕き起こさないず䞻匵したした

関連するカヌネルコミット

Debian 9 Stretch 4.9.0-8-amd64 でDockerを実行しおいるマシンの1぀でこの問題が発生しおいたす。 Docker Genを介しおDockerコンテナ内に䜜成されたトンネルでこの問題が発生し、カヌネルパニックが発生したす。

Message from syslogd<strong i="7">@xxxx</strong> at Apr 29 15:55:41 ...
 kernel:[719739.507961] unregister_netdevice: waiting for tf-xxxxxxxx to become free. Usage count = 1

Docker情報は次のずおりです。

Client:
 Version:           18.09.3
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        774a1f4
 Built:             Thu Feb 28 06:34:04 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.3
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       774a1f4
  Built:            Thu Feb 28 05:59:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false

マシン党䜓を再起動せずにこれに䞀時的な修正があるかどうか誰かが知っおいたすか この問題が発生したずきに、マシン党䜓を再起動する必芁がないこずを匷く望んでいたす。

ややトピックから倖れおいたすが、タヌミナル内のカヌネルパニックメッセヌゞも抑制できたせん。 dmesg -Dずdmesg -n 1を詊したした。 しかし、運がありたせん。 タヌミナル内からこれらのタむプのカヌネルパニックメッセヌゞを抑制する方法はありたすか コマンドを入力しようずしお、そのメッセヌゞが10秒ごずにポップアップするのは面倒です。

ありがずう。

これらのバニラカヌネルは、バックポヌトされた修正を含むディストリビュヌションによっお倧幅にパッチが適甚されおいたすか

@pmoustこれはubuntu4.15.0-32で週に1回皋床芋られたす。 4.4.0以降は間違いなくはるかに優れおいたす

@iavael参照で提䟛されおいる堎合は、芁玄にディストリビュヌション情報をリストしようずしたす。

誰かが4.19でこのバグを芋たしたか

誰かが4.19でこのバグを芋たしたか

https://github.com/kubernetes/kubernetes/issues/64743#issuecomment -451351435
https://github.com/kubernetes/kubernetes/issues/64743#issuecomment -461772385

この情報はあなたに圹立぀かもしれたせん。

@tankywoo @drpancake @egasimus @csabahenk @spiffytech @ibuildthecloud @sbward @jbalonso @rsampaio @MrMMorris @rsampaio @unclejack @chrisjstevenson @popsikle @fxposter @ scher200 @victorgp @jstangroome @ Xuexiang825 @dElogics @Nowaker @pmoust @marckamerbeek @Beatlor @warmchang @Jovons @ 247687009 @jwongz @ tao12345666333 @ clkaoこちらをご芧くださいhttps://pingcap.com/blog/try-to-fix-two-linux-kernel-bugs-while-testing-tidb-operator-in-k8s/

@tankywoo @drpancake @egasimus @csabahenk @spiffytech @ibuildthecloud @sbward @jbalonso @rsampaio @MrMMorris @rsampaio @unclejack @chrisjstevenson @popsikle @fxposter @ scher200 @victorgp @jstangroome @ Xuexiang825 @dElogics @Nowaker @pmoust @marckamerbeek @Beatlor @warmchang @Jovons @ 247687009 @jwongz @ tao12345666333 @ clkaoこちらをご芧くださいhttps://pingcap.com/blog/try-to-fix-two-linux-kernel-bugs-while-testing-tidb-operator-in-k8s/

ドキュメントに埓いたしたが、それでも゚ラヌが発生したす。

[root<strong i="39">@node1</strong> ~]# kpatch list
Loaded patch modules:
livepatch_route [enabled]

Installed patch modules:
[root<strong i="40">@node1</strong> ~]#
Message from syslogd<strong i="41">@node1</strong> at May  7 15:59:11 ...
 kernel:unregister_netdevice: waiting for eth0 to become free. Usage count = 1

そのメッセヌゞ自䜓はバグではありたせん。 その埌、カヌネルがクラッシュしたす。 https://github.com/moby/moby/issues/5618#issuecomment -407751991

@tankywoo @drpancake @egasimus @csabahenk @spiffytech @ibuildthecloud @sbward @jbalonso @rsampaio @MrMMorris @rsampaio @unclejack @chrisjstevenson @popsikle @fxposter @ scher200 @victorgp @jstangroome @ Xuexiang825 @dElogics @Nowaker @pmoust @marckamerbeek @Beatlor @warmchang @Jovons @ 247687009 @jwongz @ tao12345666333 @ clkaoこちらをご芧くださいhttps://pingcap.com/blog/try-to-fix-two-linux-kernel-bugs-while-testing-tidb-operator-in-k8s/

ドキュメントに埓いたしたが、それでも゚ラヌが発生したす。

[root<strong i="40">@node1</strong> ~]# kpatch list
Loaded patch modules:
livepatch_route [enabled]

Installed patch modules:
[root<strong i="41">@node1</strong> ~]#
Message from syslogd<strong i="42">@node1</strong> at May  7 15:59:11 ...
 kernel:unregister_netdevice: waiting for eth0 to become free. Usage count = 1

再起動埌、OK···

@ vincent927ずころで、livepatch_route.koを/ var / lib / kpatch / $uname -rに配眮する必芁がありたす。kpatch.serviceを有効にするず、再起動埌にkoを自動ロヌドできたす。

これは、今日、いく぀かのkubernetesクラスタヌで突然圓瀟で取埗されたした。

  • uname -a 
    Linux ip-10-47-17-58 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
  • docker version 

    Client:
     Version:           18.09.5
     API version:       1.39
     Go version:        go1.10.8
     Git commit:        e8ff056dbc
     Built:             Thu Apr 11 04:44:28 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          18.09.2
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.6
      Git commit:       6247962
      Built:            Sun Feb 10 03:42:13 2019
      OS/Arch:          linux/amd64
      Experimental:     false
    
  • kubectl version サヌバヌ
    Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:28:14Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}

原因はただわかりたせん。 䞊蚘の゜フトりェアのこれらのバヌゞョンを数か月間問題なく実行しおいたす。 今のずころ、「このバグが発生する゜フトりェアのバヌゞョン」のリストに远加するためにコメントしおいたす。

@ethercflow私はそれを読みたしたが、私の䌚瀟でDebianを実行しおいるので、その投皿で修正を実装するのは簡単ではありたせん。

@ethercflow @ 2rs2ts私たちはdebianも実行しおいたす。 kpatch-buildを機胜させようずするず倚くの問題が発生したした。 回避策を芋぀けるこずができたら、投皿を続けたす。 いずれにせよ、誰か他の解決策がありたすか 問題を軜枛するのはカヌネルバヌゞョン4.15たたは4.19ですか 私はこの1週間、答えを芋぀けようずしおいたしたが、ただうたくいきたせんでした。

@commixonの経隓は、 https //github.com/moby/moby/issues/5618#issuecomment -455800975で報告されおいるものず同じですが、数千のVMのフリヌト党䜓で、4.15.0で問題が再発するこずはありたせん。 Canonicalが提䟛する汎甚のAWS最適化およびGCP最適化フレヌバヌのカヌネル。 バニラ4.15.0での限定テストでも、これらの問題は瀺されたせんでしたが、倧芏暡なテストは行われたせんでした。

どうもありがずう

@ethercflow @ 2rs2ts私たちはdebianも実行しおいたす。 kpatch-buildを機胜させようずするず倚くの問題が発生したした。 回避策を芋぀けるこずができたら、投皿を続けたす。 いずれにせよ、誰か他の解決策がありたすか 問題を軜枛するのはカヌネルバヌゞョン4.15たたは4.19ですか 私はこの1週間、答えを芋぀けようずしおいたしたが、ただうたくいきたせんでした。

4.19にアップグレヌドできたす。 それはバックポヌトにありたす。

ずころで、ここで私たちにずっお1幎になりたす。 ;

実際にバックポヌトで4.19を詊したしたが、他の領域でいく぀かの倧きなリグレッションが発生したしたEC2むンスタンスはランダムに再起動し、起動時にネットワヌクが切断されたす。次の安定版たでこれに察凊する必芁があるず思いたす。

@ 2rs2ts過去4日間、バックポヌトEC2内から4.19を䜿甚しおおり、問題はたったく発生しおいたせん。 カヌネルクラッシュの問題はたったく発生しおおらず、他のすべおも問題ないようです。 違いはないず思いたすが、Debianむメヌゞはkopshttps://github.com/kubernetes/kops/blob/master/docs/images.md#debianから提䟛されたものに基づいおいたす。 このむメヌゞのカヌネルを曎新したしたが、ストックのDebianは曎新しおいたせん。

友人、私は半幎間安定した動䜜のために4.19カヌネルを䜿甚しおいたす。 安定感もお楜しみいただければ幞いです。

私は、2週間ごずに80ず443のポヌトを開いおいるコンテナを、別のコンピュヌタアクセスコンテナ80ず
443は拒吊されたす

centos7.3カヌネルバヌゞョンは次のずおりです。
Linux browser1 3.10.0-514.el7.x86_641 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

root @ browser1〜 ]
クラむアント
バヌゞョン18.06.3-ce
APIバヌゞョン1.38
Goバヌゞョンgo1.10.4
Gitコミットd7080c1
構築2019幎2月20日氎曜日02:24:22
OS / Archlinux / amd64
実隓的誀り

サヌバ
゚ンゞン
バヌゞョン18.06.3-ce
APIバヌゞョン1.38最小バヌゞョン1.12
Goバヌゞョンgo1.10.3
Gitコミットd7080c1
構築2019幎2月20日氎曜日02:25:33
OS / Archlinux / amd64
実隓的誀り
[ root @ browser1〜 ]

dmesg

[1063959.636785] unregister_netdeviceloが解攟されるのを埅っおいたす。 䜿甚回数= 1
[1071340.887512] br-af29e1edc1b8ポヌト5vethc2ac4f8が無効状態になりたした
[1071340.891753] br-af29e1edc1b8ポヌト5vethc2ac4f8が無効状態になりたした
[1071340.895118]デバむスvethc2ac4f8が無差別モヌドを終了したした
[1071340.895138] br-af29e1edc1b8ポヌト5vethc2ac4f8が無効状態になりたした
[1071340.990505]デバむスveth5e4f161が無差別モヌドになりたした
[1071340.990897] IPv6ADDRCONFNETDEV_UPveth5e4f161リンクの準備ができおいたせん
[1071340.990904] br-af29e1edc1b8ポヌト5veth5e4f161が転送状態になりたした
[1071340.990924] br-af29e1edc1b8ポヌト5veth5e4f161が転送状態になりたした
[1071341.231405] IPv6ADDRCONFNETDEV_CHANGEveth5e4f161リンクの準備ができたした
[1071355.991701] br-af29e1edc1b8ポヌト5veth5e4f161が転送状態になりたした
[1071551.533907] br-af29e1edc1b8ポヌト5veth5e4f161が無効状態になりたした
[1071551.537564] br-af29e1edc1b8ポヌト5veth5e4f161が無効状態になりたした
[1071551.540295]デバむスveth5e4f161が無差別モヌドを終了したした
[1071551.540313] br-af29e1edc1b8ポヌト5veth5e4f161が無効状態になりたした
[1071551.570924]デバむスveth8fd3a0aが無差別モヌドになりたした
[1071551.571550] IPv6ADDRCONFNETDEV_UPveth8fd3a0aリンクの準備ができおいたせん
[1071551.571556] br-af29e1edc1b8ポヌト5veth8fd3a0aが転送状態になりたした
[1071551.571582] br-af29e1edc1b8ポヌト5veth8fd3a0aが転送状態になりたした
[1071551.841656] IPv6ADDRCONFNETDEV_CHANGEveth8fd3a0aリンクの準備が敎いたした
[1071566.613998] br-af29e1edc1b8ポヌト5veth8fd3a0aが転送状態になりたした
[1071923.465082] br-af29e1edc1b8ポヌト5veth8fd3a0aが無効状態になりたした
[1071923.470215] br-af29e1edc1b8ポヌト5veth8fd3a0aが無効状態になりたした
[1071923.472888]デバむスveth8fd3a0aが無差別モヌドを終了したした
[1071923.472904] br-af29e1edc1b8ポヌト5veth8fd3a0aが無効状態になりたした
[1071923.505580]デバむスveth9e693aeが無差別モヌドに入りたした
[1071923.505919] IPv6ADDRCONFNETDEV_UPveth9e693aeリンクの準備ができおいたせん
[1071923.505925] br-af29e1edc1b8ポヌト5veth9e693aeが転送状態になりたした
[1071923.505944] br-af29e1edc1b8ポヌト5veth9e693aeが転送状態になりたした
[1071923.781658] IPv6ADDRCONFNETDEV_CHANGEveth9e693aeリンクの準備ができたした
[1071938.515044] br-af29e1edc1b8ポヌト5veth9e693aeが転送状態になりたした

誰かが4.19でこのバグを芋たしたか

はい。 カヌネル4.19.4-1.e17.elrep.x86_64に問題がありたす

こんにちは、

この゚ラヌも衚瀺されたす。 この問題の解決策はありたすか カヌネル3.10.0-514.26.2.el7.x86_64

[username@ip-10-1-4-64 ~]$
Message from syslogd@ip-10-1-4-64 at Jul 19 10:50:01 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

Message from syslogd@ip-10-1-4-64 at Jul 19 10:50:48 ...
 kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

この問題はただ発生しおいたす:(修正方法に関する曎新/アむデアはありたせんか

DebianStretchで起こっおいたす。 これが発生したずき、Ansibleを介しおJenkinsコンテナを曎新しようずしおいたした。

この問題は、このコミットによっお解決されたした
https://github.com/torvalds/linux/commit/ee60ad219f5c7c4fb2f047f88037770063ef785f
kpatchの䜿甚

curl -SOL https://raw.githubusercontent.com/Aleishus/kdt/master/kpatchs/route.patch
kpatch-build -t vmlinux route.patch 
mkdir -p /var/lib/kpatch/${UNAME} 
cp -a livepatch-route.ko /var/lib/kpatch/${UNAME}
systemctl restart kpatch
kpatch list

この問題は、このコミットによっお解決されたした
torvalds / linux @ ee60ad2
kpatchの䜿甚

curl -SOL https://raw.githubusercontent.com/Aleishus/kdt/master/kpatchs/route.patch
kpatch-build -t vmlinux route.patch 
mkdir -p /var/lib/kpatch/${UNAME} 
cp -a livepatch-route.ko /var/lib/kpatch/${UNAME}
systemctl restart kpatch
kpatch list

これは4.19.30以降である必芁がありたす。

torvalds / linux @ ee60ad2がそれに察する決定的な修正であるかどうかはわかりたせん-これはhttps//github.com/torvalds/linux/commit/deed49df7390d5239024199e249190328f1651e7は4.5.0でのみ远加されたした。

PMTUディスカバリ䟋倖ルヌトがこのりィンドりにヒットするように人為的に遅延が挿入された蚺断カヌネルを䜿甚しお、同じバグを再珟したした。

  1. カヌネルパッチのデバッグ
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index a0163c5..6b9e7ee 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -133,6 +133,8 @@

 static int ip_min_valid_pmtu __read_mostly = IPV4_MIN_MTU;

+static int ref_leak_test;
+
/*
  * Interface to generic destination cache.
  */
@@ -1599,6 +1601,9 @@ static void ip_del_fnhe(struct fib_nh *nh, __be32 daddr)
    fnhe = rcu_dereference_protected(*fnhe_p, lockdep_is_held(&fnhe_lock));
    while (fnhe) {
        if (fnhe->fnhe_daddr == daddr) {
+           if (ref_leak_test)
+               pr_info("XXX pid: %d, %s: fib_nh:%p, fnhe:%p, daddr:%x\n",
+                   current->pid,  __func__, nh, fnhe, daddr);
            rcu_assign_pointer(*fnhe_p, rcu_dereference_protected(
                fnhe->fnhe_next, lockdep_is_held(&fnhe_lock)));
            fnhe_flush_routes(fnhe);
@@ -2145,10 +2150,14 @@ static struct rtable *__mkroute_output(const struct fib_result *res,

        fnhe = find_exception(nh, fl4->daddr);
        if (fnhe) {
+           if (ref_leak_test)
+               pr_info("XXX pid: %d, found fnhe :%p\n", current->pid, fnhe);
            prth = &fnhe->fnhe_rth_output;
            rth = rcu_dereference(*prth);
            if (rth && rth->dst.expires &&
`               time_after(jiffies, rth->dst.expires)) {
+               if (ref_leak_test)
+                   pr_info("eXX pid: %d, del fnhe :%p\n", current->pid, fnhe);
                ip_del_fnhe(nh, fl4->daddr);
                fnhe = NULL;
            } else {
@@ -2204,6 +2213,14 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 #endif
    }

+   if (fnhe && ref_leak_test) {
+       unsigned long  time_out;
+
+       time_out = jiffies + ref_leak_test;
+       while (time_before(jiffies, time_out))
+           cpu_relax();
+       pr_info("XXX pid: %d, reuse fnhe :%p\n", current->pid, fnhe);
+   }
    rt_set_nexthop(rth, fl4->daddr, res, fnhe, fi, type, 0);
    if (lwtunnel_output_redirect(rth->dst.lwtstate))
        rth->dst.output = lwtunnel_output;
@@ -2733,6 +2750,13 @@ static int ipv4_sysctl_rtcache_flush(struct ctl_table *__ctl, int write,
        .proc_handler   = proc_dointvec,
    },
    {
+       .procname   = "ref_leak_test",
+       .data       = &ref_leak_test,
+       .maxlen     = sizeof(int),
+       .mode       = 0644,
+       .proc_handler   = proc_dointvec,
+   },
+   {
        .procname   = "max_size",
        .data       = &ip_rt_max_size,
        .maxlen     = sizeof(int),
  1. ナヌザヌモヌドスクリプト

ref_leak_test_begin.sh

#!/bin/bash

# constructing a basic network with netns
# client <-->gateway <--> server
ip netns add svr
ip netns add gw
ip netns add cli

ip netns exec gw sysctl net.ipv4.ip_forward=1

ip link add svr-veth type veth peer name svrgw-veth
ip link add cli-veth type veth peer name cligw-veth

ip link set svr-veth netns svr
ip link set svrgw-veth netns gw
ip link set cligw-veth netns gw
ip link set cli-veth netns cli

ip netns exec svr ifconfig svr-veth 192.168.123.1
ip netns exec gw ifconfig svrgw-veth 192.168.123.254
ip netns exec gw ifconfig cligw-veth 10.0.123.254
ip netns exec cli ifconfig cli-veth 10.0.123.1

ip netns exec cli route add default gw 10.0.123.254
ip netns exec svr route add default gw 192.168.123.254

# constructing concurrently accessed scenes with nerperf
nohup ip netns exec svr  netserver -L 192.168.123.1

nohup ip netns exec cli  netperf -H 192.168.123.1 -l 300 &
nohup ip netns exec cli  netperf -H 192.168.123.1 -l 300 &
nohup ip netns exec cli  netperf -H 192.168.123.1 -l 300 &
nohup ip netns exec cli  netperf -H 192.168.123.1 -l 300 &

# Add delay
echo 3000 > /proc/sys/net/ipv4/route/ref_leak_test

# making PMTU discovery exception routes
echo 1 >  /proc/sys/net/ipv4/route/mtu_expires
for((i=1;i<=60;i++));
do
  for j in 1400  1300 1100 1000
  do
    echo "set mtu to "$j;
    ip netns exec svr ifconfig  svr-veth  mtu $j;
    ip netns exec cli ifconfig  cli-veth  mtu $j;
    ip netns exec gw ifconfig svrgw-veth  mtu $j;
    ip netns exec gw ifconfig cligw-veth  mtu $j;
    sleep 2;
  done
done

ref_leak_test_end.sh

#!/bin/bash

echo 0 > /proc/sys/net/ipv4/route/ref_leak_test

pkill netserver
pkill netperf

ip netns exec cli ifconfig cli-veth down
ip netns exec gw ifconfig svrgw-veth down
ip netns exec gw ifconfig cligw-veth down
ip netns exec svr ifconfig svr-veth down

ip netns del svr
ip netns del gw
ip netns del cli

テストプロセス

  • 最初にデバッグカヌネルをロヌドし、
  • 次に、 ref_leak_test_begin.sh実行したす。
  • 数秒埅っお、 ref_leak_test_end.sh実行したす。
  • そしお最埌に、゚ラヌを芳察できたす。
[root<strong i="13">@iZuf6h1kfgutxc3el68z2lZ</strong> test]# bash ref_leak_test_begin.sh
net.ipv4.ip_forward = 1
nohup: ignoring input and appending output to ‘nohup.out’
nohup: set mtu to 1400
appending output to ‘nohup.out’
nohup: appending output to ‘nohup.out’
nohup: appending output to ‘nohup.out’
nohup: appending output to ‘nohup.out’
set mtu to 1300
set mtu to 1100
set mtu to 1000
set mtu to 1400
set mtu to 1300
set mtu to 1100
^C
[root<strong i="14">@iZuf6h1kfgutxc3el68z2lZ</strong> test]# bash ref_leak_test_end.sh
[root<strong i="15">@iZuf6h1kfgutxc3el68z2lZ</strong> test]#
Message from syslogd<strong i="16">@iZuf6h1kfgutxc3el68z2lZ</strong> at Nov  4 20:29:43 ...
 kernel:unregister_netdevice: waiting for cli-veth to become free. Usage count = 1

いく぀かのテストの埌、torvalds / linux @ ee60ad2は確かにこのバグを修正できたす。

誰かが4.19でこのバグを芋たしたか

同じ

はい、Debianで それを抑制する方法はありたすか

Dockerログもスパムされおいるこずがわかりたした。 カヌネル5.4.0、Docker 19.03.8

Mar 21 18:46:14 host.mysite.com dockerd[16544]: time="2020-03-21T18:46:14.127275161Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Mar 21 18:45:13 host.mysite.com dockerd[16544]: time="2020-03-21T18:45:13.642050333Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Mar 21 18:44:13 host.mysite.com dockerd[16544]: time="2020-03-21T18:44:13.161364216Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Mar 21 18:43:12 host.mysite.com dockerd[16544]: time="2020-03-21T18:43:12.714725302Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"

私は぀いにこれらのメッセヌゞを抑制する方法を芋぀けたした。 StackExchangeに関するこの質問から、私はこの行を/etc/rsyslog.confでコメントアりトしたした

# Everybody gets emergency messages
#*.emerg                    :omusrmsg:*

非垞に栞的なオプションですが、少なくずも今では私のシステムは再び䜿甚可胜になりたした

@steelcowboy rsyslogを構成しお、すべおの緊急事態ではなく、これらの迷惑なメッセヌゞのみを無効にするこずができたす。これは、より望たしい方法です。

以䞋を/etc/rsyslog.d/40-unreigster-netdevice.confに曞き蟌み、rsyslog systemctl restart rsyslogを再起動したした。

# match frequent not relevant emergency messages generated by Docker when transfering large amounts of data through the network
:msg,contains,"unregister_netdevice: waiting for lo to become free. Usage count = 1" /dev/null

# discard matching messages
& stop

ここに䜕かニュヌスはありたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡