অ্যাপাচি ওয়েবসারভার সার্ভার-স্ট্যাটাসের সাথে প্রতিক্রিয়াবিহীন সমস্ত শিশু প্রক্রিয়া সংযোগের জন্য অপেক্ষা করছে [বন্ধ]


10

আমার সেটআপ: আমার কাছে প্রায় প্রায় একই ধরণের ওয়েবসার্ভার মেশিনগুলি ডিএনএসের উপর সাধারণ লোড ব্যালেন্সিংয়ের সাথে একই উচ্চ লোডযুক্ত গতিশীল ওয়েবসাইট পরিবেশন করছে। পরিষেবাটি একই অ্যাপাচি কনফিগারেশনের সাথে দুই বছরেরও বেশি সময় ধরে কাজ করছে: অ্যাপাচি 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) আপনাকে সমস্যার মূলে যেতে সহায়তা করবে ... আপনার মেমরির ব্যবহার এবং ফায়ারওয়াল নীতিগুলি কী?
ড্রস্লাস

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

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

এটা ঠিক আবার ঘটেছে। এবং আমি যাচাই করতে সক্ষম হয়েছি যে এই সমস্যা দেখা দিলে আমি স্থানীয়ভাবে সংযোগ করতেও সক্ষম নই। আমি নেটস্পটের সাথে কিছু সংযোগের পরিসংখ্যানও তৈরি করেছি: প্রশ্নের পাঠ্য দেখুন
জেফ

উত্তর:


2

বর্তমান হোস্টগুলি এবং অনুরোধগুলি প্রক্রিয়াধীন হওয়ার জন্য আপনার মোড_স্ট্যাটাস ( http://httpd.apache.org/docs/2.2/mod/mod_status.html#extendedstatus ) এর বর্ধিত স্থিতি সক্ষম করতে হবে । আমি মনে করি একটি স্ক্রিপ্ট (গুলি) / পৃষ্ঠা (গুলি) রয়েছে যা সংযোগটি প্রকাশ করতে খুব বেশি সময় নেয় এবং এটি সংযোগগুলি স্ট্যাক করে তোলে।


1

প্রথম: Max open filesপ্রক্রিয়া আপনার সীমা পরীক্ষা করুন । একটি সক্রিয় সকেট সংযোগ একটি ওপেন ফাইল হিসাবে গণনা করা হয়। cat /proc/###/limitsঅন্য প্রক্রিয়ার জন্য কার্যকর মান পরীক্ষা করার একটি ভাল উপায়। আপনি lsof -p ###### আপনার ওয়েব সার্ভারের প্রক্রিয়া আইডি যেখানে খোলা ফাইলগুলির একটি তালিকা পেতে পারেন । আপনি lsof -p ### | wc -lকতটা সীমাতে চলেছেন তা দেখতে আপনি তুলনা করতে পারেন। আপনি যদি সীমাটি চাপ দিচ্ছেন তবে আপনাকে অ্যাপাচের ত্রুটি_লগে বার্তাও দেখতে হবে।

আপনার প্রতিটি সকেট সংযোগের জন্য এবং প্রতিটি সিজি স্ক্রিপ্ট বা ডেটা ফাইলের রেফারেন্সের জন্য একটি ফাইল হ্যান্ডেল দরকার। 920 ম্যাক্সক্লিয়েন্টের জন্য, আপনার httpd প্রক্রিয়াটির জন্য কমপক্ষে 4,000 ফাইল কনফিগার করা উচিত। আপনি নিম্নলিখিত বিষয়বস্তু দিয়ে /etc/security/limits.d/ এ একটি ফাইল যুক্ত করে ফাইলের সংখ্যা বাড়াতে পারেন। আপনার ওয়েব সার্ভারের জন্য ব্যবহারকারীর নামটি যা মিলছে তা নিশ্চিত করুন।

apache soft nofile 10000
apache hard nofile 10000

দ্বিতীয়: পোর্ট ক্লান্তি যদি আপনার সমস্যা হয় তবে আপনি /etc/sysctl.conf এ কয়েকটি আইপি সেটিংস সামঞ্জস্য করতে পারেন। (দিয়ে শুরু net.ipv4.tcp_fin_timeout)। এটি সাধারণত খুব প্রচুর সংযোগ সহ একটি সমস্যা। অনেক TIME_WAIT সকেট এই এক নির্দেশক, কিন্তু এই বন্দর নিঃশেষিত শুধুমাত্র যখন সম্পর্কে syslog- র ত্রুটি দ্বারা অনুষঙ্গী ইঙ্গিত possible SYN floodingএবং Sending cookies। আপনার সার্ভারটি এমন ফায়ারওয়ালের পিছনে রয়েছে যা দূষিত এসওয়াইএন আক্রমণকে ব্যর্থ করতে পারে তাও নিশ্চিত করা উচিত।


0

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

বহিরাগত মডিউলগুলির আপনার অ্যাপাচি কনফিগারেশন ট্রিম করতে রিমোট কানের দুলেরও মূল্য রয়েছে

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

আপনি সম্ভবত 'সর' দরকারী খুঁজে পেতে পারেন ... সর্বাধিক বন্ধুত্বপূর্ণ নয়, তবে অবশ্যই দরকারী।

সম্ভবত Io সম্পর্কিত। সার আপনাকে বলতে পারবেন (আপনি যদি এটি ডিস্ক ক্রিয়াকলাপ রেকর্ড করতে কনফিগার করেন), গড় আইও ওয়েটের সময়টি কত। আপনি শীর্ষে আইও অপেক্ষা করার সময়টিও দেখতে পারেন (যা একটি শতাংশ, এটি আসলে কী বোঝায় তা পড়ুন)। আপনি যদি SAN বা ভার্চুয়াল পরিবেশ ব্যবহার করছেন এটি তাৎপর্যপূর্ণ হতে পারে।

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