httpd মেমরির ব্যবহার


13

httpd( Apache/2.2.29) মেমরি ব্যবহারে কিছু সমস্যা হচ্ছে ।

সময়ের সাথে সাথে, httpdপ্রক্রিয়াগুলিতে মেমরির ব্যবহার শেষ পর্যন্ত 100% না হওয়া অবধি কমতে থাকে।

শেষবার আমি পুনরায় চালু httpdহয়েছিল প্রায় 24 ঘন্টা আগে। এর ফলাফল আউট free -m:

[ec2-user@www ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          1655       1415        239          0        202        424
-/+ buffers/cache:        788        866
Swap:         1023          4       1019

এটি অবশ্যই প্রমাণ করার জন্য httpd, আমি আবার শুরু করে আবার httpdদৌড়েছি free -m:

[ec2-user@www ~]$ sudo service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[ec2-user@www ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          1655        760        894          0        202        360
-/+ buffers/cache:        197       1457
Swap:         1023          4       1019

সুতরাং, অ্যাপাচি পুনরায় চালু করতে 239 এমবি থেকে 894 এমবি অবধি ফ্রি মেমরি লাগে - যা মনে হয় এটি একটি বড় লাফের মতো।

আমি বর্তমানে সক্ষম অ্যাপাচি মডিউলগুলির তালিকা (যা প্রচুর পরিমাণে আছে) এবং অক্ষম / মুছে ফেলা হয়েছে mod_wsgiএবং mod_perl(যেগুলির কোনওটিরই এই সার্ভারের প্রয়োজন নেই, যা পিএইচপি-ভিত্তিক ওয়েব অ্যাপ্লিকেশন - ম্যাগেন্টো বিশেষত চালাচ্ছে ) এর তালিকাতে যাচ্ছি ।

Https://servercheck.in/blog/3-small-tweaks-make-apache-fly এর উপর ভিত্তি করে , আমি চালিয়েছি ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'এবং নিম্নলিখিত আউটপুটটি পেয়েছি :

[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}' 15.1328 MB 118.09 MB 127.449 MB 129.059 MB 117.734 MB 113.824 MB 125.062 MB 123.922 MB 119.855 MB 108.066 MB 136.23 MB 114.031 MB 113.27 MB 110.695 MB 102.113 MB 113.234 MB 186.816 MB 118.602 MB 0.835938 MB

অন্যান্য প্রস্তাবিত নির্ণয়ের সরঞ্জাম চালনা করা MaxClientsযার জন্য ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'নিম্নলিখিতটি ফিরে আসে:

[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
110.212 MB

এই সার্ভারে (অ্যামাজন এডাব্লুএস m1.smallউদাহরণ) 1.7 Gbর‌্যাম রয়েছে। তাই তাই:

কীভাবে সর্বোত্তম httpdসেটিংস টুইঙ্ক করতে হবে বা ঠিক কী কারণে এটি ঘটতে পারে তা নির্ণয় করার বিষয়ে আরও কোনও পয়েন্টার / পরামর্শ ?


নোট করুন যে প্রক্রিয়াগুলি দ্বারা মেমরির ব্যবহার পরীক্ষা করতে আপনাকে -/+ buffers/cacheলাইনটি দেখতে হবে; তবে এক্ষেত্রে পরিবর্তন তুলনীয়। অ্যাপাচি কীভাবে সুর করা হয়েছে তার উপর নির্ভর করে, এটি অনুরোধ পরিচালনার জন্য প্রস্তুত কয়েকটি প্রক্রিয়া দিয়ে শুরু হতে পারে; অনেকগুলি সমসাময়িক অনুরোধগুলির একটি সময় পরে সম্ভবত আরও বেশি প্রক্রিয়া লোড হ্যান্ডেল করার জন্য গঠন করা হবে। নিষ্ক্রিয় প্রক্রিয়া সংখ্যা টিউন করা যেতে পারে। সুতরাং যদি অ্যাপাচি খুব বেশি মেমরি ব্যবহার করতে বাড়ে, আপনার কিছু টিউনিং করা দরকার।
wurtel

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

এটি হ'ল ঠিক কারণ আমি অ্যাপাচি থেকে সরে এসেছি ... এনগিনেক্স বা লাইটটিপিডি চেষ্টা করে দেখুন।

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

নোট করুন যে গড় মেমরির ব্যবহার গণনা করতে আপনার স্ক্রিপ্টটিতে grep httpd-প্রসেসের স্বল্প মেমোরি ব্যবহার অন্তর্ভুক্ত রয়েছে (কমপক্ষে আমার জন্য)। এটি ঠিক করার জন্য আমি এই লাইনের গণনা থেকে এই লাইনটি বাদ দেওয়ার পরামর্শ ps aux | grep 'httpd' | grep -v grep | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
দিচ্ছি

উত্তর:


11

এটি সমাধান করার জন্য আমি যা করেছি তা এখানে:

  1. সেট MaxClients 7(উপর ভিত্তি করে (1740.8Mb Memory on server - 900Mb for MySQL + other stuff) / 111Mb average usage per httpd process = 7.5747747747747747747747747747748)

অতএব:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients         7
MaxRequestsPerChild  4000
</IfModule>
  1. ছাড়া সব অ্যাপাচি মডিউল নিষ্ক্রিয় করুন authz_host_module, log_config_module, expires_module, deflate_module, setenvif_module, mime_module, autoindex_module, negotiation_module, dir_module, alias_module, rewrite_module,php5_module

  2. mod_sslপ্যাকেজটি সরান কারণ ক্লায়েন্ট যা https://কিছু ব্যবহার করছে না isn't

এই নতুন কনফিগারেশনটি একবার চালাচ্ছে কিনা তা একবারে জানাবো এটির সমাধান করে কিনা তা দেখার জন্য।

এখানে কিছু অনুপ্রেরণা নেওয়া হয়েছিল: http://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/ এবং http://www.activoinc.com/ ডাউনলোডসমূহ / httpd.conf-Magento


উপরে কনফিগারেশন অবশ্যই ব্যাপকভাবে সাহায্য করেছে।
জেমস স্পিটল

1
কয়েক দিন পরে, 'মেমরি ফাঁস' সমস্যাগুলি httpdসম্পূর্ণরূপে শেষ হয়ে গেছে বলে মনে হচ্ছে।
জেমস স্পিটল

2

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

অতিরিক্তভাবে: ম্যাক্সক্লিয়েন্টস = সার্ভারলিমিট * থ্রেডসপিরচাইল্ড

আপনার ক্ষেত্রে যদি আপনার কেবল 7 সমবর্তী ব্যবহারকারী প্রয়োজন (ম্যাক্সক্লিয়েন্টস = 7) এটি 2 টি প্রক্রিয়া দ্বারা সম্পূর্ণরূপে যথেষ্ট (কেবল যদি কেউ ডাউনটাইম হ্রাস করতে ব্যর্থ হয়) তবে কনফিগারেশনটি এমন হতে পারে:

<IfModule prefork.c>
StartServers       2
MinSpareServers    2
MaxSpareServers   20
ServerLimit        2
MaxClients         8
ThreadsPerChild    4
MaxRequestsPerChild  4000
</IfModule>

আমি ম্যাক্সক্লিয়েন্টস 8 ব্যবহার করি , কেবল 2 টি প্রক্রিয়ার মধ্যে আরও সমান অনুরোধ বিতরণ করতে।

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