বার্নিশ উন্মুক্ত বন্দর, প্রচুর SYN_SENT সংযোগের বাইরে চলে


8

সাম্প্রতিককালে আমরা আমাদের বার্নিশ (3x) -> অ্যাপাচি (3x) সেটআপ নিয়ে সমস্যার মুখোমুখি হয়েছি, যার ফলে SYN_SENTসংযোগগুলি বিশাল আকার ধারণ করেছে ।

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

কিপা-অ্যালাইভস অ্যাপাচি (15 এর) এ সক্ষম হয়।

দোষটি কোন দিকে? ট্র্যাফিকের পরিমাণ উল্লেখযোগ্য, তবে কোনও পরিমাণে এটির জন্য এমন কোনও সেটআপ (3x বার্নিশ ফ্রন্টএন্ড মেশিন, 3x ব্যাকএন্ড অ্যাপাচি সার্ভার) তৈরির স্টল হওয়া উচিত নয়।

সাহায্য করুন.

ফায়ারওয়ালের মাধ্যমে সংযোগের জন্য মুনিন স্ক্রিনশটটি এখানে রয়েছে

বার্নিশ ~$ netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

      9 CLOSE_WAIT
     12 CLOSING
    718 ESTABLISHED
     39 FIN_WAIT1
   1714 FIN_WAIT2
     76 LAST_ACK
     12 LISTEN
    256 SYN_RECV
   6124 TIME_WAIT

/etc/sysctl.conf (বার্নিশ)

net.ipv4.netfilter.ip_conntrack_max = 262144
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_fin_timeout = 30

এ্যাপাচি netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

     11 CLOSE_WAIT
    286 ESTABLISHED
     38 FIN_WAIT2
     14 LISTEN
   7220 TIME_WAIT

/etc/sysctl.conf (অ্যাপাচি)

vm.swappiness=10
net.core.wmem_max = 524288
net.core.wmem_default = 262144
net.core.rmem_default = 262144
net.core.rmem_max = 524288
net.ipv4.tcp_rmem = 4096 262144 524288
net.ipv4.tcp_wmem = 4096 262144 524288
net.ipv4.tcp_mem = 4096 262144 524288

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_keepalive_time = 30

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.core.somaxconn = 2048


net.ipv4.conf.lo.arp_ignore=8
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

vm.swappiness = 0

kernel.sysrq=1
kernel.panic = 30

1
ফায়ারওয়াল কোথায় অবস্থিত? উচ্চ SYN_SENTপরিসংখ্যান সহ একমাত্র সিস্টেম হ'ল ফায়ারওয়াল; আপনি কি বলছেন যে ফায়ারওয়ালটি যেন বাধা?
শেন ম্যাডেন

উচ্চ SYN_SENT সহ ফায়ারওয়ালটি বার্নিশ মেশিনে অবস্থিত।
ব্যবহারকারী150997

এখানে আরও নীতি / কনট্র্যাকের পরিসংখ্যান: গ্র্যাব.বি
ইউজার150997

1
আপনার / proc / sys / নেট / ipv4 / tcp_max_tw_bucket এবং tcp_max_syn_backlog সেট করা কি? (খনিটি 180000 যা 180k সময়-অপেক্ষার এবং 1024 (আরও স্মৃতি উপস্থিত থাকলে বৃদ্ধি))। এছাড়াও, আপনি কেন tw_reयकल চালু করেছেন? ত্রুটি ঘটায় না? (বা এটি পুনর্ব্যবহারযোগ্য?)
গ্রিজলি

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

উত্তর:


3

আপনার সমস্যা সম্ভবত অ্যাপাচি সার্ভারের সিস্টেস্টেলের সাথে।

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

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

দেখে মনে হচ্ছে আপনার অনুরোধগুলি বার্নিশে আটকে যাচ্ছে এবং এটি অ্যাপাচি সার্ভারগুলিতে তৈরি করছে না।

এর জন্য কিছু প্রমাণ রয়েছে:

আপনার মুনিন গ্রাফটিতে লক্ষ্য করুন, SYN_SENT গুলি ব্যাক আপ হওয়ার আগে, TIME_WAIT- র অনুরোধগুলি বাড়বে, তারপরে বিন্দু পরে, তারা SYN_SENTS হিসাবে পাইল করা শুরু করে। এটি সূচিত করে যে অনুরোধগুলি আরও ধীরে ধীরে উত্তর দেওয়া শুরু হয়েছে, তারপরে সারিটি ব্যাক আপ হয়ে যায় এবং অনুরোধগুলি মোটেও উত্তর পায় না।

এটি আমার কাছে ইঙ্গিত করে যে আপনার অ্যাপাচি সার্ভারটি পর্যাপ্ত সংযোগগুলি গ্রহণ করছে না (যেখানে তারা পরে আপাচে তাদের প্রক্রিয়া করার জন্য বসে থাকতে পারে)

আমি আপনার কনফিগার ফাইলে বেশ কয়েকটি সম্ভাব্য সীমা দেখতে পাচ্ছি:

আপনার যখন স্পাইক থাকে তখন আপনার বার্নিশ সার্ভারে SYN_SENT রাজ্যে আপনার প্রায় 30000 সংযোগ থাকে।

তবে অ্যাপাচি সার্ভারে আপনার ম্যাক্স_সিন_ব্লগ রয়েছে মাত্র 16384 Your আপনার সোমেক্সকনটি কেবলমাত্র 2048।

খেয়াল করুন অ্যাপাচি সার্ভারগুলিতে আপনার নেটওয়ার্ক মেমরি বাফারগুলির আকার খুব কম। আপনি এগুলি বার্নিশ সার্ভারে 16 এমবিতে সামঞ্জস্য করেছেন। তবে অ্যাপাচি সার্ভারে আপনার নেট.সিভি.আরমেম_ম্যাক্সের সাথে আপনার নেট.ipv4.tcp_rmemটি কেবল 524KB।

আমি অ্যাপাচি সার্ভারে এই সমস্ত পরামিতি উত্থাপনের প্রস্তাব দিই।

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

আপনার সম্ভবত নেট.আইপিভি 4.tcp_mem সামঞ্জস্য করা উচিত নয়। লক্ষ্য করুন যে এই পরামিতিটির ইউনিটটি পৃষ্ঠাগুলিতে রয়েছে, বাইট নয়, সুতরাং নেট.ipv4.tcp_rmem বা নেট.ipv4.tcp_wmem (উভয় বাইটে) থেকে একই মানটি অনুলিপি করা যায় না। এটি আপনার মেমরির পরিমাণের উপর ভিত্তি করে লিনাক্স দ্বারা স্বয়ংক্রিয়ভাবে সুরযুক্ত তাই এটি খুব কমই সামঞ্জস্যের প্রয়োজন। প্রকৃতপক্ষে এটি আপনার সমস্যা হতে পারে, নির্বিচারে সামগ্রিক সংযোগ সারিবদ্ধের জন্য উপলব্ধ মেমরিটিকে সীমাবদ্ধ করে।

দেখুন: http://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/

এছাড়াও লক্ষ্য করুন আপনার "vm.swappiness = 0" একবার হিসাবে 10 হিসাবে একবার এবং আবার নীচে 0 হিসাবে সেট করা হয়েছে যা কার্যকর মান।


0

ওয়ার্নিশ সার্ভারে, এই 2 টি পরামিতি পরিবর্তন করার চেষ্টা করুন:

net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1

tw_reuse এটিকে TIME_WAIT এ সংযোগগুলি পুনরায় ব্যবহার করার অনুমতি দেবে।

tw_reयकल লোড ব্যালান্সার ইত্যাদিতে সমস্যা সৃষ্টি করতে পারে etc.

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