পিএইচপি-সিজি প্রক্রিয়াগুলির মেমরির ব্যবহার ক্রমশ বাড়ছে


8

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

ভিপিএসে 360 এমবি র‌্যাম রয়েছে। আমি ডেবিয়ান লেনি 32 বিট এবং এর লাইটটিপিডি এবং পিএইচপি 5-সিজি প্যাকেজ ব্যবহার করছি। কিছু কনফিগার পরিবর্তন (নীচে তালিকাভুক্ত) বাদে আমি ডিবিয়ান দ্বারা স্টক সেটআপ ব্যবহার করছি।

ওয়েবসাইটটি দ্রুপাল ভিত্তিক। ড্রুপালের ডেভেল মডিউলটি ব্যবহার করে, আমি বলতে পারি যে পিএইচপি স্ক্রিপ্টগুলির মেমরির ব্যবহারটি গড়ে 20KB এর চেয়ে কম এবং এটি কখনও 8 এমবি ছাড়িয়ে যায় না।

এখানে আউটপুট থেকে প্রাসঙ্গিক অংশ ps aux:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data 29871  0.0  1.7  54552  6368 ?        Ss   Aug12   0:00 /usr/bin/php-cgi
www-data 29873  0.0  7.4  65808 27468 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data 29874  0.0  3.7  55808 13736 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data 29875  0.0  4.3  58040 16204 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data 29876  0.0  4.4  57444 16288 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data 29877  0.0  1.7  54552  6368 ?        Ss   Aug12   0:00 /usr/bin/php-cgi
www-data 29879  0.0  9.6  67140 35684 ?        S    Aug12   0:26 /usr/bin/php-cgi
www-data 29880  0.0  6.6  59172 24492 ?        S    Aug12   0:23 /usr/bin/php-cgi
www-data 29881  0.0  7.1  59784 26388 ?        S    Aug12   0:22 /usr/bin/php-cgi
www-data 29882  0.0  7.4  60880 27440 ?        S    Aug12   0:23 /usr/bin/php-cgi
  • পিএইচপি-সিগি এত বড় হওয়া কি স্বাভাবিক?
  • সেটিংসের ভিত্তিতে পিএইচপি-সিজি মেমরির ব্যবহারের অনুমান করা কি সম্ভব?
  • পিএইচপি-সিজি প্রক্রিয়াগুলির মেমরির খরচ কমাতে কোনও টিপস?

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

আমি এ পর্যন্ত যা করেছি তা PHP_FCGI_MAX_REQUESTSকম মূল্যে সেট করা হয়েছে যাতে পিএইচপি-সিজি প্রক্রিয়াগুলি দ্রুত পুনর্ব্যবহারযোগ্য হয়। আমি যখন abউচ্চ লোড অনুকরণ করতে ব্যবহার করি তখন এটি খুব ভাল কাজ করে। প্রক্রিয়াগুলি 10MB এর চেয়ে বেশি বেড়ে যাওয়ার আগে দ্রুত মারা যায়। তবে, নিম্ন থেকে মাঝারি লোডের অধীনে সমস্ত প্রক্রিয়া অবিচ্ছিন্নভাবে বৃদ্ধি পায় (লোড ভারসাম্যের কারণে) এবং তাদের বেশিরভাগই একসাথে ২৮ এমবি + গ্রাস করে, আমার ভিপিএসকে অদলবদলের ঝুঁকিতে ফেলে। দয়া করে মনে রাখবেন যে কোনও ধরণের ট্র্যাফিক ছাড়াই, প্রক্রিয়াগুলি অবিচ্ছিন্নভাবে বৃদ্ধি পায়।

আমি পিএইচপি-সিজি প্রসেসের সংখ্যা হ্রাস করতে পারি, তবে এটি ঠিক করার চেয়ে অনেক বেশি কাজের মতো অনুভব করে। পিএইচপি-সিজি যদি সাধারণত এভাবে বাড়ত তবে আমি অবাক হব।

এছাড়াও, পিএইচপি-সিজিআই প্রক্রিয়ার জন্য মোট আরএসএস সংখ্যার সংক্ষিপ্তসার দেয়:

$ ps -C php-cgi -o rss= | awk '{s+=$1}END{print s/1024}'
195.738

তবুও, free -mনিম্নলিখিত আউটপুট দেয়:

             total       used       free     shared    buffers     cached
Mem:           360        351          8          0         33        190
-/+ buffers/cache:        127        232
Swap:          255          0        255
  • আমি কিছু অনুপস্থিত করছি? হোস্টের পিএইচপি-সিজি প্রক্রিয়াগুলির মোট আবাসিক মেমরির তুলনায় ব্যবহৃত মেমরিটি (বাফার ছাড়াই) কম কীভাবে আসে?

আমার নিম্নলিখিত পিএইচপি এক্সটেনশন রয়েছে:

পিএইচপি 5-সিজি পিএইচপি 5-সাধারণ পিএইচপি 5-কার্ল php5-gd php5-mysql php5-xcache

xcache.size24M সেট করা আছে। এটি 32M ব্যবহার করে তবে এটি হ্রাস করতে কোনও সুবিধা হয়নি। xcache.var_sizeবাকী প্লাগইনগুলি স্টক কনফিগারেশন ব্যবহার করছে to এক্সক্যাশ অ্যাডমিন পৃষ্ঠাগুলি দেখায় যে এক্সক্যাচ 1MB এর চেয়ে কম ব্যবহার করছে।

পিএইচপি এর memory_limit32M সেট করা হয়।

এখানে আমার ফাস্টসিজিআই কনফিগারেশন রয়েছে:

fastcgi.server    = ( ".php" =>
  ((
    "bin-path" => "/usr/bin/php-cgi",
    "socket" => "/tmp/php.socket",
    "max-procs" => 2,
    "idle-timeout" => 20,
    "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "4",
      "PHP_FCGI_MAX_REQUESTS" => "1000"
    ),
    "bin-copy-environment" => (
      "PATH", "SHELL", "USER"
    ),  
    "broken-scriptfilename" => "enable" 
  ))
)

আমি কম বেশি বা কম স্টক ব্যবহার করছি lighttpd.confযা ডিবিয়ান দিয়ে জাহাজে আসে।

আমি সরবরাহ করতে পারেন যে অন্য কোনও তথ্য আছে দয়া করে আমাকে জানান।

কোন সাহায্য প্রশংসা করা হয়। আমি কয়েক দিন ধরে এটির সমস্যা সমাধানের চেষ্টা করছি। আমার ধারণা শেষ হয়ে গেছে।

উত্তর:


2

Var_size ডাউন করার চেষ্টা করুন। যদি আমাদের 64৪ এমবি এর মান হয় তবে কয়েক ঘন্টা পরে এটি প্রচুর অদলবদল শুরু করে এবং পরবর্তী কয়েক ঘন্টা পরে এটি সম্পূর্ণ ডাউন হয়ে যায়। আসল সেটিংস 32M তে রাখার চেষ্টা করুন, সম্ভবত এটি আপনাকে অনেক সহায়তা করবে - আমাদের ট্র্যাভেল সাইটে আমাদের একই সমস্যা ছিল Xcache এখনও অনেক বগি সফ্টওয়্যার :(


1

সর্বাধিক অনুরোধগুলি সেট করা সঠিক ধারণা। মেমরি ফুটো হওয়ার সময় আপনার সিস্টেম র‌্যামটি পূরণ করা থেকে বিরত রাখার উপায়।

আমি আপনাকে পরামর্শ দিচ্ছি একটি জিনিস হ'ল অ্যাপাচি + Mod_php এ স্যুইচ করা। যদি এটি মেমরি ফাঁস না করে কাজ করে তবে তার অর্থ আপনার সমস্যাটি ছিল সিজিআই সম্পর্কিত। যদি এটি mod_php দিয়ে ফাঁস হতে থাকে, তবে সম্ভবত কোথাও কোডটিতে একটি মেমরি ফুটো আছে।

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


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

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

উভয় সার্ভারের চেয়ে ছোট এবং পিএইচপি থেকে কোনও মেমরি ফাঁস নেই বলে এনগিনেক্স ব্যবহার করুন। ওয়ার্ডপ্রেস এবং অন্যান্য বড় সাইট এটি ব্যবহার করে।
জিওনক্রস

0

অনেক সময় এই ধরণের সমস্যাগুলির জন্য কিছু অপ-কোড ক্যাশে যেমন এক্সসি ক্যাচ বা মেমক্যাচড পিএইচপি এক্সটেনশান হয়।


0

/Etc/php5/apache2/conf.d থেকে অব্যবহৃত গ্রন্থাগারগুলি সরান। সম্ভবত আপনার pdo.ini এবং pdo_mysq.ini বা mysqli.ini দরকার নেই এটি রামের কিছু মেগা সাশ্রয় করবে

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