আমার সেটআপ: আমার কাছে প্রায় প্রায় একই ধরণের ওয়েবসার্ভার মেশিনগুলি ডিএনএসের উপর সাধারণ লোড ব্যালেন্সিংয়ের সাথে একই উচ্চ লোডযুক্ত গতিশীল ওয়েবসাইট পরিবেশন করছে। পরিষেবাটি একই অ্যাপাচি কনফিগারেশনের সাথে দুই বছরেরও বেশি সময় ধরে কাজ করছে: অ্যাপাচি 2, পিএইচপি 5, উবুন্টু 8.04 লিনাক্স 2.6.24-29-সার্ভার।
আমার সমস্যা: প্রায় দুই সপ্তাহ আগে থেকে আমি এই কনফিগারেশনে সমস্যাটি অনুভব করছি। প্রায় প্রতিদিন আমার কাছে প্রায় 5 মিনিটের জন্য একটি ছোট মুহূর্ত থাকে, যার মধ্যে ওয়েবসাইটটি অ্যাক্সেসযোগ্য। আমি এখনও সার্ভারগুলিতে ssh এর মাধ্যমে লগইন করতে সক্ষম। আমি যদি চালনা htop
করি তবে দেখি মেশিনটি কেবল কিছুই করছে না। আমার প্রায় 1000 অ্যাপাচি প্রক্রিয়া চলছে তবে কোনও সিপিইউ কার্যকলাপ নেই।
এই অবস্থার ডিবাগ করার জন্য আমি অ্যাপাচি মোড_স্ট্যাটাস ব্যবহার করেছি। প্রক্রিয়া স্কোরবোর্ডটি দেখতে এমন দেখাচ্ছে:
_C.___K_______________________R._______.__K_K____K___C_______.__
_______C__________.___________________________________.________C
_.____K__________K___K_WK_____._K_____________________________._
W______K__________K________.____________________._______C_______
_C_.__K__K____.._.._____________________________________C_______
_R___________K___.______C________.C_________.______._____C______
____________KKC____K_____K__WC_________________C_____.__.____.__
_____________________C_________K______.____C______._____________
_.___C____.___.___________________________.K______.____K________
W__.___________________C.__.____K________K_______R_._.__._______
__C__C_.__________C__C_______._____W______________C_.___C_______
____.______C_____________C________.____C____________.________._K
__.__________.K_____________K_________._____C____.K__________KW_
__K.W________R_________._______.___W___________.____.__K_____W__
W___.___..________W____K
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
সুতরাং বেশিরভাগ প্রক্রিয়া কেবল সংযোগের জন্য অপেক্ষা করছে। প্রায় 5 মিনিটের পরে পরিস্থিতি স্বাভাবিক অবস্থায় ফিরে আসবে: প্রতিটি মেশিনে আমার খুব কম প্রক্রিয়া থাকে, বেশিরভাগ শ্রমিকের "" "থাকে - স্ট্যাটাস (তারা একটি অনুরোধ প্রক্রিয়া করার জন্য উন্মুক্ত থাকে) এবং অবশ্যই ওয়েবসাইটটি পৌঁছনীয়!
সুতরাং আমি লগগুলিতে কিছু সন্ধান করার চেষ্টা করছি, তবে কেবল কিছুই নেই ... অ্যাপাচি অ্যাক্সেস লগটি প্রায় 4 মিনিটের জন্য নিরব থাকে, ত্রুটি লগের জন্য একই। অন্যান্য সিস্টেম লগগুলিতে আমি কোনও ভুল বুঝতে পারি না।
পরিস্থিতি সমস্ত 3 ওয়েবসভারের ক্ষেত্রে একইরকম (তাদের সকলেরই একই সময়ে এই লোড পিক এবং প্রতিক্রিয়াহীন শর্ত রয়েছে), তাই আমি এটি হার্ডওয়ার সম্পর্কিত কোনও বিষয় করি না। তবে আমি মনে করি, এটি কোনও নেটওয়ার্ক (টিসিপি) ইস্যু সম্পর্কিত হতে পারে।
কোন ধারনা?
সম্পাদনা: আরও কিছু তথ্য, যা আমি সবেমাত্র আবিষ্কার করেছি:
এটি ঠিক আবার ঘটেছে এবং আমি যখন যা সমস্যা হয় তখন আমি স্থানীয়ভাবে সংযোগ করতে সক্ষম নই তা যাচাই করতে সক্ষম হয়েছি।
এটি হওয়ার পরে আমি নিম্নলিখিত কমান্ডের সাথে কিছু সংযোগের পরিসংখ্যান তৈরি করেছি: netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
- 109 CLOSE_WAIT
- 2652 প্রতিষ্ঠিত
- 2 টি FIN_WAIT1
- 11 LAST_ACK
- 12 তালিকা
- 91 SYN_RECV
- 1 SYN_SENT
- 16 টিআইএম
আমি যদি কিছু সময় পরে একই কমান্ডটি কার্যকর করি তবে আমার কাছে এরকম কিছু রয়েছে:
- 4 বন্ধ
- 108 ইনস্টলড
- 18 টি FIN_WAIT1
- 182 FIN_WAIT2
- 37 LAST_ACK
- 12 তালিকা
- 50 SYN_RECV
- 11276 টিআইএম_ডব্লিউআইটি
সুতরাং স্বাভাবিক পরিস্থিতিতে আমার কাছে এই মুহুর্তে অ্যাপাচি দ্বারা পরিচালিত ক্লায়েন্টদের কাছে কেবল 100-200 ওপেন সংযোগ রয়েছে। আমার যখন এই "ক্র্যাশ" হয় তখন আমার আরও সংযোগ থাকে। এটি বিশ্লেষণ করার সর্বোত্তম উপায় কী?
EDIT2: apache2.conf এর গুরুত্বপূর্ণ লাইনগুলি হ'ল:
KeepAlive On
MaxKeepAliveRequests 20
KeepAliveTimeout 1
<IfModule mpm_prefork_module>
ServerLimit 920
StartServers 30
MinSpareServers 80
MaxSpareServers 120
MaxClients 920
MaxRequestsPerChild 700
</IfModule>
এটি পিএইচপি_মোড সহ একটি অ্যাপাচি 2 প্রেফরোক।
সার্ভারটিতে 8 গিগাবাইট র্যাম এবং একটি 4 জিবি স্বাপ পার্টিশন রয়েছে।
tcpdump
) আপনাকে সমস্যার মূলে যেতে সহায়তা করবে ... আপনার মেমরির ব্যবহার এবং ফায়ারওয়াল নীতিগুলি কী?