سلام دوستان،
من روی سرور مجازیم یک اسکریپت با زبان php نوشتم و ران کردم که داخلش معاملات جمع و تفریق و تقسیم و اینجور چیزا انجام میشه
حدود 1000 خط هم هست
داخل قسمت پردازش هم 1.5 گیگ رم و 35 درصد پردازنده رو مصرف میکنه
نکته : این اسکریپت داخل حلقه بی نهایت اجرا میشه
چیکار کنم مصرف رم و پردازشم کاهش پیدا کنه ؟
به احتمال قوی چون برنامه به صورت دائم در حال اجرا هست یکسری متغیر ایجاد میکنه داخل حافظه و خوب چون اسکریپت هیچ موقع تموم نمیشه در نتیجه این حافظه هم آزاد نمیشه.
یکبار اسکریپت متوقف کنید حافظه را خالی کنید. سپس اسکریپت مجددا ران کنید اگر به مرور حافظه زیاد میشه صد در صد همین مسئله ای هست که من گفتم.
اگر سرور هست از طریق ابزار هایی مثل htop میتونید دقیق ببینید چه پروسس داره بیشتری مموری را مصرف میکنه اگر پروسس مربوط به برنامتون باشه میتونید با ابزار های دیباگر بررسی کنید که دقیقا چی داره حافظه مصرف میکنه و بهینه سازی انجام بدید.
یک راه حل بهینه تر به نسبت لوپ بینهایت استفاده از event loop مثل ایونت لوپ reactphp هست.
اشما خیلی هم تمیز و بهینه بنویسید تا حدی میتونید این مقدار رو کاهش بدید . و بعد از حدی دیگه به ما برنامه نویس ها ربطی نداره و دیگه کاری از دست ما بر نمیاد .
@gomnam
سومین باره که ریفکتور میکنم تمیز مینویسم
دیگه خیلی تمیزه
اما معادلات سختی انجام نمیده که یک و نیم گیگ رم بخواد
فقط چندتا شرط اعمال شده که اگه true باشه فلان کارو انجام میده
حدود 30 تا شرط هست که اکثرا تو زمان false میشن و احتمال true شدنشون تو ساعت چیزی بین 10-20 بار در ساعته
بعد از true شدن معادلات رو هم انجام میدن
درضمن من sleep هم گذاشتم برای کدم
به احتمال قوی چون برنامه به صورت دائم در حال اجرا هست یکسری متغیر ایجاد میکنه داخل حافظه و خوب چون اسکریپت هیچ موقع تموم نمیشه در نتیجه این حافظه هم آزاد نمیشه.
یکبار اسکریپت متوقف کنید حافظه را خالی کنید. سپس اسکریپت مجددا ران کنید اگر به مرور حافظه زیاد میشه صد در صد همین مسئله ای هست که من گفتم.
اگر سرور هست از طریق ابزار هایی مثل htop میتونید دقیق ببینید چه پروسس داره بیشتری مموری را مصرف میکنه اگر پروسس مربوط به برنامتون باشه میتونید با ابزار های دیباگر بررسی کنید که دقیقا چی داره حافظه مصرف میکنه و بهینه سازی انجام بدید.
یک راه حل بهینه تر به نسبت لوپ بینهایت استفاده از event loop مثل ایونت لوپ reactphp هست.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟