টিউনিং অ্যাপাচি 2 প্রিফার্ক ম্যাকস্লায়েন্টস সার্ভারলিমিট


22

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

আমি মাঝে মাঝে ফাঁকা পৃষ্ঠা পেয়েছি উচ্চ লোডের সময় ওয়েবসাইটগুলি লোড করে এবং আমার এপাশে ত্রুটি লগতে এই ত্রুটি পেয়েছি:

[বিজ্ঞপ্তি] শিশু পিড 13595 প্রস্থান সিগন্যাল সেগমেন্টেশন দোষ (11)

কিভাবে এই সমস্যা সমাধান করতে পারে?

আমার অ্যাপাচি 2 প্রফোরক মডিউল কনফিগারেশন:

StartServers          3
MinSpareServers       3
MaxSpareServers       5
ServerLimit           3200
MaxClients            3100
MaxRequestsPerChild   0

Www মেশিনে ফ্রি -h :

মোট: 128 জি ফ্রি: 97 জিবি (অ্যাপাচি 2 চলমান সহ) ভাগ করা 0 বি বাফার 1.9 জি ক্যাশে 23 জি

রাম অ্যাপাচি 2 এবং অন্যান্য প্রোগ্রাম দ্বারা ব্যবহৃত:

Private  +   Shared  =  RAM used    Program

 96.0 KiB +  61.0 KiB = 157.0 KiB   sh
176.0 KiB +  26.0 KiB = 202.0 KiB   atd
176.0 KiB +  35.5 KiB = 211.5 KiB   acpid
208.0 KiB +  19.5 KiB = 227.5 KiB   mdadm
204.0 KiB +  30.0 KiB = 234.0 KiB   init
248.0 KiB +  62.0 KiB = 310.0 KiB   sendmail
376.0 KiB +  36.0 KiB = 412.0 KiB   dbus-daemon
388.0 KiB + 285.5 KiB = 673.5 KiB   cron (2)
820.0 KiB +  42.0 KiB = 862.0 KiB   gam_server
920.0 KiB + 108.0 KiB =   1.0 MiB   ntpd
968.0 KiB + 243.0 KiB =   1.2 MiB   getty (6)
  1.3 MiB + 351.5 KiB =   1.6 MiB   udevd (3)
  1.5 MiB + 343.0 KiB =   1.8 MiB   sendmail-msp
  2.0 MiB + 910.0 KiB =   2.9 MiB   plugin-localresources2
  3.4 MiB +  50.0 KiB =   3.4 MiB   rsyslogd
  3.6 MiB +  68.5 KiB =   3.7 MiB   bash
  1.9 MiB +   2.1 MiB =   4.0 MiB   sendmail-mta (4)
  3.8 MiB + 556.0 KiB =   4.3 MiB   sshd (2)
  3.7 MiB +   1.2 MiB =   4.8 MiB   plugin-apache2
  5.1 MiB +   1.2 MiB =   6.3 MiB   agent-service
  7.0 MiB + 654.0 KiB =   7.6 MiB   fail2ban-server
  9.6 MiB +   2.6 MiB =  12.2 MiB   proftpd (8)
 59.2 MiB +  70.0 KiB =  59.3 MiB   miniserv.pl
 96.8 MiB +   3.6 MiB = 100.4 MiB   php5-cgi (2)
196.4 MiB +  35.9 MiB = 232.3 MiB   apache2 (40)
---------------------------------
                     tot 450.0 MiB

2
ওয়েব সার্ভারের মধ্যে চলমান অ্যাপ্লিকেশন কোডটি কী? সম্ভবত এটিই অপরাধী।
শেন ম্যাডেন

দয়া করে Apache2ctl স্থিতির কয়েকটি নমুনা প্রেরণ করুন; ত্রুটি_লগে কিছু আছে হয়তো?
হ্রভোয়েপ্পলজার

উত্তর:


63

অ্যাপাচি প্রেফের্ক সেটিংস, প্রতি অ্যাপাচি পারফরম্যান্সের টিউনিংয়ের নির্দেশিকা

উদ্ধৃতি:

The single biggest hardware issue affecting webserver performance is RAM.
A webserver should never ever have to swap, as swapping increases the latency
of each request beyond a point that users consider "fast enough". 
This causes users to hit stop and reload, further increasing the load.
You can, and should, control the MaxClients setting so that your server does
not spawn so many children it starts swapping. This procedure for doing this
is simple: determine the size of your average Apache process, by looking at
your process list via a tool such as top, and divide this into your total 
available memory, leaving some room for other processes.

আপনার ইনপুট এর উপর ভিত্তি করে আপনার এটি সেট আপ করা উচিত:

  • মোট স্মৃতি: 128 গিগাবাইট
  • অ্যাপাচি ব্যতীত সকল কিছুর জন্য -১০% মেমরি: 115 গিগাবাইট
  • এখন আমাদের একক অ্যাপাচি প্রক্রিয়াটি কতটা ব্যবহার করছে তা নির্ধারণ করা দরকার।

এটি গণনা করতে আপনি নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করতে পারেন:

pgrep apache2 | xargs -n1 -I{} cat /proc/{}/smaps | \
  awk '{if ($0 ~ /stack/) {pids+=1} else if ($0 ~/^Shared_/) 
    {shared+=$2} else if ($0 ~ /^Pss:/) {priv+=$2}} END {
      printf "%.2f MB\n",(priv+shared/(pids*pids))/1024}'

সক্রিয় অ্যাপাচি প্রক্রিয়া সংখ্যার ভিত্তিতে ভাগ করে নেওয়া ব্যবহারকে আনুপাতিকভাবে ভাগ করার এবং এটি পিএসের উপরে (আনুপাতিক সেট আকার) যুক্ত করার চেষ্টা করার সময় একক অ্যাপাচি প্রক্রিয়া মেমরিটি কতটা ব্যবহার করছে তার সেরা অনুমান is

অবশেষে আপনি এই চিত্রটি দিয়ে 115 গিগাবাইট ভাগ করুন এবং আপনি পাবেন MaxClients/ServerLimit। এখান থেকে আপনি তুলনামূলকভাবে অন্যান্য পরিসংখ্যান গণনা করতে পারেন

  • StartServers 30% ম্যাক্সক্লিয়েন্টস
  • MinSpareServers ম্যাক্সক্লিয়েন্টের 5%
  • MaxSpareServers ম্যাক্সক্লিয়েন্টের 10%
  • ServerLimit == ম্যাকস্লায়েন্টস
  • MaxConnectionsPerChild 10000 (মেমরি ফাঁসযুক্ত অ্যাপ্লিকেশনগুলির সাথে সম্ভাব্য সমস্যার সমাধানের রক্ষণশীল বিকল্প হিসাবে)

2
আমি আশা করি আমার চেয়ে বেশি রেপ পয়েন্ট সহ কেউ আপনাকে এই উত্তরের জন্য ভোট দেবেন, আপনাকে অনেক ধন্যবাদ!
ব্যবহারকারী-এন

2
আপনার গণনা স্ক্রিপ্ট আমাকে 842.13 এমবি দেয়। এটি আমি যা করব তার উপরে প্রস্থের ক্রম সম্পর্কে (সেন্টোস 6.7 এ অ্যাপাচি ২.২)।
কুইন কমেন্ডেন্ট

1
এটি প্রিফের্ক মোডে। এখানে থেকে আউটপুট /server-info: i.imgur.com/SS2gIXI.png
কুইন কমেন্ডেন্ট

1
@ কুইনকমেন্ডেন্ট দুষ্ট কৌশল তবে প্রেফার্ক মডিউল পাওয়া গেলে (যা এটি) যদি ইমডুলেড সত্য হয় তবে প্রকৃতপক্ষে উভয় বিকল্পই কর্মী এবং এমপিএমের জন্য উপলব্ধ ... আমার সিস্টেমে অভিন্ন সার্ভার রয়েছে এবং কর্মীর জন্য আমার মেমরির ব্যবহার ~ 850 এমবি। প্রফোরক কোনও পদ্ধতিতে 800 এমবি মেমরির জন্য ব্যবহার করতে পারে না। আপনি স্ক্রিপ্টে লাইনটি পরিবর্তন করেছেন যেখানে এটি প্রক্রিয়াকরণের নাম অ্যাপাচি 2 টি এইচডিডি তে ডানদিকে রেফারেন্স করে?
হ্রভোজিপোলজার

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