সপ্তাহে প্রায় একবার, তবে কখনও কখনও কয়েক দিন ধরে বেশ কয়েকবার জরিমানা চালানোর পরেও, আমার ইসি 2 উদাহরণগুলি প্রতিক্রিয়াহীন হয়ে যায়। মুনিনের স্মৃতি গ্রাফগুলি একটি দুর্দান্ত সোজা গল্প বলে: "অ্যাপ্লিকেশনগুলিতে" বরাদ্দ হওয়া মেমরিটি বৃদ্ধি পেতে শুরু করে এবং অদলবদল পুরোপুরি ব্যবহার না হওয়া অবধি বন্ধ হয়ে যায় না এবং উদাহরণটি কার্যকরভাবে তার হাঁটুতে নামানো হয়। আর একটি কাস্টম গ্রাফ দেখায় যে ক্রমবর্ধমান প্রক্রিয়াটি অ্যাপাচি 2।
আমি মোড_এফপি এবং কয়েকটি পিএইচপি স্ক্রিপ্ট সহ একটি স্ট্যান্ডার্ড প্রেফের্ক অ্যাপাচি সেটআপ পরিচালনা করি। আপনি নীচের গ্রাফটিতে দেখতে পাচ্ছেন যে, এমন কিছু ঘটে যা অ্যাপাচি 2 প্রক্রিয়া আরও এবং আরও বেশি স্মৃতি গ্রহণ করা শুরু করে। আমি প্রথম গ্রীন স্পাইকটি সময় মতো ধরলাম এবং জিনিসগুলি হাতছাড়া হয়ে যাওয়ার আগে অ্যাপাচি পুনরায় চালু করলাম। দ্বিতীয় স্পাইকটি কিছুটা দূরে পেয়েছে এবং উদাহরণটি পুরোপুরি পুনরায় বুট করতে হয়েছিল।
আমি যা ভাবছি তা হ'ল এটি কীভাবে সেরা ডিবাগ করা যায়। ফাস্টসিজিআই দিয়ে পিএইচপি স্থাপনের সংক্ষিপ্ততা এবং এটি নিজস্ব প্রক্রিয়াগুলিতে চালিত হওয়া, এটি অ্যাপাচি বা পিএইচপি এবং আমার কোডের সংমিশ্রণ যা অতিরিক্ত মেমরির ব্যবহার করে? আপনারা এই বিষয়টিকে নিখুঁত করতে কোন পদক্ষেপ নেবেন?
আপডেট: আমি স্ট্রেস জড়িত থাকার পরে ফাঁসটি ট্র্যাক করতে সক্ষম হয়েছি, যেমন ম্যাট নীচে প্রস্তাব করেছে।
একটি অ্যাপাচি 2 প্রক্রিয়া যা ধীরে ধীরে এবং ক্রমাগত স্মৃতিতে ক্রমবর্ধমান ছিল তা সন্ধান করার পরে, আমি আমার পিএইচপি স্ক্রিপ্টে আরও কয়েকটি ত্রুটি_লগ () যুক্ত করেছি যেগুলি কার্যকরভাবে বিভিন্ন পয়েন্টে ব্যবহৃত আরএসএসের মোট পরিমাণ ছাপিয়েছিল (পিএস এর আউটপুট ব্যবহার করে)। তবে এটি বিভ্রান্তিকর হিসাবে প্রমাণিত হয়েছিল - যখন দেখা গিয়েছিল যে আমার স্ক্রিপ্টটি কার্যকর করার পরে কেবল আরএসএস ঝাঁপিয়ে পড়েছিল, পরে ডিবাগিংয়ের বিষয়টি প্রকাশ পায় যে বাস্তবে ঘটনাটি ছিল না। সতর্ক হোন!
ভাগ্যক্রমে, সমস্ত ত্রুটিযুক্ত_ব্লগ () কলগুলি কার্যকরভাবে পরিণত হয়েছিল। আমি যখন স্ট্রেস ( strace -p <pid> -tt -o trace.log -s 256
) সরিয়ে ফেলি, তখন আমি দেখেছি যে প্রতিটি অনুরোধের জন্য, প্রক্রিয়াটি প্রায় 400k মেমরি বরাদ্দ করছিল ('ব্রেক' সিস্টেম কলটি সন্ধান করুন এবং শেষ কলটির প্রথম কলটির প্যারামিটারটি বিয়োগ করুন - কয়েকজন সাধারণত একটিতে আসে আরেকটার পর). আমি তখন সর্বাধিক সাম্প্রতিক 'রাইটিং' সিস্টেম কল সন্ধান করেছি যাতে আমার ত্রুটি_লগ () বার্তাটি রয়েছে, যা আমাকে জানিয়েছিল যে স্ক্রিপ্টের কোন বিন্দুতে স্মৃতি বরাদ্দ করা হচ্ছে। আরও সঠিকভাবে অবস্থান চিহ্নিত করার জন্য আরও কয়েকটি কৌশলগতভাবে ত্রুটিযুক্ত_ব্লগ () কল সহ, আমি অবশেষে অপরাধীকে খুঁজে পেয়েছি।
যখন আমরা আমাদের পিএইচপি স্ক্রিপ্ট থেকে curl_exec () ডাকি তখন মেমরিটি ফাঁস হয়। কোনও এসএসএল সংযোগ পরিচালনার সাথে সম্পর্কিত কিছু কার্ল কোড কিছু ভুল করছে - আমি এইচটিটিপিতে স্যুইচ করলে লিকটি চলে যায়। কার্লের চেঞ্জলগ কয়েকটি এসএসএল মেমরি ফাঁসের উল্লেখ করে যা 7.১৯.৫ এ স্থির হয়েছিল (আমরা 7.১৮.২ তে ছিলাম) তাই আমি এটি পরবর্তী চেষ্টা করব।
এরই মধ্যে, আমি খুব কম ম্যাক্সরেইকোয়েস্টস পারচিল্ড নিয়ে ছুটে যাচ্ছি যা অ্যাপাচিকে যুক্তিসঙ্গত সীমানায় রাখে। ধন্যবাদ সবাইকে!