অ্যাপাচি এবং পিএইচপি দিয়ে মেমরি ফাঁস কীভাবে তদন্ত করবেন?


16

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

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

আমরা জানি মেমোরি সমস্যাটি অ্যাপাচি / পিএইচপি থেকে আসছে কারণ যখনই আমরা /etc/init.d/httpd reloadমেমরির ব্যবহারের ড্রপ ইস্যু করি (স্ক্রিনশটের উপরে এবং সিএলআই আউটপুটগুলির নীচে দেখুন):

Httpd পুনরায় লোড করার আগে

আমি বিনামূল্যে
             মোট ব্যবহৃত নিখরচায় ভাগ করা বাফার ক্যাশেড
মেমো: 49447692 45926468 3521224 0 191100 22609728
- / + বাফার / ক্যাশে: 23125640 26322052
অদলবদল: 2097144 536552 1560592

Httpd পরে পুনরায় লোড করুন

আমি বিনামূল্যে
             মোট ব্যবহৃত নিখরচায় ভাগ করা বাফার ক্যাশেড
মেমো: 49447692 28905752 20541940 0 191360 22598428
- / + বাফার্স / ক্যাশে: 6115964 43331728
অদলবদল: 2097144 536552 1560592

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

প্রশ্ন: কীভাবে আমরা এই স্মৃতিশক্তি ফাঁস হওয়ার কারণটি তদন্ত করতে পারি?

আদর্শভাবে আমি সমস্যা সমাধানের পদক্ষেপগুলি খুঁজছি যা আমি ডি টিমকে বিরক্ত না করে সিস্টেমে পারফর্ম করতে পারি।

অতিরিক্ত তথ্য:

OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6

এফওয়াইআই আমরা অদলবদলের বিষয়টি সম্পর্কে অবগত রয়েছি যা আমরা আলাদাভাবে তদন্ত করছি এবং অদলবদল শুরু হওয়ার আগে আমরা পর্যবেক্ষণ করেছি এমন মেমরি ফাঁসের সাথে কিছুই করার নেই।


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

@ জানিপিক্কারায়েন: আমরা পিএইচপি memcachedগ্রন্থাগারটি ব্যবহার করছি । মেমক্যাস অ্যাডমিন পৃষ্ঠার ভিত্তিতে memcache.php, আমরা দেখতে পাচ্ছি যে আমরা 5GBমেমক্যাশে বরাদ্দ করেছি , যার 3.3GBমধ্যে ব্যবহার হচ্ছে। আপনি যদি আমাদের এখানে আরও সহায়তা করতে পারেন তবে দুর্দান্ত হবে।
সর্বোচ্চ

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

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

@ ডেভিডশওয়ার্টজ: সমস্যাটি হ'ল আমরা যদি পুনরায় চালু না করি httpdতবে মেমরির ব্যবহার বাড়তে থাকে এবং বাকীটি মেমরির কার্নেল বার্তাগুলি থেকে শেষ পর্যন্ত ক্র্যাশ হয়ে যায়। পারফরম্যান্সগুলি ভাল (মেমরির ব্যবহার মেমরির সীমা অতিক্রম না করা অবধি)। অদলবদল সমস্যাটি উপেক্ষা করুন।
সর্বাধিক

উত্তর:


11

আমরা জানি মেমোরি সমস্যাটি অ্যাপাচি / পিএইচপি থেকে আসছে কারণ যখনই আমরা একটি /etc/init.d/httpd মেমরির ব্যবহার ড্রপগুলি পুনরায় লোড করি

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

প্রতিটি অ্যাপাচি থ্রেড 512MB- র একটি পিএইচপি মেমরি_লিট বরাদ্দ করা হয় যা ব্যাখ্যা করে

না এটা হয় না। আপনি গড়ে 7 জন এবং সর্বোচ্চ 25 টি ব্যস্ত সার্ভারের প্রতিবেদন করছেন - তবুও আপনার মেমরির গ্রাফ প্রায় 25Gb এর একটি ব-দ্বীপ দেখায়।

সত্যই আপনার আবার বেসিক এইচটিটিপি টিউনিংয়ের সাথে শুরু করা উচিত - আপনি মনে হচ্ছে একটি ধ্রুবক 256 টিপসিডিএস চালাচ্ছেন, তবুও আপনার শীর্ষের ব্যবহার 25 - এটি কেবল সাধারণ বোবা।

এবং 120 সেকেন্ডের একটি সর্বাধিক এক্সেকিউশন_টাইম যা থ্রেডটি শেষ করে যা কার্যকর করতে বেশি সময় নিচ্ছে

না - কেবলমাত্র মৃত্যুদন্ড কার্যকর করার থ্রেড পিএইচপি ইন্টারপ্রেটারের মধ্যে থাকলে - পিএইচপি অবরুদ্ধ থাকলে তা নয়।

যে আর্থিক মডেলিং সম্পাদন করে

(দীর্ঘশ্বাস)

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

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


2

আপনি সম্ভবত এতক্ষণে আপনার সমস্যা সমাধান করেছেন। অন্তর্বর্তী হিসাবে সার্ভারটি অদলবদল / থ্র্যাশিং থেকে রক্ষা করতে আমি ক্রোন থেকে প্রতি ঘণ্টায় নিম্নলিখিত কমান্ডটি চালাচ্ছি:

#!/bin/sh 
sync; echo 3 > /proc/sys/vm/drop_caches

আমি এটিকে বলছি না যে এটি একটি সমাধান, কেবল জিনিস চালিয়ে যাওয়া এবং ডাউন স্মিথকে হ্রাস করার উপায় যা আপনি মেমরি ফাঁসের প্রকৃত কারণটি বিনিয়োগ করেন।

আরো বিস্তারিত এখানে পাওয়া যাবে।

http://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/


1

স্পষ্টতই এইভাবে পিএইচপি কাজ করে - এবং আপনি যদি লম্বা লুপগুলি করেন যেখানে আপনি অবজেক্টগুলি বরাদ্দ করছেন এবং কে জানে যে আপনি রেফারেন্সের মাধ্যমে সেগুলিও পাস করছেন কিনা, সুতরাং এটি মোকাবেলা করার একমাত্র উপায় হ'ল প্রতিটি পিএইচপি প্রক্রিয়াটির জন্য এন অনুরোধগুলি পরে এটি বন্ধ করতে আপনি যদি সিজিআই হিসাবে পিএইচপি চালান, প্রতিটি অনুরোধ এটিকে শ্বাস ফেলা করে - যাতে কোনও মেমরি ফাঁস হয় না এবং পারফরম্যান্স ড্রপটি এত বড় নাও হতে পারে। আপনি দ্রুত-সিজিও চালাতে পারেন, যেখানে প্রতিটি 1000 অনুরোধ পিএইচপি-এফসিগি প্রক্রিয়াটি মারা যায় এবং এটির মেমরি প্রকাশ হয় - আবার কোনও মেমরি ফাঁস হয় না। আপনি যদি পিএইচপি মডিউল মোড_এফপি হিসাবে চালনা করেন তবে আপনি httpd.conf এ সর্বাধিক প্রয়োজনীয়তা সেটআপ করার চেষ্টা করতে পারেন এটি সাহায্য করে কিনা তা দেখার জন্য। আমি উদাহরণস্বরূপ 10 সেটআপ করার চেষ্টা করব - যদি এটি কাজ করে তবে পারফরম্যান্সের ড্রপ বেশি হবে না, তবে কোনও মেমরি ফাঁস হওয়া উচিত নয়,


-1

গ্লোবাল php.ini ফাইলটিতে মেমরি পরীক্ষা করুন। কেবল 1 জি ইত্যাদির মতো ভ্যাল্যুরটি ডিক্লেয়ার করবেন না ... আমি খুব সুপারিশ করব যে কোনও স্থানীয় php.ini সেই অ্যাকাউন্টে আনা হবে যাতে পুরো সার্ভারে প্রভাব না পড়ে। আমি বিশ্বব্যাপী php.ini সীমাটি প্রায় M৪ এম তে নির্ধারণ করার পরামর্শ দেব কারণ এটি বেশিরভাগ অ্যাকাউন্টের জন্য সাধারণত যথেষ্ট enough

আপনার অ্যাপাচি সেটিংসও পরীক্ষা করে দেখুন

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