কীভাবে আমি FIN_WAIT1 রাজ্যে সকেট থেকে মুক্তি পাব?


18

আমার একটি বন্দর রয়েছে যা খুন করার জন্য আমার একটি প্রক্রিয়া অবরুদ্ধ ছিল। (ক্র্যাশ হওয়া একটি সামান্য টেলনেট ডিমন)। প্রক্রিয়াটি সফলভাবে নিহত হয়েছিল তবে বন্দরটি এখনও একটি 'FIN_WAIT1' অবস্থায় রয়েছে। এটি এটি থেকে বেরিয়ে আসে না, এর জন্য সময়সীমাটি 'এক দশকের' সেট হয়ে গেছে বলে মনে হচ্ছে।

আমি বন্দরটি মুক্ত করার একমাত্র উপায় হ'ল পুরো মেশিনটি রিবুট করা, এটি অবশ্যই আমি কিছু করতে চাই না।

$ netstat -tulnap | grep FIN_WAIT1 
tcp        0  13937 10.0.0.153:4000         10.0.2.46:2572          FIN_WAIT1  -

কেউ কি জানেন যে আমি কীভাবে এই পোর্টটি রিবুট না করে অবরোধ মুক্ত রাখতে পারি?

উত্তর:


18
# record what tcp_max_orphans's current value
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)

#set the tcp_max_orphans to 0 temporarily
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans

# watch /var/log/messages
# it will split out "kernel: TCP: too many of orphaned sockets"
# it won't take long for the connections to be killed

# restore the value of tcp_max_orphans whatever it was before. 
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans

# verify with 
netstat -an|grep FIN_WAIT1

2
এটি $whateveritwasওভাররাইট করার আগে প্রথমে নোট তৈরির উত্তরটি উন্নত করবে।
haventchecked

7

আপনার সাথে সময়সীমা নির্ধারণ করতে সক্ষম হওয়া উচিত /proc/sys/net/ipv4/tcp_fin_timeout

ম্যানুয়ালি সকেট সাফ করার কোনও উপায় নেই বলে মনে হচ্ছে।


6
এই উত্তরটি সঠিক নয়। tcp_orphan_retries FIN_WAIT1 কে প্রভাবিত করে, tcp_fin_Toutout FIN_WAIT2 কে প্রভাবিত করে।
সুপ্রজামী

সুপ্রজমিটি সঠিক, tcp_fin_Toutout FIN_WAIT2 প্রভাবিত করে। যা কেবলমাত্র SO_LINGER ব্যবহার করার পরে ট্রিগার করা হয়।
ম্যাট

@ ইন্নাম আপনি দয়া করে এই উত্তরটি সরাতে পারেন? এটি সঠিক নয় এবং ডাউনভোটগুলি জমে। আমি দেখতে পাচ্ছি যে আপনি এখনও সক্রিয় রয়েছেন, সুতরাং উত্তরটি সরিয়ে দেওয়ার পক্ষে এটি সর্বাধিক বুদ্ধিমান মনে হয়েছে।
অ্যান্ড্রু বি

@ অ্যান্ড্রু বি: দেখে মনে হচ্ছে গৃহীত উত্তরগুলি মুছে ফেলা সম্ভব নয়।
ইন্নাম

6

দেখে মনে হচ্ছে tcp_orphan_retries সেটিংটি সার্ভার-কম বন্দর প্রকাশের আগে কত প্রচেষ্টা করা হবে তা নিয়ন্ত্রণ করে। এটি এখানে 0 ছিল, এটি 1 এ সেট করার পরে বন্দরগুলি শেষ হয়ে গেছে।

আছে HTH


1
ঘনিষ্ঠভাবে সম্পর্কিত: 0 একটি ডিফল্ট যার অর্থ 8. সার্ভারফল্ট
অ্যান্ড্রু বি

5

/proc/sys/net/ipv4/tcp_fin_timeoutFIN-WAIT-2 রাজ্যের সময়সীমা, FIN-WAIT-1 নয়। আপনার টিসিপিকিল রুটের সাথে যেতে হবে বা /proc/sys/net/ipv4/tcp_keepalive_*এসও দ্বারা কিল মারতে বাধ্য করার জন্য আপনি রক্ষণশীল সময়ের সাথে খেলার চেষ্টা করতে পারেন ।


2

রুট আইডির অধীনে এই পদক্ষেপগুলি চালানো এবং এটি আমার জন্য সাফ হয়ে গেছে:

ভেরিয়েবল পরিবর্তন করতে কার্নেল সেটিংস ক্যাপচার করুন

$ orig_orphans=$(sysctl -a|grep tcp_max_orph|cut -f3 -d' ')

অস্থায়ীভাবে সর্বোচ্চ এতিমকে 0 এ সেট করুন

$ sysctl -w net.ipv4.tcp_max_orphans=0

সমস্যাযুক্ত বন্দরটি আর ব্যবহারে নেই তা নিশ্চিত করার জন্য চেক করুন

$ netstat -np|grep 9716

কিছুক্ষণ অপেক্ষা করুন এবং উপরের কমান্ডটি কোনও লাইন না ফেরানো পর্যন্ত প্রয়োজন হলে উপরের পদক্ষেপটি পুনরাবৃত্তি করুন

উপরের ভেরিয়েবল থেকে tcp_max_orphans কার্নেল প্যারামিটারটি মূল মানটিতে পুনরায় সেট করুন

$ sysctl -w net.ipv4.tcp_max_orphans=$orig_orphans

হাই, সার্ভারফল্টে আপনাকে স্বাগতম। এই সাইটের অন্যান্য উত্তরের সাথে আপনার উত্তরটির বিন্যাসটি আরও সুসংগত করতে আমি আপনার পোস্ট সম্পাদনা করেছি। আপনার পরবর্তী উত্তরের জন্য দয়া করে এখানে আপনি যতটা শিরোনাম ব্যবহার করবেন না এবং নিজের উত্তরগুলির জন্য অন্য উত্তরগুলি টেম্পলেট হিসাবে নেওয়া বিবেচনা করুন। যদিও আপনার অবদানের জন্য ধন্যবাদ। সার্ভারফল্টে আপনার যাত্রায় উপভোগ করুন।
রিচার্ড

1

FIN_WAIT1

স্থানীয় মেশিনে থাকা অ্যাপ্লিকেশনটি সংযোগটি বন্ধ করে দিয়েছে। এর ইঙ্গিতটি দূরবর্তী মেশিনে প্রেরণ করা হয়েছে।

আপনার অ্যাপ্লিকেশনটি তার সংযোগের দিকটি বন্ধ করে দিয়েছে, সকেট এখন সেই কাছাকাছিটি নিশ্চিত করতে দূরবর্তী পক্ষের জন্য অপেক্ষা করছে। আপনার যদি FIN_WAIT1 এ থাকা সকেটগুলি প্রচুর পরিমাণে নিয়ে সমস্যা হয় তবে আপনার উপরে মান্নির পরামর্শ অনুসরণ করা উচিত।


0

লিনাক্স কার্নেল> = 4.9 এ আপনি ssiproute2 থেকে ক-ক-র সাহায্যে কমান্ডটি ব্যবহার করতে পারেন

ss -K dst 192.168.1.214 dport = 49029 কার্নেলটি CONFIG_INET_DIAG_DESTROY বিকল্প সক্ষম করা দিয়ে সংকলন করতে হবে।

/unix//a/511691/43898 এর মাধ্যমে



-4

এটি সাহায্য করতে পারে:

net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_retries2 = 2
net.ipv4.tcp_orphan_retries = 1
net.ipv4.tcp_reordering = 5
net.ipv4.tcp_retrans_collapse = 0

6
আপনি যদি সেগুলি কী তা ব্যাখ্যা করেন তবে এটি সহায়তা করতে পারে। আমরা পেশাদার, এবং যেমন, আমরা অন্ধভাবে স্টাফগুলিতে আটকান না এবং আশা করি এটি সাহায্য করবে।
মাইকেল হ্যাম্পটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.