কেন আমার ওয়েব সার্ভার টিসিপি রিসেটের সাথে উচ্চ লোডে সংযোগগুলি বাদ দিচ্ছে?


10

আমার সাথে এনজিএনক্সের সাথে একটি ছোট ভিপিএস সেটআপ রয়েছে। আমি যতটা সম্ভব পারফরম্যান্সটি এটি থেকে বের করতে চাই, তাই আমি অপ্টিমাইজেশন এবং লোড টেস্টিং নিয়ে পরীক্ষা-নিরীক্ষা করছি।

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

আমি 2 জিবি লিনোড ভিপিএসে উবুন্টু 14.04 এলটিএস (64-বিট) চালাচ্ছি।

এই গ্রাফটি সরাসরি পোস্ট করার মতো যথেষ্ট খ্যাতি আমার নেই, সুতরাং এখানে ব্লিটজ.ও গ্রাফের লিঙ্ক রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

সমস্যার উত্সটি বের করার চেষ্টা করার জন্য আমি এখানে কাজগুলি করেছি:

  • Nginx কনফিগারেশন মানটি worker_rlimit_nofile8192 এ সেট করা আছে
  • আছে nofileজন্য উভয় হার্ড এবং নরম সীমা জন্য 64000 সেট rootএবং www-dataব্যবহারকারী (কি নামে রানে nginx) এ/etc/security/limits.conf
  • এতে কোনও ভুল হওয়ার কোনও ইঙ্গিত নেই /var/log/nginx.d/error.log(সাধারণত, আপনি যদি ফাইল বর্ণনাকারী সীমাতে চলেছেন তবে এনজিনেক্স ত্রুটি বার্তাগুলি প্রিন্ট করবে)

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

  • এতে কোনও সূচক ত্রুটি নেই /var/log/kern.log
  • এতে কোনও সূচক ত্রুটি নেই /var/log/syslog
  • আমি নিম্নলিখিত মানগুলিতে যুক্ত করেছি /etc/sysctl.confএবং এগুলি sysctl -pকোনও প্রভাব ছাড়াই লোড করেছি :

    net.ipv4.tcp_max_syn_backlog = 1024
    net.core.somaxconn = 1024
    net.core.netdev_max_backlog = 2000
    

কোন ধারনা?

সম্পাদনা: আমি একটি নতুন পরীক্ষা করেছি, খুব ছোট ফাইলটিতে 3000 সংযোগে র‌্যাম্পিং করেছি (মাত্র 3 বাইট)। এখানে ব্লিটজ.ইও গ্রাফ রয়েছে:

Blitz.io গ্রাফ

আবার ব্লিটজ অনুসারে এই সমস্ত ত্রুটি হ'ল "টিসিপি সংযোগ পুনরায় সেট করা" ত্রুটি।

লিনোড ব্যান্ডউইথ গ্রাফটি এখানে। মনে রাখবেন এটি একটি 5 মিনিটের গড় হিসাবে এটি কম পাসটি কিছুটা ফিল্টার করে (তাত্ক্ষণিক ব্যান্ডউইথ সম্ভবত আরও উচ্চতর), তবে তবুও, এটি কিছুই নয়:

এখানে চিত্র বর্ণনা লিখুন

সিপিইউ:

এখানে চিত্র বর্ণনা লিখুন

ইনপুট / আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

htopপরীক্ষার সমাপ্তির কাছাকাছি এখানে : htop

ত্রুটিগুলি শুরু হওয়ার সাথে সাথে ক্যাপচারটি শুরু করে, আমি আলাদা (তবে অনুরূপ দেখতে) পরীক্ষায় tcpdump ব্যবহার করে কিছু ট্র্যাফিক ক্যাপচার করেছি: sudo tcpdump -nSi eth0 -w /tmp/loadtest.pcap -s0 port 80

এখানে ফাইল যদি কেউ এটা কটাক্ষপাত (~ 20MB) নিতে চায় আছে: https://drive.google.com/file/d/0B1NXWZBKQN6ETmg2SEFOZUsxV28/view?usp=sharing

এখানে ওয়্যারশার্কের একটি ব্যান্ডউইথ গ্রাফ রয়েছে:

এখানে চিত্র বর্ণনা লিখুন (লাইনটি সমস্ত প্যাকেট, নীল বারগুলি টিসিপি ত্রুটি)

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

ধন্যবাদ!


আপনার সরবরাহকারী কি একরকম ডিডিওএস প্রশমন করছেন? এটি আপনার পরীক্ষায় হস্তক্ষেপ করতে পারে।
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন আমি মোটামুটি নিশ্চিত যে লিনোড এটি করে না।
EEAA

আপনি লিনোড কন্ট্রোল প্যানেল থেকে নেটওয়ার্ক গ্রাফ পোস্ট করতে পারেন? এই পরীক্ষাটি আসলে কত ব্যান্ডউইথ গ্রহণ করছে?
EEAA

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

1
আপনি কেবল net.core.netdev_max_backlog2000 সেট আপ করার কোনও কারণ আছে ? বেশ কয়েকটি উদাহরণ যা আমি দেখেছি তাতে গিগাবিট (এবং 10 জিগ) সংযোগের জন্য উচ্চতর মানের অর্ডার রয়েছে।
মোশে কাটজ

উত্তর:


1

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

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

এছাড়াও, নেটস্ট্যাট -st আপনাকে কিছু অতিরিক্ত তথ্য দিতে পারে।


1

আমার নিজের সাম্প্রতিক অনুরূপ সুরের অভিজ্ঞতার ভিত্তিতে চেষ্টা করার জন্য কিছু ধারণা ideas উল্লেখ সহ:

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

https://rtcamp.com/tutorials/php/fpm-sysctl-tweaking/ https://engineering.gosquared.com/optimising-nginx-node-js-and-networking- for- heavy-workloads

প্রবাহ সমাপ্তি নির্বিশেষে:

মাল্টি_অ্যাকসেপ্ট এবং টিসিপি_নোডলে সক্ষম করুন: http://tweaked.io/guide/nginx/

টিসিপি আস্তে আস্তে অক্ষম করুন: /programming/17015611/disable-tcp-slow-start http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/

টিসিপি কনজেশন উইন্ডোটি অপ্টিমাইজ করুন (initcwnd): http://www.nateware.com/linux-network-tuning-for-2013.html


1

সর্বাধিক সংখ্যক উন্মুক্ত ফাইল সেট করতে (যদি এটি আপনার সমস্যার কারণ হয়ে থাকে) আপনাকে /etc/sysctl.conf এ "fs.file-max = 64000" যুক্ত করতে হবে


0

দয়া করে দেখুন TIME_WAITকমান্ডটি ব্যবহার করে কয়টি বন্দর অবস্থিত netstat -patunl| grep TIME | wc -lএবং net.ipv4.tcp_tw_reuse1 তে পরিবর্তন করুন।


TIME_WAITরাজ্যে কয়টি বন্দর রয়েছে তা আমি কীভাবে দেখব ?
এরিক সোয়ান

ব্যবহার netstatবা ss। আমি সম্পূর্ণ কমান্ড দিয়ে আমার উত্তর আপডেট!
fgbreel

আমি পরীক্ষাটি পুনরায় চালু করেছি এবং watch -n 1 'sudo netstat -patunl | grep TIME | wc -l'পুরো পরীক্ষার মধ্যে 0 ফেরত দিয়েছি । আমি পরী নিশ্চিত যে পুনরায় সেটগুলি আমি উপরে পোস্ট করা পিসিএপি ফাইলটির আমার বিশ্লেষণের উপর ভিত্তি করে লোড টেস্টার এবং আমার সার্ভারের মধ্যে থাকা কারও দ্বারা ডিডিওএস প্রশমনগুলির ফলস্বরূপ আসছি, তবে যদি কেউ নিশ্চিত করতে পারে যে এটি দুর্দান্ত হবে!
এরিক সোয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.