잘못된 docker 문제 배열 과정을 기록합니다
환경
OS: SUSE Linux Enterprise Server 12 SP2 DOCKER: 1.12.6 KERNEL: 4.4.59-92.20-default RANCHER: v1.6.2
문제
2018년 1월 어느 날, 테스트 환경에서 서버 발견kernel:[1854773.108055] unregister_netdevice: waiting for eth0 to become free. Usage count = 1
임시 해결 방법: reboot
조사 과정
2018년 1월 어느 날, 테스트 환경에서 서버 발견
kernel:[1854773.108055] unregister_netdevice: waiting for eth0 to become free. Usage count = 1
임시 해결 방법: reboot
조사 과정
kernel:[1598.704278] unregister_netdevice: waiting for lo to become free. Usage count = 1
dockerfile을 수정하면 추가 명령
sleep 10
커널 오류 메시지가 나타나지 않습니다. 기다리는 동안 네트워크 연결이 정상적으로 닫혔을 수도 있습니다.
commit edaafa805e0f9d09560a4892790b8e19cab8bf09
Author: Dan Streetman
Date: Thu Jan 18 16:14:26 2018 -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
Signed-off-by: David S. Miller
Signed-off-by: Greg Kroah-Hartman
업그레이드 후 3단계를 다시 시도하여 오류가 발생하지 않음
검증
생산 환경에서 운영체제kernel을 4.4.114로 업그레이드했지만 여전히 문제가 발견되었다.이 가능하다, ~할 수 있다,...eth0?
후속
계속 기다리다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
계속 기다리다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.