আমার সাথে এনজিএনক্সের সাথে একটি ছোট ভিপিএস সেটআপ রয়েছে। আমি যতটা সম্ভব পারফরম্যান্সটি এটি থেকে বের করতে চাই, তাই আমি অপ্টিমাইজেশন এবং লোড টেস্টিং নিয়ে পরীক্ষা-নিরীক্ষা করছি।
আমি একটি ছোট স্ট্যাটিক টেক্সট ফাইল পেয়ে লোড টেস্টিং করতে ব্লিটজ.ইওটি ব্যবহার করছি এবং একযোগে সংযোগের সংখ্যা প্রায় 2000 এ পৌঁছে যাওয়ার পরে সার্ভার টিসিপি পুনরায় সেট করছে বলে মনে হচ্ছে এমন একটি অদ্ভুত সমস্যাটিতে চলে। আমি জানি এটি একটি খুব বিপুল পরিমাণে, তবে এইচটিপি ব্যবহার করা থেকে সার্ভারের সিপিইউ সময় এবং মেমোরিতে এখনও প্রচুর পরিমাণে অবশিষ্ট রয়েছে, তাই আমি আরও এই বিষয়টিকে আরও এগিয়ে যেতে পারি কিনা তা জানতে এই সমস্যার উত্সটি বের করতে চাই।
আমি 2 জিবি লিনোড ভিপিএসে উবুন্টু 14.04 এলটিএস (64-বিট) চালাচ্ছি।
এই গ্রাফটি সরাসরি পোস্ট করার মতো যথেষ্ট খ্যাতি আমার নেই, সুতরাং এখানে ব্লিটজ.ও গ্রাফের লিঙ্ক রয়েছে:
সমস্যার উত্সটি বের করার চেষ্টা করার জন্য আমি এখানে কাজগুলি করেছি:
- Nginx কনফিগারেশন মানটি
worker_rlimit_nofile
8192 এ সেট করা আছে - আছে
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 বাইট)। এখানে ব্লিটজ.ইও গ্রাফ রয়েছে:
আবার ব্লিটজ অনুসারে এই সমস্ত ত্রুটি হ'ল "টিসিপি সংযোগ পুনরায় সেট করা" ত্রুটি।
লিনোড ব্যান্ডউইথ গ্রাফটি এখানে। মনে রাখবেন এটি একটি 5 মিনিটের গড় হিসাবে এটি কম পাসটি কিছুটা ফিল্টার করে (তাত্ক্ষণিক ব্যান্ডউইথ সম্ভবত আরও উচ্চতর), তবে তবুও, এটি কিছুই নয়:
সিপিইউ:
ইনপুট / আউটপুট:
htop
পরীক্ষার সমাপ্তির কাছাকাছি এখানে :
ত্রুটিগুলি শুরু হওয়ার সাথে সাথে ক্যাপচারটি শুরু করে, আমি আলাদা (তবে অনুরূপ দেখতে) পরীক্ষায় tcpdump ব্যবহার করে কিছু ট্র্যাফিক ক্যাপচার করেছি:
sudo tcpdump -nSi eth0 -w /tmp/loadtest.pcap -s0 port 80
এখানে ফাইল যদি কেউ এটা কটাক্ষপাত (~ 20MB) নিতে চায় আছে: https://drive.google.com/file/d/0B1NXWZBKQN6ETmg2SEFOZUsxV28/view?usp=sharing
এখানে ওয়্যারশার্কের একটি ব্যান্ডউইথ গ্রাফ রয়েছে:
(লাইনটি সমস্ত প্যাকেট, নীল বারগুলি টিসিপি ত্রুটি)
ক্যাপচার সম্পর্কে আমার ব্যাখ্যা থেকে (এবং আমি কোনও বিশেষজ্ঞ নই), দেখে মনে হচ্ছে টিসিপি আরএসটি পতাকাগুলি সার্ভার নয়, লোড পরীক্ষার উত্স থেকে আসছে। সুতরাং, ধরে নিই যে লোড টেস্টিং সার্ভিসের পক্ষ থেকে কিছু ভুল হচ্ছে না, এটি কি নিরাপদভাবে ধরে নেওয়া যায় যে এটি লোড টেস্টিং পরিষেবা এবং আমার সার্ভারের মধ্যে কোনও ধরণের নেটওয়ার্ক পরিচালনা বা ডিডিওএস প্রশমনগুলির ফলাফল?
ধন্যবাদ!
net.core.netdev_max_backlog
2000 সেট আপ করার কোনও কারণ আছে ? বেশ কয়েকটি উদাহরণ যা আমি দেখেছি তাতে গিগাবিট (এবং 10 জিগ) সংযোগের জন্য উচ্চতর মানের অর্ডার রয়েছে।